2007-07-19 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / mini / ChangeLog
index 801897ad919891e97109db271f36f69b7872cb2e..02ad318f3f7ecd2dcf0b1748e7615e6be61a5384 100644 (file)
@@ -1,3 +1,519 @@
+2007-07-19  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
+       with the MONO_EXCEPTION_ defines.
+
+2007-07-17  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
+       #82117.
+       
+       * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
+       the cause of an assertion.
+
+Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
+       removed.
+
+2007-07-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
+       assert. Should fix #82103.
+
+2007-07-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
+       here too. Fixes #82095.
+
+       * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
+       addresses.
+
+       * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
+
+       * mini-amd64.h: Enable IMT for amd64.
+       
+       * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
+
+2007-07-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
+
+2007-07-12  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
+       as soon as check_linkdemand sets an exception_type.
+
+Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-x86.c: fixed offsets for IMT call sequence.
+       * mini-x86.h: enable IMT again.
+
+2007-07-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * trace.c (mono_trace_enter_method): Decode MonoType too.
+
+       * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
+
+       * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
+
+       * mini-amd64.c: Add preliminary IMT implementation.
+       
+Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
+       understand the new IMT-base interface invocation (thanks to
+       Daniel Nauck for the report and the remote debugging session).
+
+Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-x86.c: size and speed optimizations for the IMT bsearch.
+
+2007-07-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * Makefile.am (aotcheck): Make this actually use the AOTed code.
+
+Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-trampolines.c: implement AOT IMT support.
+       * mini-x86.h: enable IMT support for wider testing.
+
+2007-07-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel.brg (emit_imt_argument): Add aot support here.
+
+       * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
+
+Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
+       of the IMT implementation, partially from massi, with my
+       implementation of the bsearch sequence. Disabled by default until
+       the AOT code is implemented.
+
+2007-07-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
+
+       * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
+
+Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * inssel.brg, mini.c, mini.h, mini-trampolines.c:
+       arch-independent IMT JIT code from Massimiliano
+       Mantione (massi@ximian.com) with small cleanups from me.
+
+Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * Makefile.am: fix svn invocation to get the svn revision to be
+       independent of the local language (build fix).
+
+2007-07-09  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c (inline_method): Reset cfg->exception_type if the
+       inlining is aborted.  Fixes: 82049.
+
+Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: remove assert from exception handling code when exception_ptr
+       is not set.
+
+2007-07-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_codegen): Add an assert.
+
+       * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
+       enter and leave code.
+       * mini-amd64.c (mono_arch_emit_prolog): Likewise.
+
+Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-ppc.c: fixed memory corruption for localloc(0)
+       (bug #81852).
+
+2007-07-05  Zoltan Varga  <vargaz@gmail.com>
+       
+       * mini.c: Fix warnings.
+
+Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
+       to emit better double->int conversions.
+
+Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: the provided Min/Max optimizations are valid for unisgned
+       ints.
+
+2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini.c (can_access_method, can_access_field): methods moved to metadata/class.c and renamed to mono_method_can_access_method and mono_method_can_acesss_field
+
+2007-06-28  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c (mono_running_on_valgrind): Add support for reporting the
+       method and  its boundaries to valgrind.
+
+2007-06-28  Martin Baulig  <martin@ximian.com>
+
+       * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
+
+2007-06-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
+
+       * generic.2.cs: Add new test case.
+
+2007-06-25  Martin Baulig  <martin@ximian.com>
+
+       Merged the `debugger-dublin' branch.
+
+       * debug-mini.c
+       (mono_debugger_insert_method_breakpoint): New public method.
+       (mono_debugger_remove_method_breakpoint): Likewise.
+       (mono_debugger_check_breakpoints): New static method.
+       (mono_debug_close_method): Call mono_debugger_check_breakpoints().
+
+       * debug-debugger.h (MonoDebuggerInfo):
+       Renamed (to keep backward compatibility in the vtable):
+       `insert_breakpoint' -> `old_insert_breakpoint'.
+       `remove_breakpoint' -> `old_remove_breakpoint'.
+       `create_string' -> `old_create_string'.
+       `lookup_class' -> `old_lookup_class'.
+       `lookup_type' -> removed; changed into a dummy field.
+       `lookup_assembly' -> `old_lookup_assembly'.
+       Added (same functionality, but different signature):
+       `create_string', `lookup_class', `lookup_assembly'
+       Added new:
+       `get_method_addr_or_bpt', `remove_method_breakpoint',
+       `runtime_class_init'.
+
+       * debug-debugger.c: Merged the `debugger-dublin' branch.
+
+2007-06-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
+       well.
+       (peephole_pass): Likewise.
+
+Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * driver.c: hopefully make setaffinity work also for ancient
+       versions of linux.
+
+2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.c : win32 build fix.
+
+Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * driver.c: check for the MONO_NO_SMP env var and bind to a single
+       processor if it is set.
+
+2007-06-21  Martin Baulig  <martin@ximian.com>
+
+       * debug-mini.h: New file.
+
+       * debug-mini.c
+       (mono_debugger_insert_breakpoint_full): Moved here from
+       ../metadata/mono-debug-debugger.c.
+       (mono_debugger_remove_breakpoint): Likewise.
+       (mono_debugger_breakpoint_callback): Likewise.
+
+2007-06-15  Raja R Harinath  <rharinath@novell.com>
+
+       * jit-icalls.c (mono_helper_compile_generic_method): Update to
+       changes in MonoGenericClass.
+
+2007-06-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
+
+2007-06-14  Raja R Harinath  <rharinath@novell.com>
+
+       * jit-icalls.c (mono_helper_compile_generic_method): Update to
+       removal of MonoGenericMethod.
+
+Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-exceptions.c: hooks for the exception events profiling API.
+
+2007-06-14  Randolph Chung  <tausq@debian.org>
+
+       * Makefile.ma: Add hppa target.
+       * mini-arch.h: Include mini-hppa.h
+       * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
+       mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
+       Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
+
+2007-06-14  Randolph Chung  <tausq@debian.org>
+
+       * inssel.brg: Add rules for "chained" compare-branch operations so that
+       a single compare op can affect multiple branches.  Adjust cost for
+       OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
+       * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
+       cost for some rules so that they can more easily be overridden by
+       per-arch rules (with fixes from lupus).
+       Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
+
+2007-06-13  Randolph Chung  <tausq@debian.org>
+
+       * mini-ops.h: Reorder branch ops so that they match the order of the
+       corresponding CEE_* ops.  The code expects them this way.
+       Add new ops for HPPA target.
+       Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
+
+2007-06-13  Randolph Chung  <tausq@debian.org>
+
+       * mini-exceptions.c: Handle cases where the stack grows towards
+       larger addresses.
+       Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
+
+Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
+       counter.
+       * driver.c: explain where a non-matching corlib is found.
+
+2007-06-13  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c (print_jit_stats): Output dynamic code allocation stats.
+
+2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
+
+       * mini-exceptions.c: Generate a method profile leave event during
+       an exception to ensure that the profiler gets notified.
+
+2007-06-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
+       branch.
+
+       * cpu-amd64.md: Add long_and/or/xor opcodes.
+
+2007-06-06  Wade Berrier  <wberrier@novell.com>
+
+       * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
+       (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
+       length of instruction shr_imm (expected 8, got 10)
+
+2007-06-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
+
+2007-06-06  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
+       MonoInternalHashTable again (fixed bug in the internal hash table
+       code).
+
+2007-06-06  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
+       Have to figure out what makes it crash the SWF regression.
+
+2007-06-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
+
+Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: optimize out the type check when storing null in a
+       reference array.
+
+2007-06-04  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
+       MonoInternalHashTable.
+
+Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
+       signed integer methods.
+
+2007-06-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
+       permanently since the current approach doesn't work.
+
+2007-06-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel.brg (stmt): Only call delegate->invoke_impl if 
+       MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
+
+2007-06-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
+       the sreg2==rdx case.
+       
+       * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
+       account if it contains a rex prefix.
+       (peephole_pass): Handle OP_FMOVE as well.
+
+2007-06-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
+       as it causes regressions.
+
+2007-05-31  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
+       static case as well.
+
+       * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
+
+       * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
+       (mono_arch_get_this_arg_from_call): Ditto.
+
+       * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
+
+       * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
+       invoke_impl field.
+
+       * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
+       (mono_arch_get_this_arg_from_call): Ditto.
+
+       * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
+       
+       * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
+       try to create optimized invoke code and use that for further invocations. 
+       Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
+
+       * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
+
+2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
+
+       * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
+       sealed classes or methods.
+       *devirtualization.cs: tests for the new optimization
+
+2007-05-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
+       by the update_volatile () function.
+
+2007-05-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (mono_main): Call g_thread_init () early since newer glib versions
+       require it.
+
+       * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
+
+2007-05-24  Jonathan Chambers  <joncham@gmail.com>
+
+       * mini.c: Add configure checks for header files.
+       * mini-x86.c: Add configure checks for header files.
+       * trace.c: Add configure checks for header files.
+       * aot-runtime.c: Add configure checks for header files.
+       * aot-compiler.c: Add configure checks for header files.
+       * driver.c: Add configure checks for header files.
+       * mini-codegen.c: Add configure checks for header files.
+       
+       Code is contributed under MIT/X11 license.
+
+2007-05-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
+       icompare_imm -128 + op_iclt. Fixes #81703.
+
+2007-05-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
+
+2007-05-15  Massimiliano Mantione  <massi@ximian.com>
+
+       * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
+       inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
+       so that all isinst checks now use "interface_bitmap".
+
+2007-05-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-amd64.md (jmp): Fix a warning.
+
+       * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
+
+       * basic.cs: Add new regression test.
+
+       * basic.cs: Remove test which is now in basic-long.cs.
+
+       * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
+
+       * basic-long.cs: Add new test.
+       
+2007-05-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
+
+2007-05-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
+
+       * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
+       places.
+       
+       * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
+       throwing code a bit.
+
+       * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
+       the exception throwing code a bit.
+
+       * mini-x86.c (get_call_info): Allocate result from a mempool.
+
+2007-05-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (find_typespec_for_class): Fix the assert.
+
+       * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
+
+       * mini.h (MonoCompile): Add 'token_info_hash' field.
+
+       * mini.c: Save token->method associations during compilation so the AOT 
+       compiler can use it.
+       
+       * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
+       which reference generic classes and methods.
+
+2007-05-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
+
+       * aot-compiler.c (compile_method): Fix a typo in a comment.
+
+       * aot-runtime.c (decode_cached_class_info): Skip generic types.
+
+       * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
+       everything generic.
+
+       * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
+
+2007-05-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h (MonoCompile): Add 'args' field.
+
+       * mini.c (mono_compile_create_vars): Store variables representing the arguments
+       into cfg->args.
+
+       * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
+
+2007-05-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_compile_get_interface_var): Remove this unused function.
+
+       * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
+
+       * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
+       opcodes for some opcodes.
+
+       * mini.h *.brg *.c: Use the new opcodes.
+
+2007-05-08  Massimiliano Mantione  <massi@ximian.com>
+
+       * mini.h: Bumped aot revision.
+
+       * inssel.brg: modified code generation of type checks for interfaces
+       to use the new "MonoClass.interface_bitmap" instead of the old
+       "MonoClass.interface_offsets".
+
 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
 
        * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.