2009-12-03 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
index 01e1fd4d7faec52ff947d6119870b62dd373ec99..ea55855dfb13d42c65408bd3b70a98e621869819 100644 (file)
@@ -1,5 +1,401 @@
+2009-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
+       place it was called before too.
+
+2009-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
+       if no security manager is present, to speed up the AOT case. Call
+       mono_class_vtable () full with raise_on_error == TRUE instead.
+
+2009-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
+       the local optimization passes can take its result into account. Fixes
+       #559876.
+
+       * exceptions.cs: Add a test.
+
+2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
+
+       This patch is contributed under the terms of the MIT/X11 license
+
+        * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
+
+2009-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h (MonoInst): Remove unused 'ssa_op' field.
+
+       * debugger-agent.c: Rework the handling of stack traces of running threads to
+       avoid crashes if compute_frames () tries to walk the stack of running thread.
+
+       * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
+
+       * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
+
+       * mini.h (StackFrameInfo): Add an 'lmf' field.
+
+2009-12-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (suspend_current): Always set really_suspended.
+
+       * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
+
+       * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
+
+2009-12-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
+       really suspended.
+
+2009-12-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * cpu-ppc64.md (store_memindex): Add storei8_memindex.
+
+2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-trampolines.c: Fix MSVC build.
+
+2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
+
+2009-11-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
+       the instruction following an OP_FCOMPARE is optimized away.
+
+2009-11-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
+       emit_autoreg () into this arch-specific function.
+
+       * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
+       code, it is no longer needed.
+
+       * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
+
+       * mini.h: Bump AOT file format version.
+
+       * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
+       using the sorted_code_offsets array, instead of reading it from the
+       exception debug info.
+       (load_method): Call mono_aot_find_jit_info instead of
+       decode_exception_debug_info ().
+
+       * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
+       LLVM compiled as a flag.
+
+2009-11-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (resume_thread): Fix a warning.
+
+       * aot-compiler.c: Add an option to set the number of static rgctx trampolines
+       generated.
+
+2009-11-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
+       contents to MonoAotFileInfo.
+
+2009-11-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
+       Put all binary data into a giant blob, similarly to the way .net assemblies
+       store binary data. Emit offset tables in a compact form to reduce their size.
+
+       * mini.h: Bump AOT file format version.
+
+       * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
+       places.
+
+       * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
+       avoid linear searches at runtime.
+
+       * aot-runtime.c (find_symbol): Update this to use the hash.
+
+       * mini.h: Bump AOT file format version.
+
+2009-11-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
+       container.
+
+       * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
+       too.
+
+       * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
+       the distribution of got slot types.
+
+       * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
+
+       * method-to-ir.c: Add support for generating explicit null checks.
+
+2009-11-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
+       on a random thread if possible.
+
+       * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
+       descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
+       correctly.
+
+       * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
+       regs. Pass the real size of the regs array to mono_unwind_frame ().
+
+       * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
+       ones instead.
+
+2009-11-24  Geoff Norton  <gnorton@novell.com>
+
+       * mini-darwin.c: Work around apple bug rdar://7209349  See
+       http://openradar.appspot.com/7209349 for details.  Synopsis,
+       CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
+       never been initialized before.
+
+2009-11-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
+
+       * mini-arm.c (mono_arm_thumb_supported): New helper function.
+
+2009-11-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
+       OP_SHL_IMM is not 32 bit.
+
+2009-11-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
+
+2009-11-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
+       encountered.
+
+       * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
+       > 0 since some threads can resume if their resume_count is > 0.
+       (invoke_method): Avoid reading freed memory.
+
+       * debugger-agent.c (process_suspend): Extract the suspend code from
+       process_single_step_inner () to a separate function. Rework the code to prevent
+       races between this function and thread interrupts.
+
+       * debugger-agent.c (suspend_current): Check the resume_count field instead
+       of resume_one so suspends+resumes during single threaded invokes work
+       correctly.
+
+2009-11-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
+       to make the generated code smaller.
+
+       * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
+       sequence generated by recent LLVM versions.
+
+       * mini-llvm.c: Add support for a few simple cases which weren't supported
+       before.
+
+       * mini-trampolines.c (mono_magic_trampoline): Don't call
+       mono_arch_get_vcall_slot () when llvm is enabled.
+
+       * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
+
+       * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
+       into a new function called common_call_trampoline () which is used by the
+       llvm vcall trampoline as well.
+
+       * debugger-agent.c: Implement single threaded invokes.
+
+       * debugger-agent.c: Revert change which broke the agent on linux.
+
+       * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
+       #557606.
+
+       * generics.cs: Add a test.
+
+2009-11-22  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c: Fix the cygwin build.
+
+2009-11-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * cprop.c: Remove this unused file.
+
+2009-11-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
+       #557262.
+
+       * basic.cs: Add a test.
+
+2009-11-21  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
+       in one more place.
+
+2009-11-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
+       whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
+       it. Use this flag to control llvm related code paths instead of #ifdef
+       ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
+       AOT code.
+
+       * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
+
+       * mini.h: Bump AOT file format version.
+
+       * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
+       receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
+
+       * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
+       was used as an assembly filter.
+
+2009-11-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * unwind.c: Fix support for ppc.
+
+       * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
+       unwind info. Change to the mono_arch_find_jit_info_ext () interface.
+
+2009-11-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
+       port.
+       (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
+       added by the ps3 changes.
+
+2009-11-19  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-gc.c: Resurrect this, so at least it compiles.
+
+       * debugger-agent.c (assembly_commands): Implement GET_NAME command.
+
+2009-11-18  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
+       create_event_list () so assembly filters can be used.
+
+       * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
+       from the LMF.
+
+2009-11-17  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
+       (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
+       is disabled.
+
+       * aot-compiler.c (add_generic_instances): Emit instances of common generic
+       classes for char/bool too.
+
+       * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
+
+       * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
+       used.
+
+       * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
+       Fix warnings.
+
+2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
+
+       * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
+       
+       Code contributed under MIT/X11 license.
+
+2009-11-14  Zoltan Varga  <vargaz@gmail.com>
+
+       (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
+       threads in native code work.
+
+       * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
+       the parameter list, so it can be acted upon by vm_commands (). Bump protocol
+       version.
+
+2009-11-13 Jonathan Chambers <joncham@gmail.com>
+
+       * debugger-agent.c: Implementation for Windows platform.
+
+       * mini-x86.c: Add support for Windows. Use mono-* synchronization
+       primitives. Use SEH to implement breakpoints and single stepping.
+
+       * mini-x86.h: Enable soft debugger on Windows.
+
+       Code contributed under MIT/X11 license.
+
+2009-11-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (emit_call_body): Disable usage of near calls when running
+       under XEN. Fixes #522894.
+
+       * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
+
+       * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
+       interface calls in LLVM AOT code.
+
+       * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
+       is found.
+
+       * mini-llvm.c: Add support for OP_VPHI.
+
+       * objects.cs: Add a test.
+
+2009-11-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
+       this is called on the debugger thread.
+
+2009-11-12  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c: Add soft-float support.
+
+       * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
+       FCALL which returns an R4.
+
+       * driver.c (mono_main): Add a missing '\n'.
+
+       * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
+       platforms which doesn't support the LLVM IMT trampoline.
+
+2009-11-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
+
+       * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
+
+       * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
+       virtual calls.
+
+       * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
+
+2009-11-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
+       Instead of emitting a method_order table, sort the contents of the code_offsets
+       table and do a binary search in the sorted table. The previous approach doesn't
+       work with LLVM which emits methods in a arbitrary order.
+
+       * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
+       in the .eh_frame section in ELF files.
+
+       * mini.h: Bump corlib file format version.
+
+       * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
+
+       * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
+       LDMIA->LDM macro name change.
+
 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
 
+       * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
+       x86.
+
+       * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
+       SVN.
+
+       * aot-compiler.c: Ditto.
+
        * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
        &align to mini_type_stack_size_full ().