2009-01-20 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
index f2ea7509e7c35054a84974063dab693197d47ded..3f09f9d898f75f67fdb4c37e89d8436445a1b669 100644 (file)
@@ -1,5 +1,505 @@
+2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-exceptions.c (mono_print_thread_dump): Add information
+       about the thread state using wapi_current_thread_desc.
+
+2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Tests for the new constructors. 
+
+2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-ops.h: Added OP_EXPAND_*
+
+       * cpu-x86.md: Same.
+
+       * mini-x86.c (mono_arch_output_basic_block): Same.
+       
+       * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
+
+2009-01-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * iltests.il.in: Add a test for #467385.
+
+2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
+       thread been cleaned up is not the same currently in execution.
+
+       Fixes appdomain-unload crashes on windows, osx and linux variants
+       without the __thread keyword.
+
+2009-01-18  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
+       (koush@koushikdutta.com). Implement this for android.
+
+       * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
+       begins with a digit.
+
+       * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
+       mono_marshal_get_write_barrier ().
+
+2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
+       of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
+       that pass them on a register pair.
+
+       This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
+       test was crashing due to that.
+
+Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
+
+       * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
+       trampoline code. Include ucontext.h only if available.
+
+2009-01-15  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: mono_domain_lookup_shared_generic() takes an open method
+       and doesn't check whether it's sharable, like it was before
+       removing the shared generics hash.  This brings IronPython
+       performance back to what it was before that change.
+
+2009-01-14  Mark Probst  <mark.probst@gmail.com>
+
+       * method-to-ir.c: Handle delegate invocation optimization earlier,
+       otherwise it would be handled (much more slowly) by the
+       final/sealed optimization.
+
+2009-01-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
+       domain is not set. Fixes #465864.
+
+2009-01-12  Mark Probst  <mark.probst@gmail.com>
+
+       * method-to-ir.c: Don't stop sharing of generic methods with catch
+       clauses - we already handle those.
+
+2009-01-12  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c, mini.h: lookup_generic_method() is now
+       mono_domain_lookup_shared_generic() and uses the jit_code_hash,
+       making the shared_generics_hash obsolete.
+
+2009-01-12  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
+       use the red zone.  Make room on the stack first and then use it,
+       not the other way around.
+
+2009-01-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_init): Call mono_xdebug_init ().
+
+       * aot-compiler.c (mono_xdebug_init): Make this non-static.
+
+2009-01-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * TestDriver.cs: Add an --iter argument to run tests multiple times.
+
+       * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
+       trampolines.
+
+       * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
+       debug+unwind info for trampolines.
+
+       * mini.c (mono_create_unwind_op): New helper function.
+
+       * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
+
+2009-01-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c: Fix the build.
+
+2009-01-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * Makefile.am: Update dtrace-prelink.sh location.
+
+2009-01-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
+       optimization. Fixes #464520.
+
+2009-01-07  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini-amd64.c : Adding code to save/restore non-volatile registers
+          on Winx64.
+
+       * exceptions-amd64.c : Adding code to save/restore non-volatile 
+         registers on Winx64.
+
+       Contributed under MIT/X11 license.
+
+2009-01-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
+       __GNUC_MINOR__ which can break when the major version changes.
+
+2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Add tests for usage of the sizeof opcode.
+
+2009-01-07  Geoff Norton  <gnorton@novell.com>
+
+       * helpers.c:  Allow mono -v -v -v to work on darwin.
+
+2009-01-05  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
+         pattern. 
+
+       Contributed under MIT/X11 license.
+
+2009-01-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
+       instead of directly accessing type->data.klass. Fixes #462016.
+       (mono_allocate_stack_slots_full): Ditto.
+
+       * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
+       <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
+
+       * aot-compiler.c (emit_plt): Fix ARM build.
+
+2009-01-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
+       
+       * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
+       change.
+
+       * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
+       instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
+       #463357.
+
+       * iltests.il.in: Add a regression test.
+
+2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
+
+2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Add a regression test for #462457.
+
+2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-ops.h: Add a definition of XPHI.
+
+       * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
+
+       * ssa.c (op_phi_to_move): Handle XPHI.
+
+       * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
+
+       Fixes #462457
+
+2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
+
+2008-12-31  Geoff Norton  <gnorton@novell.com>
+
+       * mini-ppc.c: The prolog size allocated can be too small for darwin
+       ppc32 under certain circumstances.  Also fix a small logic bug.
+
+2008-12-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
+       while loading AOT methods.
+
+       * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
+       since only the former is nulled out after a successful cast. This prevents
+       crashes with rethrown exceptions when using --debug=casts.
+
+2008-12-24  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.h: New macro for checking whether a method is final,
+       i.e. whether the method or its class is marked final.
+
+       * method-to-ir.c: Use the new macro for all final-checks
+       consistently.  Fixes the crash in the System.ServiceModel tests.
+
+2008-12-23  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-exceptions.c (get_exception_catch_class): Corrected another
+       overly strict assertion.
+
+2008-12-23  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
+       Clobbering it is not allowed because the caller might use it as
+       the vtable register in the interface call.
+
+2008-12-19  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-exceptions.c (get_exception_catch_class): Corrected an
+       overly strict assertion.
+
+2008-12-18  Mark Mason <mmason@upwardaccess.com>
+       
+       * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
+
+       * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
+
+       * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
+
+       * cpu-mips.md: correct lengths for certain long_ opcodes.
+
+       * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
+
+       * mini-mips.c: Add support for more long operations. Fix issues with stack frame layout for n32 (still not perfect yet). Add mips_emit_load_const().
+       
+2008-12-17  Mark Mason <mmason@upwardaccess.com>
+
+       * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
+       
+2008-12-17  Mark Mason <mmason@upwardaccess.com>
+       
+       * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
+       
+2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
+       next basic block.
+       
+2008-12-16  Mark Mason <mmason@upwardaccess.com>
+
+       * mini.h: Allow MonoInst 'p' field to alias with the low-order bits of the 'const_val' fields correctly on big-endian systems when SIZEOF_VOID_P < SIZEOF_REGISTER
+
+       * ir-emit.h: Change SIZEOF_VOID_P to SIZEOF_REGISTER, init instruction through inst_c* fields instead of inst_p* fields in case sizeof(inst_p) < sizeof(inst_c)
+       
+2008-12-15  Mark Mason <mmason@upwardaccess.com>
+       
+       * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
+       
+2008-12-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
+       gshared code. Fixes #458947.
+
+       * generics.cs: Add a test.
+
+2008-12-12  Mark Mason <mmason@upwardaccess.com>
+       
+       * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+       
+       * mini-mips.c: first pass n32 code generation.
+
+       * mini-mips.h: datatypes and defines for n32 support.
+
+       * exceptions-mips.c: first pass n32 code generation.
+       
+       * tramp-mips.c: first pass n32 code generation.
+       
+       * cpu-mips.md: add long_ opcodes.
+       
+2008-12-12  Mark Mason <mmason@upwardaccess.com>
+
+       * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+       
+       * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+       
+       * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
+
+       * helpers.c: for mips/n32, don't pass -mips32 to objdump
+
+2008-12-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
+
+2008-12-12  AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
+
+       * driver.c: Sync --help-trace with man page (EXPR,EXPR).
+
+2008-12-12  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
+       descriptors for helper functions directly in front of the code.
+
+2008-12-11  Mark Probst  <mark.probst@gmail.com>
+
+       * method-to-ir.c: Removed an unnecessary assertion.
+
+2008-12-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c: Merge SGEN changes from the old JIT.
+
+2008-12-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (compile_all_methods_thread_main): Handle failure of
+       mono_get_method ().
+
+2008-12-10  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.c: Merged with mini-ppc64.c.
+
+       * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
+
+       * Makefile.am: Use the same sources for PPC and PPC64.
+
+       * mini-ppc64.c: Removed.
+
+2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * branch-opts.c (remove_block_if_useless): Extract fall through detection
+       code to mono_bb_is_fall_through.
+       
+       * branch-opts.c (mono_remove_critical_edges): Same.
+
+2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
+       expect that an OP_BR_REG will be there.
+
+2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
+       for the many branch ops. The original check miss OP_BR_REG.
+
+       Fixes #457574.
+       
+2008-12-09  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
+
+2008-12-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
+       while holding the aot lock.
+
+2008-12-09  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
+       
+2008-12-09  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
+         to release all runtime callable wrappers held by the runtime.
+
+       Contributed under MIT/X11 license.
+
+2008-12-09  Bill Holmes  <billholmes54@gmail.com>
+
+       * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
+         for Winx64.
+
+       Contributed under MIT/X11 license.
+
+2008-12-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-runtime.c (decode_exception_debug_info): Acquire the domain
+       lock when calling mono_domain_alloc (). Hopefully fixes #415608.
+
+2008-12-09  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: fix ckfinite length
+
+       * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
+       (mono_arch_lowering_pass): cleanup, rearrange for clarity
+       (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
+       
+2008-12-08  Mark Mason   <mmason@upwardaccess.com>
+
+       * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
+       
+2008-12-08  Geoff Norton  <gnorton@novell.com>
+
+       * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
+       size by 8 bytes as well.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector16b.
+       
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector16sb.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector8us.
+       
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector8s.
+       
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector4ui.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector2l.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector2d.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
+       that are extension methods.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector4f.
+
+2008-12-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
+       as such. Fixes #456669.
+
+2008-12-07  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
+       
+2008-12-07  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
+       (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
+       (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
+       (mips_adjust_stackframe): handle FP spills
+               
+       * mini-ops.h: add mips_mtc1_s2
+       
+       * cpu-mips.md: add mips_mtc1_s2
+       
+2008-12-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * unwind.c: New file, move the unwind info encoding functions here from
+       aot-compiler.c, so they could be used at runtime too.
+
+2008-12-05  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
+       (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
+       
+2008-12-05  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c: cleanup warnings
+       (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
+       (mips_adjust_stackframe): handle case of taking the address of stack locals
+       
 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
 
+       * aot-compiler.c: Implement a few functions missing from the asm writer.
+       (emit_method_code): Only write symbols for methods when using the bin
+       writer, since the assembler can't deal with the characters in our method
+       names.
+
        * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
 
        * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
        Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
        code easier.
 
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
+
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
+
 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
 
        * basic-simd.cs: Tests for operator == and != on Vector4f.
@@ -17964,3 +18472,4 @@ Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
 
 
 
+