2009-02-10 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
index 98bec9608936137f5e9fe312c48aedbfda83ee69..10c869fc550d2f6a2d9e6f392ccfa07599fa2f9f 100644 (file)
@@ -1,3 +1,345 @@
+2009-02-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * Makefile.am (fullaotcheck): Make this run the tests.
+
+       * aot-compiler.c: Make the printing of skipped methods runtime configurable.
+
+2009-02-10  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
+       individually.  Fixes #473482.
+
+2009-02-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
+
+2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
+
+       * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
+       (mono_compile_assembly): Hush compile warnings about
+       uninitialized [tmp_]outfile_name variables in the !use_bin_writer
+       code path.
+
+2009-02-10  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
+
+       * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
+
+       * aot-compiler.c: Fix arm support.
+
+       * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
+       img_writer_emit_unset_mode () function.
+
+       * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
+       (mono_unwind_get_dwarf_pc_reg): Ditto.
+
+       * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
+       Move almost all platform specific code to a set of arch_ functions, 
+       and document them to ease porting.
+       
+       * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
+
+       * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
+
+       * aot-compiler.c: Extract the image writing functionality into a separate
+       module to reduce the size of this file.
+
+2009-02-09  Geoff Norton  <gnorton@novell.com>
+
+       * mini-s390.c: Fix the signature of emit_sig_cookie.
+
+2009-02-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
+
+       * aot-runtime.c (is_shared_got_patch): Ditto.
+
+       * aot-runtime.c (load_named_code): Cope with the fact that 
+       decode_got_entry () won't decode the patch fully if its corresponding got
+       entry is already filled.
+       
+       * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
+       Initialize *ji.
+       (mono_arch_create_monitor_exit_trampoline_full): Ditto.
+
+       * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
+       as the moving pointer instead of 'buf' for consistency with the rest of the
+       codebase.
+       (mono_arch_create_monitor_exit_trampoline): Ditto.
+
+       * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
+       generic_class_init trampolines.
+       (add_generic_class): Extract some code from add_generic_instances () into a
+       separate function so it can be called from other places too.
+       (compile_method): Call add_generic_class () for the classes of inflated methods
+       referenced by the method.
+       (can_encode_patch): Allow references to generic parameters.
+
+       * aot-runtime.c: Add support the patches required by the new trampolines.
+       
+       * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
+       support.
+
+       * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
+       full-aot support.
+
+       * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
+       this from get_throw_pending_exception, make the signature full aot compatible.
+
+       * Makefile.am (fullaotcheck): New target to run full-aot tests.
+
+       * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
+
+       * exceptions.cs: Add a test.
+
+2009-02-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
+       use the DWARF_DATA_ALIGN constant instead.
+
+       * exception-<ARCH>.c: Update after the above change.
+
+       * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
+       dwarf unwinder.
+
+       * mini-arm.c: Enable the dwarf unwinder.
+
+       * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
+       instead of mono_class_setup_vtable ().
+
+2009-02-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
+       dwarf unwinder.
+
+       * mini-x86.h: Enable the dwarf unwinder.
+
+2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
+
+       Fix mcs/tests/test-7.cs
+       * mini-amd64.c (mono_arch_allocate_vars): Revert change from
+       2009-02-03.
+
+2009-02-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (print_jit_stats): Remove some unused statistics.
+
+2009-02-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
+
+2009-02-05  Mark Probst  <mark.probst@gmail.com>
+
+       * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
+       the method we get from mono_object_get_virtual_method() because
+       that function does it properly, now.
+
+2009-02-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
+       opcodes. Fixes #472775.
+
+2009-02-05  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-exceptions.c (ves_icall_get_frame_info): Account for the
+       fact that mono_find_jit_info() sometimes returns the context
+       corresponding to the jit info in new_ctx.  Fixes #472600.
+
+2009-02-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
+       mini-s390.c: Use mono_class_enum_basetype () instead of accessing
+       klass->enum_basetype directly.
+
+       * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
+       enum subtypes.
+
+       * unwind.c: Avoid 0 sized arrays.
+
+2009-02-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
+       size on systems with 64k pages. Fixes #471389.
+
+2009-02-04  Mark Probst  <mark.probst@gmail.com>
+
+       Contributed under the terms of the MIT/X11 license by Steven
+       Munroe <munroesj@us.ibm.com>.
+
+       * mini-ppc.c (mono_arch_output_basic_block): Generate better code
+       for LOADI4_MEMBASE.  Use addi instead of addic if it's not
+       necessary.
+
+2009-02-04  Mark Probst  <mark.probst@gmail.com>
+
+       Contributed under the terms of the MIT/X11 license by Steven
+       Munroe <munroesj@us.ibm.com>.
+
+       * exceptions-ppc.c (mono_arch_get_restore_context): Code size
+       comparison fix.
+
+       * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
+       The trampoline can be longer on PPC64.
+
+2009-02-04  Mark Probst  <mark.probst@gmail.com>
+
+       Contributed under the terms of the MIT/X11 license by Steven
+       Munroe <munroesj@us.ibm.com>.
+
+       * mini-ppc.c: Compiler warning fixes and trivial code
+       simplifications.
+
+2009-02-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
+       ins->dreg which could be a hardware register, not a vreg.
+
+       * aot-compiler.c (emit_method_dwarf_info): Ditto.
+       
+       * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
+       (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
+
+       * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
+       
+       * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
+       ->dreg, that is not the vreg we are looking for.
+
+       * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
+
+       * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
+       LIVERANGE_END.
+
+       * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
+       strange crashes.
+
+2009-02-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
+
+       * aot-compiler.c (emit_line_number_info): Fix line number emission when
+       the line diff is 0.
+
+       * aot-compiler.c: Add xdebug support on x86.
+
+       * unwind.c: Add x86 support.
+       
+       * aot-compiler.c (emit_exception_debug_info): Control the emission of
+       unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
+
+       * mini.c (mini_method_compile): Ditto.
+       
+       * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
+       the variable index.
+
+       * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
+       which mimic .push_section/.pop_section in GAS.
+       
+       * aot-compiler.c: Emit precise live range information for variables.
+
+       * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
+
+       * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
+       the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
+       them.
+
+       * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
+       the live ranges of variables.
+
+       * mini.h (struct MonoMethodVar): Add two fields containing the live range
+       of the variable in terms of native offsets.
+
+2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
+       
+2009-02-02  Mark Probst  <mark.probst@gmail.com>
+
+       Contributed under the terms of the MIT/X11 license by Steven
+       Munroe <munroesj@us.ibm.com>.
+
+       * exceptions-ppc.c (restore_regs_from_context): Correct operand
+       order (offset then base reg) for ppc_load_multiple_regs.
+       (emit_save_saved_regs) Correct operand order for
+       ppc_store_multiple_regs.
+       (mono_arch_get_call_filter): Correct operand order for
+       ppc_load_multiple_regs.
+
+       * mini-ppc.c (emit_memcpy): Fix operand order for
+       ppc_load_reg_update and ppc_store_reg_update.
+       (mono_arch_output_basic_block): Correct operand order for ppc_lha.
+       (mono_arch_emit_epilog): Correct operand order for
+       ppc_load_multiple_regs.
+
+       * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
+       order for ppc_store_multiple_regs and ppc_load_multiple_regs.
+
+2009-02-02  Mark Probst  <mark.probst@gmail.com>
+
+       * cpu-ppc64.md: Fixed storer4_memindex length.
+
+2009-02-02  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
+       line number info.
+       
+       * aot-compiler.c (emit_line_number_info): Optimize this.
+
+2009-02-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c: Disassemble tokens in the IL disassembly.
+       
+       * aot-compiler.c: Add debug info for methods without debug info by
+       emitting an IL file and having the line number info referencing that file.
+
+       * aot-compiler.c: Optimize the size of the generated line number info.
+
+       * aot-compiler.c: Emit line number info in xdebug mode.
+
+       * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
+       million arguments.
+
+2009-01-31  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
+
+       * driver.c (mono_main): Enable debugging support automatically if XDEBUG
+       is used.
+
+2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-calls.cs: Test for the weird crash found on arm.
+       
+2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cpu-arm.md: Increase the size of storer8_membase_reg and
+       loadr8_membase_reg to 24 bytes to accomodate the extra add.
+
+       * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
+       OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
+       reg to LR otherwise we'll be loading/storing from just the offset.
+
+2009-01-30  Miguel de Icaza  <miguel@novell.com>
+
+       Question: if we are storing gint32's inside the "*native_offset",
+       should we change the signature to "gint32 *native_offset" to
+       ensure that we do not have type definition problems?
+       
+       * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
+       an int * as this is what the other function expects, causes
+       problems with Freescale's compiler that defined int32_t to be a
+       long and makes int incompatible 
+
+2009-01-30  Miguel de Icaza  <miguel@novell.com>
+
+       * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
+       filename conflict with bjam.
+
+2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
+       as it might use decomposed ops.
+
 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
 
        * jit-icalls.c (mono_imul_ovf): Fix one of the literals.