merge 99332:99422
[mono.git] / mono / mini / ChangeLog
index 4a0b3795214025d5253ddf6da87a42766f4356a8..9c855ac75c68ccadd5f373005f8e7f9c52986a70 100644 (file)
@@ -1,3 +1,263 @@
+2008-03-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
+
+       * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
+       code.
+
+2008-03-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
+       to get_call_info.
+       (get_call_info): Take a gsctx argument instead of 'cfg'.
+
+2008-03-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
+       mono_verify_all is set.
+
+       * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
+
+       * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
+
+2008-03-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
+       an exception.
+
+       * driver.c mini.c mini.h: Add a --verify-all development option to test the
+       verifier and the code generated by the compiler.
+
+2008-03-25  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Generic sharing of the non-nullable case of the box
+       instruction.
+
+2008-03-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel.brg: Fix the build.
+
+       * iltests.il.in: Add a test for lconv.ovf.u8.un.
+
+2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini.c (mono_method_to_ir): Implement readonly for ldelema and
+       Array:Address. Fixes #372410.
+
+       * iltests.il.in: New tests for readonly prefix.
+
+2008-03-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
+       mini-trampolines.c.
+
+       * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
+       mini-exceptions.c.
+
+       * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
+       
+       * mini.c (mono_decompose_op_imm): New helper function.
+
+       * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
+       with the other architectures, add an 'mp' argument, fold 'sz' argument into the
+       return value.
+
+       * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
+       mono_arch_output_basic_block. Fix warnings.
+
+       * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
+       for now.
+
+2008-03-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
+       since the extra frame is now detected automatically inside the loop.
+
+       * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
+       opts which are now in mono_peephole_ins ().
+       
+       * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
+
+       * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
+       frames and skip duplicate managed-to-native frames. Fixes #367665.
+
+       * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
+       opts which are now in mono_peephole_ins ().
+       (mono_arch_peephole_pass_2): Ditto.
+
+       * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
+
+       * mini-codegen.c (mono_peephole_ins): New helper function containing the
+       arch independent peephole optimizations.
+
+       * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
+       opts which are now in mono_peephole_ins ().
+
+       * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
+       
+       * mini-s390.c (mono_arch_output_basic_block): Fix build.
+
+       * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
+       pattern.
+
+       * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
+       CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
+       opcode. 
+
+2008-03-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
+       with the other architectures, add an 'mp' argument, fold 'sz' argument into the
+       return value.
+
+       * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
+       mono_arch_output_basic_block. Fix warnings.
+
+2008-03-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
+       conv.ovf.u.un.
+
+2008-03-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
+       conv.ovf.u.un.
+
+       * iltests.il: Add new tests.
+
+2008-03-20  Kornél Pál  <kornelpal@gmail.com>
+
+       * mini.c: Removed Windows version macros.
+
+2008-03-20  Mark Probst  <mark.probst@gmail.com>
+
+       * generic-sharing.c: Put reflection types in the extensible part
+       of the runtime generic context.
+
+       * mini.c: Generic sharing of the GetTypeHandle special case of the
+       ldtoken instruction.
+
+2008-03-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
+
+       * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
+       
+       * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
+       consistency with the other version on the linear IR branch.
+
+       * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
+
+       * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
+
+       * iltests.il.in: Add new tests.
+
+2008-03-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
+
+       * iltests.il.in: Add new tests.
+
+2008-03-19  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Two variables with the same name were declared in
+       nesting contexts and one wasn't initialized.  Fixed.
+
+2008-03-19  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Generic sharing of the initobj instruction.
+
+Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: make the test to optimize ldtoken from typeof() more
+       precise.
+
+2008-03-18  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Generic sharing of the initobj instruction for reference
+       types.
+
+Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
+
+       * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
+       the mono_breakpoint_clean_code() code to perform bound checks.
+
+Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
+
+       * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
+       mono_arch_patch_callsite() to include the start of the managed method
+       to be able to perform bound checks.
+
+2008-03-17  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Generic sharing for the isinst instruction.
+
+2008-03-17  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
+       inssel-long32-mips.brg: Added opcodes for doing indirect calls
+       with the runtime generic context argument.
+
+       * mini.c: Share calls to several types of unsharable methods by
+       putting the address of the method code in the runtime generic
+       context and doing an indirect call.
+
+       * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
+       to switches.
+
+2008-03-16  Mark Probst  <mark.probst@gmail.com>
+
+       * generic-sharing.c: Change due to a change in the runtime genric
+       context API.
+
+2008-03-15  Martin Baulig  <martin@ximian.com>
+
+       * tramp-x86.c
+       (mono_arch_nullify_class_init_trampoline): Add call to
+       mono_breakpoint_clean_code() to make things work when running
+       inside the debugger.
+
+       * tramp-amd64.c
+       (mono_arch_nullify_class_init_trampoline): Add call to
+       mono_breakpoint_clean_code() to make things work when running
+       inside the debugger.
+
+2008-03-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel-long.brg (reg): Fix 64 bit build.
+
+2008-03-14  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c, mini.h: Share static generic code by passing it an
+       implicit argument pointing to the runtime generic context.
+
+       * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
+       inssel-long32-mips.brg: New opcodes for calling shared static,
+       which need to be passed the runtime generic context.
+
+       * mini-amd64.c, mini-x86.c: Save the runtime generic context
+       argument on the stack in the prologue if needed.  New function for
+       finding the runtime generic context argument from the registers
+       saved by the trampoline.
+
+       * mini-amd64.h, mini-x86.h: Specify which register to use for the
+       runtime generic context argument.
+
+       * tramp-amd64.c: Also restore the register used for the runtime
+       generic context argument.
+
+       * mini-trampoline.c: Resolve shared static calls by consulting the
+       runtime generic context via the new argument.
+
+       * generic-sharing.c: Add an argument to sharability-checking
+       functions that specifies whether type variables should be treated
+       as sharable type arguments.
+
+       * inssel-x86.brg: Removed a superfluous, buggy rule.
+
+       * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
+       to switches.
+
 2008-03-14  Martin Baulig  <martin@ximian.com>
 
        * debug-debugger.c (main_thread_handler): Call