2008-08-14 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
index a8e2b6fe26ee97e4c3407874cced4c46f99349ea..9a0dd0b9b51e91144e938b44f09b647523c64329 100644 (file)
@@ -1,5 +1,306 @@
+2008-08-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
+       mono_arch_find_jit_info.
+
+2008-08-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
+       avoid calling mono_method_full_name () for every method even if the
+       env var is not set.
+       (check_inline_caller_method_name_limit): Ditto.
+
+2008-08-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (main_thread_handler): Allow AOT compilation of multiple 
+       assemblies in one run.
+
+       * aot-compiler.c (mono_compile_assembly): Only print out a count of
+       skipped methods if it is not 0.
+
+       * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
+
+2008-08-12  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
+         MONO_ARCH_HAVE_UNWIND_TABLE.
+
+       Contributed under MIT/X11 license.
+
+2008-08-12  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
+         from default optimizaton list on Winx64.
+
+       * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
+
+       * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
+         the LMF from the MonoJitTlsData structure.
+
+       * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
+
+       Contributed under MIT/X11 license.
+
+2008-08-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (sigsegv_signal_handler): Fix the build.
+
+       * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
+       assembly->aot_module.
+
+       * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
+       hash table. This simplifies and speeds up a lot of code, and fixes support
+       for .netmodules.
+
+       * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
+       with the runtime.
+
+       * mini-exceptions.c: Ditto.
+       
+       * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
+       'native_offset' argument, since these are computed in the 
+       mono_find_jit_info () function.
+
+       * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
+       is used by exceptions-ppc.c.
+
+       * exceptions-ppc.c: Call mono_find_jit_info () instead of 
+       mono_arch_find_jit_info ().
+       
+       * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
+       mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
+       generic code in mini-exceptions.c.
+
+2008-08-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
+
+       * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
+       
+       * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
+       the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
+       called while holding the loader lock. Fixes #415608.
+       (mono_aot_get_method_from_token_inner): Ditto.
+
+2008-08-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
+       to reduce differences between this and the generic implementation in
+       mini-exceptions.c.
+       (ves_icall_get_frame_info): Ditto.
+
+       * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
+
+       * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
+       longer neccesarry.
+
+       * exceptions-ppc.c (arch_get_call_filter): Rename this to 
+       mono_arch_get_call_filter () and make it non-static, for consistency with the
+       other architectures.
+
+2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini.c:
+       * local-propagation.c:
+       * mini-x86.c: Correct the name of arch defines.
+
+2008-08-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
+       NO_EMULATE_LONG_SHIFT_OPS define.
+
+2008-08-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
+       now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
+
+       * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
+       MACH fixes. Merged from the 2.0 branch.
+
+       * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
+
+       * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
+       (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
+
+       * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
+
+       * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
+       mono_marshal_get_native_wrapper () signature changes.
+
+2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
+       conversion bug under arm.
+
+2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
+
+       * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
+       with overflow checking.
+
+2008-08-05  Marek Habersack  <mhabersack@novell.com>
+
+       * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
+       to the genmdesc.pl file
+
+2008-08-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
+       arg_array in the soft-float versions of the LOAD/STORE macros.
+
+       * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
+       implementation.
+
+       * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
+
+2008-08-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
+       a float HFA. Fixes #413621.
+
+2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
+       frame_size to args_size. Fixes build.
+
+2008-08-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
+       and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
+
+       * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
+       the stack are not unaligned. Fixes #413247.
+       
+Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
+
+       * mini.c: update jitted methods performance counters.
+
+Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
+
+       * mini-exceptions.c: increase the exceptions thrown performance
+       counter in mono_handle_exception ().
+
+2008-07-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
+       can work with netmodules.
+
+2008-07-28  Geoff Norton  <gnorton@novell.com>
+
+       * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
+       regression tests.
+
+2008-07-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
+       correct place.
+
+2008-07-28  Bill Holmes  <billholmes54@gmail.com>
+
+       * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
+         The float param registers and other param registers must be the 
+         same index on Windows x64.
+
+       * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
+         ArgValuetypeAddrInIReg argument case.  Setting the argument
+         op to OP_VTARG_ADDR (OP_REGOFFSET)).
+
+       * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
+         variable computed above as the copy length for arguments of storage
+         type ArgValuetypeAddrInIReg.
+
+       * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
+         ArgValuetypeAddrInIReg argument case.  This case will rely on
+         mono_arch_emit_outarg_vt to emit the correct code later in the process.
+
+       * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
+         a 32 byte stack allocation for all calls.  We will omit the adjustment for
+         jump and tail call instructoins as they do not follow the typical call behavior.
+
+       * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
+         ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
+         local variable and pass the local variable by reference to the called method.
+
+       * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
+         Implementing the ArgValuetypeAddrInIReg argument case.  When the address
+         of a struct is passed in a register it must be saved with the other
+         volatile argument on the stack.
+
+       * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
+         frame pointer the stack adjustment value must be saved to the unwind 
+         info structure.
+
+       Contributed under MIT/X11 license.
+
+2008-07-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
+       which got lost in the merge.
+
+2008-07-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
+       build.
+
+       * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
+       
+       * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
+       icalls, since they won't be patched.
+
+       * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
+       different code sequence when running under valgrind to prevent some valgrind
+       errors.
+
+       * iltests.il.in: Add new regression test.
+
+       * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
+       end with a throw.
+
+       * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
+       accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
+
+       * iltests.il.in: Add new test.
+
+       * aot-compiler.c: Fix some warnings.
+
+       * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
+       Fixes #412494.
+
+2008-07-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
+       (mini_usage_jitdeveloper): Add a missing --wapi option.
+
+2008-07-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-codegen.c: Simplify the is_fp macros.
+       (free_up_ireg): Remove, use free_up_reg instead.
+       (free_up_reg): Fix the fp case.
+
 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
 
+       * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
+       lowered earlier.
+
+       * exceptions-x86.c: Merge some changes which seemed to have got lost
+       in the linear-ir merge.
+
+       * liveness.c: Disable the liveness2 pass on 32 bit platforms.
+
+       * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
+       long vreg volatile even if the variable was already created.
+
+       * liveness.c (update_liveness2): Avoid eliminating dead definitions of
+       volatile variables.
+
+2008-07-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
+
+       * mini.c (mono_jit_compile_method_inner): Add support for 
+       MONO_EXCEPTION_BAD_IMAGE.
+
        * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
        mini_method_get_context () returns NULL. Fixes #356531.