2006-06-20 Jb Evain <jbevain@gmail.com>
[mono.git] / mono / mini / ChangeLog
index 45588299e14e4b0b1c5453dca9fcb3562ad7a48a..afdfae988349882a9fc3c18af3c6b3cb830b16ef 100644 (file)
@@ -1,3 +1,438 @@
+2006-06-20  Jb Evain  <jbevain@gmail.com>
+
+       * cpu-g4.md: fix max length of start_handler instruction.
+
+2006-06-20  Massimiliano Mantione  <massi@ximian.com>
+       * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
+
+2006-06-16  Massimiliano Mantione  <massi@ximian.com>
+       * ssa.c: Fixed bug 78653 for SSA based deadce.
+       * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
+       MonoInst.flags, used in SSA based deadce.
+       * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
+       * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
+
+Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
+
+       * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
+       it can end up using non executable memory on ppc64 systems
+       running ppc32 userspace (fix from Johannes Berg).
+
+2006-06-14  Dick Porter  <dick@ximian.com>
+
+       * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
+       4.1.1
+
+2006-06-13  Massimiliano Mantione  <massi@ximian.com>
+       * mini.c: Made so that inline is locally disabled if it would
+       trigger a .cctor, because too many apps depend on this behavior
+       (which seems to be also the one of the MS CLR).
+
+2006-06-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
+       No idea why this worked before.
+
+       * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
+       which branch to outer exception clauses since they could skip the
+       inner finally clauses. Fixes #78633.
+
+       * exceptions.cs: Add a test for the above.
+
+       * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
+       Fixes #78629.
+
+       * iltests.il: Add a test for the above.
+
+2006-06-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (remove_block_if_useless): Do not remove the bblock immediately
+       after the end of a try bblock, to prevent asserts in mini_method_compile ().
+
+       * iltests.il: Add a test for the above.
+
+2006-06-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
+       
+       * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
+       methods as instrinsics.
+
+2006-06-09  Wade Berrier <wberrier@novell.com>
+
+       * Makefile.am: Fix sources list for svn rename so that make dist succeeds
+       (simple-cee-ops.h ssapre-mini-ops.h)
+
+2006-06-09  Neale Ferguson <neale@sinenomine.net>
+
+       * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
+       * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
+       instruction).
+       * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
+       * cpu-s390x.md: Fix max. length values for a couple of instructions.
+
+2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
+
+       * mini-exceptions.c: Minor fix for building mono in Visual Studio.
+
+2006-06-08  Massimiliano Mantione  <massi@ximian.com>
+
+       * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
+       * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
+       * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
+       * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
+       * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
+       of opcodes, so that bug 78549 should not happen again.
+       * ssapre.c: Updated to use the renamed files.
+
+2006-06-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
+       in OP_ATOMIC_EXCHANGE_I4.
+
+2006-06-07  Wade Berrier <wberrier@novell.com>
+
+       * tramp-s390.c: Fix s390 build (add missing pointer declarations 
+       in mono_debugger_create_notification_function)
+
+2006-06-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
+       
+       * mini.c (type_from_stack_type): Disable some changes which do not
+       seem to work.
+
+       * driver.c: Reenable opts.
+
+       * mini.h (MonoStackSlot): New structure to keep track of the verification state
+       of the evaluation stack.
+       
+       * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
+       evaluation stack trace at entry to the bblock.
+
+       * mini.c (merge_stacks): New function to perform verification of stack merges.
+       Turned off by default.
+
+       * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
+       STACK_MP.
+       
+2006-06-06  Massimiliano Mantione  <massi@ximian.com>
+
+       * local-propagation.c: Fixed bug 78549.
+
+2006-06-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
+
+2006-06-02  Miguel de Icaza  <miguel@novell.com>
+
+       * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
+       tramp-arm.c, tramp-ia64.c
+       (mono_debugger_create_notification_function): Update signature to
+       new signature and use new protocol for creating the notification
+       function.  
+
+       Should fix the build.
+
+2006-06-02  Geoff Norton  <gnorton@customerdna.com>
+
+       * exceptions-ppc.c (mono_jit_walk_stack)
+       (ves_icall_get_frame_info): Fix the build
+
+2006-06-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_set_defaults): Fix the handling of -O=-all.
+
+2006-05-31  Raja R Harinath  <rharinath@novell.com>
+
+       * il2tests.2.il: New file for generics CIL tests.  Add test for
+       #78019.
+       * Makefile.am: Update.
+
+       Fix #78019
+       * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
+       to nullable types.
+
+2006-05-30  Massimiliano Mantione  <massi@ximian.com>
+
+       * aliasing.c: Fixed bug 78311.
+
+2006-05-29  Martin Baulig  <martin@ximian.com>
+
+       * mini-exceptions.c (mono_find_jit_info): When computing the
+       native offset, check whether we're actually inside the method's
+       code; call mono_debug_print_stack_frame() to format the frame.
+       (ves_icall_System_Exception_get_trace): Call
+       mono_debug_print_stack_frame() to format the stack frame.
+       (ves_icall_get_trace): Update to the new debugging API.
+       (mono_jit_walk_stack_from_ctx): Likewise.
+       (ves_icall_get_frame_info): Likewise.
+
+       * mini.c (get_method_from_ip): Use the new debugging API.
+       (mono_print_method_from_ip): Likewise.
+
+       * exceptions-ppc.c
+       (mono_jit_walk_stack): Use the new debugging API.
+       (ves_icall_get_frame_info): Likewise.   
+
+2006-05-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
+
+2006-05-25  Massimiliano Mantione  <massi@ximian.com>
+
+       * mini.c: Added "limitator" to inline for debugging.
+
+2006-05-24  Martin Baulig  <martin@ximian.com>
+
+       * debug-debugger.c (mono_debugger_init): Create a private,
+       malloc()-based code manager for the notification function and
+       intentionally leak it on exit.  This fixes the crash-on-exit race
+       condition.
+
+       * tramp-amd64.c
+       (mono_debugger_create_notification_function): Added
+       `MonoCodeManager *' argument.
+
+       * tramp-x86.c
+       (mono_debugger_create_notification_function): Added
+       `MonoCodeManager *' argument.
+
+2006-05-23  Massimiliano Mantione  <massi@ximian.com>
+
+       * aliasing.c: Fixed 64 bit issue.
+       * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
+       default since all known bugs are fixed (one more time!).
+
+Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: write barrier support.
+
+2006-05-23  Martin Baulig  <martin@ximian.com>
+
+       * debug-debugger.c: Revert Paolo's change.  Add comment and #error
+       check at the top of the file.
+
+Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
+
+       * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
+       reverting changes without reason and without changelog entries.
+
+2006-05-18  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
+       to a few opcodes. Fixes #78439.
+
+       * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
+       consistency with other archs.
+
+       * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
+
+Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
+
+       * debug-debugger.c: fix the build.
+
+2006-05-17  Martin Baulig  <martin@ximian.com>
+
+       * debug-debugger.c
+       (debugger_thread_vtable): Moved here from ../metadata/threads.c.
+       (debugger_init_threads): Formerly known as mono_debugger_init_threads().
+       (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
+       (debugger_attach): Call GC_mono_debugger_add_all_threads().
+
+2006-05-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
+
+2006-05-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
+       MONO_TYPE_GENERICINST.
+       
+       * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
+       MONO_TYPE_GENERICINST.
+
+2006-05-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
+       #78325.
+
+2006-05-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
+       mempool.
+       (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
+
+2006-05-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
+       mono_trace_cleanup ().
+
+       * iltests.il: Fix problem with the newly added test.
+
+       * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
+       due to register constraints, free up the previous hreg. Fixes #78314.
+
+       * iltests.il: Add new test for #78314.  
+
+       * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
+       Interlocked.Add. Fixes #78312.
+
+       * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
+       
+2006-05-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel.brg (mini_emit_virtual_call): Fix a warning.
+
+2006-05-05  Martin Baulig  <martin@ximian.com>
+
+       * debug-mini.c (mono_debug_open_block): New method.
+
+       * mini-amd64.c
+       (mono_arch_output_basic_block): Call mono_debug_open_block() at
+       the beginning of each basic block.
+
+       * mini-x86.c
+       (mono_arch_output_basic_block): Call mono_debug_open_block() at
+       the beginning of each basic block.
+
+2006-05-04  Massimiliano Mantione  <massi@ximian.com>
+
+       * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
+       default until I understand why they break the build on amd64.
+
+2006-05-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_cleanup): Call mono_cleanup ().
+
+       * mini.c (UNVERIFIED): New macro to make it easier to track down verification
+       errors.
+
+2006-05-04  Massimiliano Mantione  <massi@ximian.com>
+
+       * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
+       * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
+       default since all known bugs are fixed, and I cannot reproduce bug
+       77944... I'm asking Matt Hargett to test again after this commit.
+
+2006-04-28  Massimiliano Mantione  <massi@ximian.com>
+
+       * mini-codegen.c: Fixed typo that thrashed inline.
+
+2006-04-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * dominators.c (compute_dominators): Avoid using a worklist since
+       it is not correct in some cases. Instead, iterate over all bblocks as
+       in the original paper. Fixes --compile-all -O=all System.Xml.dll.
+
+2006-04-28  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c (mono_jit_compile_method_inner): Use
+       mono_prepare_exception_from_error that resets the value
+       internally.
+
+2006-04-27  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c: Move the mini_loader_error_to_exception to metadata. 
+       
+2006-04-27  Massimiliano Mantione  <massi@ximian.com>
+
+       * aliasing.c: Fixed bug 78210.
+
+2006-04-27  Massimiliano Mantione  <massi@ximian.com>
+
+       * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
+       default until all their problems (or the ones they trigger) are fixed.
+
+2006-04-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
+       
+       * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
+       as loaded only after resolving patches since that could invoke the same method.
+
+       * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
+
+       * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
+       functions.
+
+       * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
+       AOT loader.
+
+       * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
+       stack.
+
+       * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
+       made from AOT code through the PLT table.
+
+       * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
+       holding the plt offset when a call is made to the aot plt trampoline.
+       
+2006-04-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
+       amd64 AOT support.
+
+       * Makefile.am (common_sources): Fix build breakage.
+
+       * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
+       calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
+       intra-assembly calls if possible.
+       
+       * tramp-*.c: Add new functions for patching/nullifying PLT entries.
+
+       * mini-trampolines.c: Handle PLT entries.
+
+       * mini.c: Avoid creating a GOT var for calls.
+
+       * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
+       from mscorlib code.
+
+       * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
+       from mscorlib code.
+
+       * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
+       AOT code.       
+
+       * mini.h: Bump AOT file format version.
+       
+       * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
+       covers more cases.
+
+2006-04-25  Martin Baulig  <martin@ximian.com>
+
+       * driver.c: Disable copyprop, consprop and inline when running
+       inside the debugger.
+
+2006-04-25  Martin Baulig  <martin@ximian.com>
+
+       * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
+       with `get_current_thread' and added `detach'.
+       (MonoDebuggerMetadataInfo): Added `thread_size',
+       `thread_tid_offset', `thread_stack_ptr_offset' and
+       `thread_end_stack_offset'.
+
+2006-04-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
+       aot-runtime.c.
+
+       * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
+       ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
+
+       * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
+
+       * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
+
+       * aot.c: Add support for ADJUSTED_IID.  
+
+2006-04-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot.c (emit_method_order): Don't align method_order_end.
+
+       * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
+       the interface ID changes.
+
 2006-04-21  Dick Porter  <dick@ximian.com>
 
        * mini.c (mini_thread_cleanup): Clear the JIT TLS data when