2005-12-12 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
index 3f5e76fbf169ea4a3e6087ada31b3d2f87d7d900..3dee2e39d0a81cd6d9fca107f060500b2d18da9c 100644 (file)
+2005-12-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * generics.2.cs: Add valuetype tests.
+
+2005-12-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * basic-long.cs: Add i4->u8 test.
+
+       * objects.cs: Add tests for JIT intrinsic.
+
+       * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
+       optimizations lost by a mistake.
+
+2005-12-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * basic-long.cs: Remove a test moved to objects.cs.
+
+       * arrays.cs: Add more array tests.
+
+2005-12-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * arrays.cs: Add new tests for multi-dimensional arrays.
+
+2005-12-06  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile.am (test_sources2): Add generics.2.cs.
+       (EXTRA_DIST): Add test_sources2.
+
+2005-12-05  Ben Maurer  <bmaurer@ximian.com>
+
+       Support for boxing and unboxing nullable types as well as the
+       isinst operation on nullables, per the CLI ammendment.
+
+       * inssel.brg (CEE_ISINST): Special case for nullable
+
+       * mini.c (handle_unbox_nullable): new method
+       (handle_box): Special case for nullable types
+       (mono_method_to_ir): Call handle_unbox_nullable in correct
+       places.
+
+       * generics.2.cs: New test suite
+
+       * Makefile.am: Support for regression tests with generics.
+
+2005-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
+       allocated to registers. Fixes #76800.
+
+Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
+
+2005-11-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
+       of platforms.
+
+2005-11-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * objects.cs basic-calls.cs: Move a test depending on valuetypes to
+       objects.cs.
+
+       * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
+       
+       * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
+Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
+       single precision before storing to a single precision location.
+
+2005-11-28  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile.am (ILASM): Use profile-dependent location of ilasm.
+
+2005-11-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
+       correct files.
+
+       * basic.cs: Remove test_0_byte_compares test which was moved to
+       objects.cs a long time ago.
+
+2005-11-22  Massimiliano Mantione  <massi@ximian.com>
+
+        * aliasing.c: Fixed aliasing issue on 64 bit archs.
+
+2005-11-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
+       handlers are called.
+
+       * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
+       throwing code.
+
+        * mini-ia64.c: Add support for the throw->branch exception 
+       optimization.   
+
+       * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
+
+2005-11-18  Massimiliano Mantione  <massi@ximian.com>
+
+       * mini.c: Enabled "fastpath" deadce :-)
+       
+2005-11-18  Massimiliano Mantione  <massi@ximian.com>
+
+       * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
+       alias analysis pass to support it.
+       * mini.h: Likewise.
+       * ssa.c: Likewise.
+       * liveness.c: Likewise (liveness computation can use aliasing
+       information to be more accurate).
+       * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
+       moreover made so that "--compile-all" uses the given optimization
+       flags and not the default ones.
+       * aliasing.c: Alias analysis (new file).
+       * aliasing.h: Likewise.
+       * Makefile.am: added "aliasing.c" and "aliasing.h".
+       
+2005-11-17  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
+       OP_L opcodes.
+
+2005-11-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_handle_exception_internal): Remove the 
+       fp >= end_of_stack exit condition, as it is not needed, and it might
+       become true for fp eliminated frames.
+
+2005-11-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
+       coded offsets.
+
+Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-arm.c: fixed alignment of doubles/longs to match
+       the C ABI (bug #76635).
+
+Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
+
+       * aot.c: fix compilation with --enable-minimal=aot.
+
+Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-arm.c: fixed compatibility with the new
+       floating point emulator package for compares.
+
+2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
+
+       * mini.c : reverted sig->pinvoke changes (r51396-51397).
+
+2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-exceptions.c (print_stack_frame): Output to stderr.
+       (mono_handle_native_sigsegv): Ditto.
+
+2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Remove unused
+       OP_LCONV_TO_OVF_I implementation.
+
+       * mini-amd64.c: Add support for the throw->branch exception 
+       optimization.
+
+       * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
+       when the catch clause catches a more general exception, i.e. Object.
+
+2005-10-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-ia64.md: Remove unused opcodes.
+
+       * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
+       specific defines for architectures defining USE_SIGACTION.
+
+       * mini-ia64.c: Fix some warnings.
+
+       * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
+       version seemed to skip a frame.
+
+2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini.c: Clean up the usage of sig->pinvoke flag. Now
+       only calls which are made to native code use this flag.
+
+2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
+       varargs methods as well.
+       
+       * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
+       which have save_lmf set. Reorganize methods prologs a bit.
+
+       * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
+       debugger to the proper place.
+
+2005-10-29  Martin Baulig  <martin@ximian.com>
+
+       * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
+       when running inside the debugger until the debugger has support
+       for it.
+
+2005-10-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h: Fix a warning.
+
+2005-10-24  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
+       we expose publicly, this returns the string.
+
+2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
+
+       * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
+       with fp elimination.
+
+2005-10-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
+       native stacktrace using the glibc 'backtrace' function if available.
+
+2005-10-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
+
+       * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
+       handle SIGSEGVs received while in native code.
+
+       * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
+       code, call mono_handle_native_sigsegv which will abort the runtime
+       after printing some diagnostics, instead of converting it into a
+       confusing NullReferenceException.
+
+2005-10-18  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-pentium.md: Remove unused opcodes.
+
+2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.h (MonoLMF): Add rsp field.
+
+       * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
+       the lmf too.
+
+2005-10-17  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-codegen.c (get_register_spilling): Fix some warnings.
+
+2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
+       elimination during exception handling. Enable fp elimination by
+       default.
+
+       * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
+       elimination.
+
+2005-10-16  Martin Baulig  <martin@ximian.com>
+
+       * mini-exceptions.c
+       (mono_debugger_run_finally): New public method for the debugger.
+
+2005-10-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * debug-mini.c (mono_debug_init_method): Fix warning.
+
+       * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
+       the 'exname' parameter const to fix some warnings.
+
+2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
+       introduced by the previous patch.
+
+2005-10-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * basic-float.cs: Add test for precision of float arithmetic.
+
+       * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
+       when loading/storing single values from/to memory.
+
+       * mini.c (mono_jit_compile_method_with_opt): Create the function
+       pointers in the correct domain.
+
+2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
+       introduced by previous patch.
+       
+       * mini-exceptions.c (mono_handle_exception_internal): Handle the case
+       when out_filter_idx is NULL.
+
+       * mini-exceptions.c: Don't run filter clauses twice during exception
+       handling. Fixes #75755.
+
+2005-10-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot.c: Add support for ldflda wrappers.
+
+       * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
+       #75902.
+
+Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c, mini.h: do not consider exception handlers blocks when
+       setting up interface variables.
+
 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
 
        * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
 
-Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
-       * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
-       for the mono binary.
-       
+2005-10-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
+       causes a regression.
+
+       * mini.c (mini_thread_cleanup): Fix reading of freed memory.
+
+2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
+       of the OP_P definitions.
+
+       * TODO: Add a proposal for dealing with the CEE/OP mess.
+
+       * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
+       optimizations from the x86 port.
+
+       * cpu-amd64.md: Ditto.
+
+       * basic.cs basic-long.cs: Add tests.
+
+Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
+       Patrik Torstensson's implementation of my exception-handling
+       optimization idea, when the exception object is not used
+       (bug #62150).
+
+Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
+       of the mul_imm optimizations from the old jit.
+
+Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c, liveness.c: patch by Patrik Torstensson and
+       Zoltan Varga to improve performance in methods with
+       exception clauses.
+
+2005-09-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c: Remove 'Globalization' entry from --version.
+
+2005-09-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
+       there is a profiler interested in JIT events.
+
+       * aot.c: Load profile files produced by the AOT profiling module, and
+       reorder methods based on the profiling info. Add a 'method_order' table
+       to the AOT file to make mono_aot_find_jit_info work with the reordered
+       methods.
+
+       * mini.h: Bump AOT file version info.
+
 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
 
        * mini-arm.h: work around what looks like a gcc bug when optimizations
        are enabled.
 
+2005-09-28  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile.am (AM_CFLAGS): Don't use += to append inside
+       conditionals.  Use ...
+       (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
+
 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
+
        * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
        to determine the amount of memory to copy when passing valuetypes.
 
        * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
        4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
 
+2005-09-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
+       information about aot.
+
+2005-09-27  Ben Maurer  <bmaurer@ximian.com>
+
+       * *.c: Replace the use of {Enter,Leave}CriticalSection with
+        macros. This will allow a deadlock debugger to easily be plugged
+        in.
+
+Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
+
+       * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
+
+2005-09-27  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
+       (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
+       (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
+       ($(arch_built)) [CROSS_COMPILING]: Error out.
+
+2005-09-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot.c: Add support for the no_special_static flag for classes.
+
+2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
+
+       * Reapply reverted patches.
+
+       * *: Revert r50174 as well.
+
+       * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
+
+2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
+
+2005-09-23  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
+       part of the SIG_HANDLER_SIGNATURE.  
+
+2005-09-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
+       statistics.
+
+       * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
+       introduced by previous patch.
+
+2005-09-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
+       saved registers too.
+
+       * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
+       upon the information returned by get_call_info ().
+       
+       * mini-x86.c (add_float): Fix stack size calculation.
+       (mono_arch_call_opcode): Rewrite this so it works based up the
+       information returned by get_call_info ().
+       (mono_arch_get_this_vret_args): Ditto.
+
+2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
+       in cinfo to determine the registers which need to be used.
+
+2005-09-20  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.c (mono_main): Add --server and --desktop flags. 
+
+2005-09-16  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.h: Make register masks 64 bit. Don't treat argument
+       registers as global registers.
+
+       * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
+       longer needed with the new register allocator.
+
+       * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
+
+       * cpu-ia64.md: Remove unused opcodes.
+       
+       * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
+       
+2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
+
+       * cpu-amd64.md: Remove unused opcodes.
+
+       * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
+       needed with the new register allocator.
+
+       * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
+       reg-reg moves.
+
+2005-09-16  Raja R Harinath  <rharinath@novell.com>
+
+       * Makefile.am (check-local): Don't invoke semdel-wrapper.
+
+2005-09-16  Martin Baulig  <martin@ximian.com>
+
+       * exceptions-amd64.c
+       (throw_exception): Don't call mono_debugger_throw_exception() if
+       we're a rethrow - see the FIXME in the code.
+
+2005-09-15  Geoff Norton  <gnorton@customerdna.com>
+
+       * mini.c (mono_init_exceptions): This only works on some architectures.
+       
+2005-09-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
+       on ia64.
+
+       * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
+
+       * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
+       now in mini-exceptions.c.
+
+2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini-amd64.h mini-am64.c: Remove the altstack support code which is
+       now in mini-exceptions.c.
+
+2005-09-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-x86.c: Applied patch from Patrik Torstensson 
+       <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
+
+       * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
+       code into mini-exceptions.c. Add some assertions to it.
+
+2005-09-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot.c (emit_section_change): Applied patch from "The Software Team" 
+       (<software@solmersa.com>). Fix as errors on windows.
+
+2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
+
+       * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
+       method info into the LMF.
+
+2005-09-11  Zoltan Varga  <vargaz@gmail.com>
+       
+       * mini-ia64.c: Add proper unwind info for method epilogs.
+
+       * exceptions-ia64.c: Add some code to help debugging.
+       
+       * mini-ia64.c mini-ia64.h: Add sigaltstack support.
+
+       * mini-exceptions.c: Fix warning.
+
+2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
+
+       * mini.c: Really fix build.
+
+       * mini-x86.c mini-amd64.c: Fix build.
+
+2005-09-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
+
+       * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
+       some Interlocked methods as intrinsics.
+
+       * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
+       for Thread methods as well.
+
+       * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
+
+       * inssel.brg: Add rule for OP_MEMORY_BARRIER.
+
+       * mini-ia64.c mini-x86.c mini-amd64.c 
+       cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
+       OP_MEMORY_BARRIER.
+       
+       * mini.c (mono_init_exceptions): Fix build breakage.
+
+2005-09-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
+       of instructions. Use the new ia64_unw_op macros for emitting unwind
+       info.
+
+       * mini.c (mono_init_exceptions): Initialize exception handling
+       related trampolines at startup.
+
 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
 
        * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
 
+2005-09-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c: Handle type loading errors gracefully during compilation and
+       throw the appropriate exception.
+
+Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
+       for the mono binary.
+
+2005-09-09  Martin Baulig  <martin@ximian.com>
+
+       * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
+       the release.
+
 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
 
        * mini-arm.h: use emulation for conv.r.un for the release.