+2009-12-13 Zoltan Varga <vargaz@gmail.com>
+
+ * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
+ end of an LLVM compiled finally clause.
+ (mono_handle_exception_internal): Save the exception handling state in TLS
+ before calling an LLVM compiled finally clause, so mono_resume_unwind () can
+ resume unwinding from that point.
+
+ * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
+ mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
+ to obtain the addresses of the exception handling regions.
+
+ * mini-llvm.c: Add beginnings of support for exception handling, currently only
+ finally clauses are supported.
+
+ * mini.c (mini_method_compile): Add support for LLVM code with exception
+ handlers.
+
+2009-12-12 Zoltan Varga <vargaz@gmail.com>
+
+ * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
+ proper size.
+
+2009-12-12 Zoltan Varga <vargaz@gmail.com>
+
+ * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
+ as a primitive type.
+
+2009-12-11 Zoltan Varga <vargaz@gmail.com>
+
+ * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
+ for 2 parameter sched_setaffinity in older glibc versions. Fixes
+ #564000.
+
+2009-12-11 Marek Habersack <mhabersack@novell.com>
+
+ * method-to-ir.c (mini_redirect_call): do not redirect the
+ InternalAllocateStr internal call if string profiling is enabled.
+
+2009-12-10 Zoltan Varga <vargaz@gmail.com>
+
+ * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
+ generic methods.
+
+ * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
+ unwind.h header file.
+
+ * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
+ newer valgrind versions seems to handle this fine.
+
+2009-12-09 Zoltan Varga <vargaz@gmail.com>
+
+ * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
+ on the debugger thread.
+
+2009-12-08 Zoltan Varga <vargaz@gmail.com>
+
+ * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
+
+ * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
+
+ * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
+
+ * cpu-<ARCH>.md: Make call_handler clob:c.
+
+ * mini.c: Reenable SSA for methods with clauses.
+
+ * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
+ as it causes failures on x86.
+
+2009-12-08 Sebastien Pouliot <sebastien@ximian.com>
+
+ * driver.c: Fail gracefully with --compile-all if mono_method_signature
+ returns NULL (e.g. a bad assembly).
+
+2009-12-08 Geoff Norton <gnorton@novell.com>
+
+ * debugger-agent.c: Refactor the mono_runtime_invoke guarding against
+ stepping out into native code. There were issues with nested invokes
+ like .cctors.
+
+2009-12-07 Zoltan Varga <vargaz@gmail.com>
+
+ * mini.c (mini_method_compile): Do the disable_llvm checks early
+ and avoid the LLVM compile pass if the checks fail.
+
+ * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
+
+ * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
+ LLVM optimizations don't try to remove them.
+
+ * aot-compiler.c (emit_llvm_file): Save the result of opt into a
+ different file so the original remains.
+
+2009-12-06 Zoltan Varga <vargaz@gmail.com>
+
+ * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
+
+ * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
+
+ * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
+ support for non-inline unwind descriptors.
+
+2009-12-07 Geoff Norton <gnorton@novell.com>
+
+ * debugger-agent.c: Darwin can colesce signals, so we need to handle
+ the interrupt_count slightly differently. Native threads were never
+ marked as resumed.
+
+2009-12-05 Zoltan Varga <vargaz@gmail.com>
+
+ * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
+ based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
+ yet generate this info.
+
+ * mini-llvm.c: Fix the conversion of call results if they are unsigned.
+
+ * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
+ client can distinguish between intptrs and longs.
+
+2009-12-05 Zoltan Varga <vargaz@gmail.com>
+
+ * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
+ blob.
+
+ * aot-runtime.c (load_function): Update after the change above.
+
+ * mini.h: Bump AOT file format version.
+
+ * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
+ if the delegate class is dynamic.
+
+ * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
+ in gshared code too using the new rgctx info type
+ MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
+
+2009-12-04 Geoff Norton <gnorton@novell.com>
+
+ * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
+ we need to track the original suspend count so the thread properly
+ wakes up in resume_thread.
+
+2009-12-04 Zoltan Varga <vargaz@gmail.com>
+
+ * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
+ code.
+
+ * generics.cs: Add a test.
+
+ * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
+ is 0. Simplify a lot of code using this.
+
+ * mini-trampolines.c (mono_delegate_trampoline): Call
+ mono_create_static_rgctx_trampoline () before saving the final address in
+ delegate->method_code, to avoid calling it each time a delegate is first called.
+
+ * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
+ which need static rgctx trampolines.
+
+ * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
+ keyed on the method+addr pair, since addr could be either the method addr or
+ an unbox trampoline in the AOT case. Fixes #560246.
+
+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.