[corlib] Improve CancellationTokenSource test
[mono.git] / mono / mini / ChangeLog
index 188d669264d49f4f2cdd704cb5fef543718d04af..401b29de1f08c51226514b1fd5bc77f6217fdcdc 100755 (executable)
@@ -1,3 +1,437 @@
+2010-07-29  Mark Mason <glowingpurple@gmail.com>
+       
+       * mini-ops.h: Fix mips branch opcodes
+       * mini-mips.h: enable IMT for MIPS
+       * mini-mips.c: Use NULLIFY_INS(), fixup *_OVF expansions with extra move.
+       * tramp-mips.c: Some cleanups to trampoline handling
+       
+2010-07-27  Mark Mason <glowingpurple@gmail.com>
+
+       * mini-mips.c: Fix compilation errors.
+
+2010-07-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-trampolines.c (common_call_trampoline): Fix a warning.
+
+2010-07-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-s390x.c: Change the calling convention to pass this as first as on other
+       architectures. Remove some dead code from the get_vcall_slot().
+
+2010-07-24  Geoff Norton  <gnorton@novell.com>
+
+       * mini-darwin.c: Having reviewed xnu-1504.7.4 it is safe to call fork directly
+       here, it seems the old implementation was a hold over from the linux behaviour
+       This fixed gdb backtrace on amd64 and ppc.
+
+2010-07-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * xdebug.c (mono_save_trampoline_xdebug_info): Call
+       mono_loader_lock/unlock_if_inited () to avoid asserts on some platforms during
+       startup.
+
+2010-07-23  Marek Habersack  <mhabersack@novell.com>
+
+       * Makefile.am (version.h): generate version using GIT commit info,
+       removed the old svn and git-svn code.
+
+2010-07-22  Jb Evain  <jbevain@novell.com>
+
+       * method-to-ir.c (BRANCH_COST): set to 10.
+
+2010-07-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (op_to_op_src2_membase): Reorganize the amd64 op->op membase
+       code, it was missing a few 'break's.
+
+2010-07-20  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mini_emit_inst_for_method): Add Array.GetLength/GetLowerBound ().
+       Fixes #618176.
+
+2010-07-16  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c: Fix the arm build by passing a MonoGenericSharingContext to get_call_info.
+
+2010-07-16  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c: Add more SIMD instructions.
+
+2010-07-15  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c: Allow "casts" to be passed on MONO_DEBUG as well.
+
+2010-07-15  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-ia64.c: Change the calling convention to pass this as first as on other
+       architectures. Remove some dead code from the get_vcall_slot() and the implementation
+       of the CALL_MEMBASE opcodes as a result.
+
+2010-07-13  Miguel de Icaza  <miguel@novell.com>
+
+       * mini.c: LLVM is disabled by default on LLVM builds.  You can use
+       the MONO_ENV_OPTIONS to set the --llvm flag.
+
+2010-07-13  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * driver.c : windows build fix for --with-moonlight.
+
+2010-07-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
+
+       * mini.c|h:
+       * mini-exceptions.c: Add an option to MONO_DEBUG for tracking down exceptions
+       that reach native code from a reverse pinvoke.
+
+2010-07-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_method_to_ir): Kill some duplicated code.
+
+       * mini-<ARCH>.c (get_call_info): Call mini_type_get_underlying_type () before passing
+       a type to MONO_TYPE_IS_REFERENCE (), since the latter can't handle VAR/MVAR.
+       Fixes #620864.
+
+       * generics.cs: Add a test.
+
+2010-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini.c (mono_jit_compile_method_inner): Don't bomb out if we don't
+       support a given runtime implemented method.
+
+2010-07-10  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-darwin.c: Register the exception thread with the GC.
+
+2010-07-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c (set_metadata_flag): Set metadata flags only when using the LLVM
+       mono branch.
+
+2010-07-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h (MONO_INST_HAS_CONSTANT_LOAD): New instruction flag marking loads which load
+       from constant memory.
+
+       * ir-emit.h: Clean up the _FAULT macros a bit.
+
+       * decompose.c: Mark some loads as constant.
+
+       * mini-llvm.c: Pass the constant-ness of loads to LLVM using custom metadata.
+
+2010-07-09  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.c (mini_usage): Change the name of the --sgen flag to be
+       --gc=sgen and also support --gc=boehm.   These flags can also be
+       set on MONO_ENV_OPTIONS to propagate this to children processes.
+
+       * main.c: Remove the MONO_VM_OPTIONS environment variable that
+       only supported "sgen" and "llvm" config options and instead parse
+       the MONO_ENV_OPTIONS as options that are parsed by the command
+       line parser.   Any command line option that Mono supports can be
+       passed in this environment variable.
+
+2010-07-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks +
+       LLVM.
+
+       * mini.c (mini_method_compile): Run abcrem uncoditionally when LLVM is used since
+       it can now eliminate more than just bounds checks.
+
+       * ir-emit.h: Add MAY_FAULT versions of the LOAD_MEMBASE macros which take
+       an extra 'fault' argument.
+
+       * method-to-ir.c: Set the MONO_INST_FAULT of the array opcodes which are decomposed
+       later.
+
+       * decompose.c: Propagate the MONO_INST_FAULT flag from the array opcodes to their
+       decomposition.
+
+       * mini-llvm.c: Remove support for the X86/AMD64 COMPARE_MEMBASE opcodes, they are
+       no longer generated when LLVM is used.
+
+       * abcremoval.c: Eliminate MONO_INST_FAULT flags if possible.
+
+2010-07-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * ir-emit.h mini-llvm.c: Fix support for explicit-null-checks + LLVM.
+
+2010-07-09  Rolf Bjarne Kvinge  <RKvinge@novell.com>
+
+       * driver.c: Moonlight: Force line buffering for stdout.
+
+2010-07-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c (emit_load): Revert the last changes, the load/store intrinsics
+       are only callable using invoke.
+
+2010-07-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c (process_bb): Use emit_load () in one more place.
+
+       * mini-llvm-cpp.cpp (force_pass_linking): Link in more function passes so
+       MONO_LLVM=xxx is actually usable.
+
+       * mini-llvm.c (emit_load): Use the mono specific load intrinsics even outside clauses
+       since LLVM might be able to hoist them out of loops.
+       (emit_store): Ditto.
+
+2010-07-08  Neale Ferguson <neale@sinenomine.net>
+
+       * mini-s390x.c: Correct setting value of header from cfg->header - fix crash
+       in typeload-unaligned test.
+
+2010-07-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * xdebug.c (mono_save_trampoline_xdebug_info): Make this receive a MonoTrampInfo.
+
+       * tramp-<ARCH>.c: Move the calls to save_trampoline_xdebug_info () into
+       mini-trampolines.c/mini-exceptions.c. Use a more human readable name for
+       generic trampolines+rgctx fetch trampolines.
+
+2010-07-08  Geoff Norton  <gnorton@novell.com>
+
+       * genmdesc.pl: nacl is not a new inst slot, it just modifies the size slot.
+
+2010-07-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Add xdebug info.
+
+       * method-to-ir.c (emit_imt_argument): Call add_outarg_reg even if MONO_ARCH_IMT_REG
+       is not defined in the LLVM case to keep the imt arg alive.
+
+2010-07-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-<ARCH>.c mini-llvm.c: Clean up the naming of the llvm related trampoline
+       functions, now its 'llvm_<FOO>_trampoline'.
+
+       * method-to-ir.c (emit_imt_argument): Fix llvm support.
+
+       * mini-llvm.c: Use only one mono specific LLVM calling convention since imt/rgctx
+       cannot be passed in the same call.
+
+       * mini-amd64.h mini-amd64.c tramp-amd64.c aot-compiler.c: Change the IMT
+       register to be the same as the RGCTX register, the two can't be used together on
+       the same call.
+
+2010-07-05  Miguel de Icaza  <miguel@novell.com>
+
+       * driver.c (mono_main), main.c: Add support for MONO_VM_CONFIG
+       that allows the user to force the VM to use llvm or sgen.
+
+2010-07-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-ppc.c (mono_arch_handle_exception): Resume from the signal handler
+       before processing the exception on PPC too.
+
+       * mini-ppc.h (MONO_CONTEXT_SET_SP): Define this to fix the PPC build.
+
+       * mini-ppc.c tramp-ppc.c aot-compiler.c: Change the managed calling convention so
+       'this' is always passed as the first argument, before the vtype ret arg. This
+       simplifies get_this_arg_reg () and LLVM integration.
+
+2010-07-05  Martin Baulig  <martin@ximian.com>
+
+       * exceptions-x86.c (mono_arch_handle_exception): Port this to
+       Windows; apply my patch from r159782 in the mono-2-6 branch.
+
+2010-07-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
+
+       * Makefile.am: Don't build the debug assembler files if we're building without
+       debugger support.
+
+2010-07-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (arch_emit_unbox_trampoline): Fix this after the callconv changes.
+
+2010-07-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * tramp-arm.c (mono_arch_create_generic_trampoline): Fix the max trampoline
+       length.
+
+       * mini-arm.h (MonoContext): Get rid of the 'ebp' field, use
+       regs [ARMREG_FP] instead.
+
+       * unwind.c (decode_lsda): Use read32 for reading 32 bit quantities.
+
+       * tramp-arm.c (mono_arch_create_generic_trampoline): Save the original sp to
+       lmf->iregs [ARMREG_IP] to be consistent with mono_arch_emit_prolog ().
+
+       * mini-arm.h (MonoLMF): Remove unused fregs field, add comments for other fields.
+
+       * exceptions-arm.c: Clean up the handling of LMFs. Add LLVM exception trampolines.
+
+       * mini-arm.c: Always use V5 for passing IMT/RGCTX when running under LLVM.
+
+       * method-to-ir.c (emit_imt_argument): Fix LLVM support for architectures
+       without IMT_REG defined (ARM).
+
+       * exceptions-arm.c: Add LLVM throw exception trampolines, add xdebug info for
+       the trampolines.
+
+2010-07-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c (process_bb): Disable OP_MEMORY_BARRIER on arm.
+
+2010-07-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h: Applied patch from Elijah Taylor (elijahtaylor@google.com). Fix some
+       definitions to match their declarations and vice-versa.
+
+2010-07-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * Makefile.am (common_sources): Add mini-llvm.h.
+
+       * unwind.c (mono_unwind_decode_fde): Fix the decoding of the lsda offset.
+
+2010-06-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_cleanup): Avoid calling mono_runtime_shutdown () if cross
+       compiling.
+
+Wed Jun 30 12:10:57 CEST 2010 Paolo Molaro <lupus@ximian.com>
+
+       * Makefile.am, mini-llvm.h, mini-unwind.h, mini.c, mini.h, xdebug.c:
+       implemt the option of loading the llvm backend from a module so
+       that we can have a single binary and the bloat from llvm is
+       only experienced when it is actually loaded.
+
+Wed Jun 30 12:02:39 CEST 2010 Paolo Molaro <lupus@ximian.com>
+
+       * mini-llvm.c: remove direct access to mono_defaults.
+
+2010-06-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c (mono_arch_get_vcall_slot): This is no longer used on ARM, so make it
+       a no-op.
+
+       * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
+
+       * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
+       is now mono_arch_nullify_class_init_trampoline ().
+       (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
+       opcodes, they are no longer needed.
+
+       * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
+       now mono_arch_nullify_class_init_trampoline ().
+       (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
+       opcodes, they are no longer needed.
+
+       * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
+       vtable on platforms which support it.
+
+       * driver.c: Print the full LLVM version we are compiled against in --version.
+
+       * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
+       a bit better. Decode nesting information to fix eh support for llvm+aot.
+
+       * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
+       methods.
+
+       * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
+
+       * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
+       is always passed as the first argument, before the vtype ret arg. This simplifies
+       get_this_arg_reg () and LLVM integration.
+
+2010-06-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
+       vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
+       most of the vcall specific code to mono_vcall_trampoline () from
+       common_call_trampoline ().
+
+2010-06-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-trampolines.c (common_call_trampoline): Remove the code which created static
+       rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
+       if the callsite is patched.
+
+       * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
+       the llvm branch.
+
+       * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
+       the trampoline in the xdebug info.
+
+       * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
+       as well.
+
+2010-06-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm.c: Fix a few problems exposed by make check.
+
+2010-06-25  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-trampolines.c (common_call_trampoline): An ugly hack to
+       work around a potentially very hard to fix problem with inflating
+       generic methods.
+
+2010-06-26  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
+       problem has been fixes.
+
+2010-06-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
+
+       * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
+       It might be be better to define a MonoGCJitOptions structure later and have the
+       GC return that.
+
+       * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
+
+       * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
+
+       * debugger-agent.c (get_objref): Implement support for sgen.
+
+       * driver.c: Remove the unused gc_wrapper.h include.
+
+       * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
+       implementation.
+
+2010-06-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
+
+       * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
+       in MonoCompile.
+
+       * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
+       instead.
+
+2010-06-23  Miguel de Icaza  <miguel@novell.com>
+
+       * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
+       GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
+
+       * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
+       it only for Boehm diagnostics.
+
+       * Makefile.am: Make the file a bit more consistent.
+
+       * debug-debugger.c: Wrap the entire file with an #ifdef
+       MONO_DEBUGGER_SUPPORTED to simplify the build.
+
+       * Makefile.am: Fix the opcodes build issue by including the
+       source, not by including the .lo file directly
+
+       Always bring the MDB sources into the build, to drop the
+       dependency on the AM_CONDITIONAL from configure.in as the hard
+       debugger supports Boehm, but not Sgen, this simplifies the build. 
+
+       * Renamed the *.s files into *.S
+
+2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
+       wb for now on 64bits systems while issues with valuetype returns
+       are not fixed.
+
+2010-06-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
+       passes by calling createStandardFunctionPasses ().
+
 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
 
        * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
@@ -2363,6 +2797,12 @@ Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
        * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
        by merging the LLVM and !MAP_32BIT cases.
 
+2009-12-14  Geoff Norton  <gnorton@novell.com>
+
+       * debugger-agent.c: The end_runtime_invoke guard isn't working on 
+       AMD64 as __builtin_frame_address (1) returns NULL.  Disable the 
+       behaviour by default, and make it runtime configurable.
+       
 2009-12-13 Jonathan Chambers <joncham@gmail.com>
 
        * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL