2002-02-27 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / jit / ChangeLog
index 10a3fda077fb2bdadfdc171a3f895eb36ccdebe2..00cddf1ff8bcf1264399ddc6fd886249bb301fe5 100644 (file)
@@ -1,3 +1,429 @@
+2002-02-27  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (arch_runtime_invoke): impl. runtime invoke for the jit.
+
+2002-02-26  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: bug fix in CLT(lreg,lreg)
+       (reg): bug fix in CONV_OVF_I4(lreg)
+       (lreg): replaced x86_call_reg with x86_call_code
+
+       * emit-x86.c (mono_add_jump_info): impl.
+       (mono_compute_branches): patch real jump address (instead of
+       emitting code twice)
+
+Tue Feb 26 11:56:03 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * x86.brg: optimize cmp reg,0 -> test reg.
+
+Sun Feb 24 13:58:34 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * jit.h, jit.c, emit-x86.c: Added a few statistics counters
+       and the --stats command line option to print them.
+       Fixed memory leak in arch_compile_method () when a method's code is
+       found in the cache. Fix magic trampoline to deal with static calls.
+
+2002-02-21  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. SHR_UN for lreg, added new test, bug fix for BNE_UN 
+
+2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (arch_compile_method): add shared code to mono_root_domain
+       (arch_create_jit_trampoline): cache trampoline code
+
+2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): optimize LDSFLD/STSFLD for domain
+       specific code.
+       (mono_analyze_stack): use MB_TERM_LDELEMA to perform bound check
+
+       * x86.brg: do not encode exception objects into the instruction
+       stream, because they are domain dependend. Use
+       arch_get_throw_exception_by_name() instead;
+
+Mon Feb 18 15:51:40 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * jit.c: intern command line arguments.
+
+2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): use the magic trampoline for all
+       calls (since we cant store the address of compiled code in
+       method->addr).
+       (mono_analyze_stack): imp. LDSTR for shared code
+
+       * emit-x86.c (x86_magic_trampoline): handle x86_call_code().
+       (arch_compile_method): add a cache for compiled methods to avoid
+       recompilation. dont use method->addr to store domain dependent
+       code address.
+
+2002-02-15  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. BLE,BGT for freg
+
+Sat Feb 16 16:27:42 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * emit-x86.c: handle unreachable code. Eliminate some unneeded
+       malloc() calls.
+       * jit.c: handle unreachable code. Move setting of mono_end_of_stack to
+       main(). Add --compile classname and --ncompile num command line
+       options to do performance evaluation of the jitter (and help
+       debugging).
+
+2002-02-15  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (arch_compile_method): bug fix in static delegate
+       Invoke code.
+
+2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): do a LDIND after NEWOBJ for value types.
+
+2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): impl. CEE_SIZEOF
+
+2002-02-13  Miguel de Icaza  <miguel@ximian.com>
+
+       * jit.c (arch_allocate_var): Only assert that the alignment is
+       at least 32-bits aligned, not always 32-bits aligned (for I8 for example).
+
+Mon Feb 11 11:20:57 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * x86.brg: fix invalid cast check in unbox. Pack MBTree structure.
+
+Sun Feb 10 12:54:05 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * emit-x86.c: make x86_magic_trampoline() handle call instructions
+       with an imm8 displacement. x86.brg not yet changed to take advantage
+       of it.
+
+Sun Feb 10 11:47:30 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * jit.c: use opcode info from libmetadata to do flow analysis
+       and simplify code.
+
+2002-02-06  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (MAKE_LDELEM, MAKE_STELEM): added bound checking 
+
+2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: use element_class for type check
+
+2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (main): impl. __array_Address icall
+
+       * mempool.c (mono_mempool_alloc): handle large block allocation
+
+2002-02-01  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. SHL/SHR/CLT for 64 bit values
+
+2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. CEQ(lreg,lreg)
+
+       * jit.c (mono_analyze_stack): impl. LDVIRTFTN
+       (mono_analyze_stack): handle MONO_TABLE_MEMBERREF in LDSFLD/STSFLD
+
+       * x86.brg: removed some dead code.
+
+2002-01-18  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (arch_allocate_var): fixed alignment bugs
+
+2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): use LDIND_REF/STIND_REF
+
+2002-01-16  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (main): install the trampoline before we start to create
+       objects.
+
+       * x86.brg: impl. CLT_UN, CGT_UN
+
+       * emit-x86.c (leave_method): added check for null object
+       (enter_method): consider byref arguments
+
+2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: bug fix in CONV_OVF_I1_UN
+       impl. ADD_OVF, MUL_OVF
+       impl. ADD_OVF_UN, SUB_OVF, SUB_OVF_UN
+       (SUB (lreg, lreg)): bug fix - use SBB instead of SUB
+       (EMIT_COND_EXCEPTION): added signed flag
+
+Fri Jan 11 20:06:22 CET 2002 Paolo Molaro <lupus@ximian.com>
+
+       * jit.c: implement stloc, ldloc, ldloca.
+
+2002-01-11  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): fixed calculation of last_instr
+
+       * x86.brg (LDLEN): emit null_reference exception
+       (BLE_UN): bug fix. 
+       (RET, RET_VOID, RET_OBJ, ...) fixed jump to epilog
+
+2002-01-04  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: bug fix in CASTCLASS
+
+2001-12-21  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): spill MUL to avoid problem with
+       register allocation.
+
+       * emit-x86.c (arch_compile_method): fixed static delegate bug
+
+2001-12-16  Miguel de Icaza  <miguel@ximian.com>
+
+       * x86.brg, jit.c: Split up the nodes that we used to share on
+       CONV_OVF.  They were sharing the nodes because they are the same
+       on 32-bit machines, but on 64-bit machines you need different
+       code for them.
+
+2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: removed prerequisite that (tree->left->reg1 <
+       tree->right->reg1) to make register allocation easier.
+
+2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (arch_handle_exception): new code to handle
+       exceptions inside unmanaged code.
+
+       * x86.brg: impl. SAVE_LMF, RESTORE_LMF, pass implizit valuetype
+       address as first argument.
+
+2001-12-15  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: pass exceptions on the stack
+
+       * jit.h (ISSTRUCT): new macro to check for real value types
+       (return false for enum types). 
+
+2001-12-11  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: use position indepentent code if possible. 
+
+       * x86.brg (EMIT_COND_EXCEPTION): new macro.
+
+       * emit-x86.c (mono_emit_cfg): impl. variable code buffer size
+
+2001-12-10  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_flow): use g_malloc0 o allocate large bcinfo
+       blocks.
+       (mono_analyze_flow): use g_malloc0 o allocate large bblocks array.
+
+       * x86.brg (stmt): added opt. for STIND_R4/STIND_R8
+
+2001-12-07  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_allocate_intvar): bug fix.
+
+       * emit-x86.c (get_unbox_trampoline): impl.
+
+       * jit.c (mono_analyze_stack): impl STOBJ, LEAVE
+
+2001-12-06  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: raise exceptions.
+
+2001-12-05  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. CEQ for freg, NEWSTRUCT now allocates valuetypes on
+       the stack. 
+
+2001-12-06  Miguel de Icaza  <miguel@ximian.com>
+
+       * jit.c (mono_analyze_stack), x86.brg: Implement CONV.OVF.I1,
+       CONV.OVF.I4, CONV.OVF.I1.UN, CONV.OVF.U1, CONV.OVF.U1.UN,
+       CONV.OVF.I2.UN, CONV.OVF.I8.UN
+
+2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg: impl. UNBOX, NEWSTRUCT, removed VTYPE, bug fixes,
+       removed the locaddr nonterminal, reimplemented value types
+       
+       * jit.c: reimplemented value type support, better support for
+       enumeration types. 
+
+2001-12-03  Miguel de Icaza  <miguel@ximian.com>
+
+       * x86.brg, jit.c: Implement conv.ovf.u4, conv.ovf.u2, conv.ovf.i2,
+       conv.ovf.u8 
+
+Mon Dec 3 17:16:36 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * jit.c: call mono_init() after registering internal calls.
+
+2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (tree_preallocate_regs): improved register allocation
+
+       * x86.brg: impl. ISINST, CASTCLASS
+
+Fri Nov 30 12:02:24 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * x86.brg: rearrange fields to reduce struct size.
+       * jit.c: use signature->param_count, not signature->params_size.
+       * debug.c: off-by-one error fix.
+
+2001-11-29  Radek Doulik  <rodo@ximian.com>
+
+       * Makefile.am: build mono only for X86 architecture, compilation
+       fails for ppc now because of accessing registers in sigcontext
+       structure
+
+2001-11-29  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): bug fix in DUP
+
+Thu Nov 29 12:32:01 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * debug.c: fix type handling. Position function position at start of
+       IL code. Output more fine-grained stepping information.
+
+2001-11-28  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg (LDIND_I1, LDIND_I2): use x86_widen_ instead of x86_mov_
+
+       * jit.c (mono_analyze_stack): record the cli_address for later use
+       with gdb.
+       (sigsegv_signal_handler): translate sigsegv into "Internal error"
+       exception.
+
+Tue Nov 27 16:32:41 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * debug.c, debug.h: added support for generating stabs.
+       Stabs can be compiled with as and the resulting object file can be
+       loaded in a gdb session with add-symbol-file object.o.
+       * jit.c, jit.h: add --stabs and --debug command line arguments. Keep track
+       where locals and arguments are stored in the stack. Add support for
+       passing command line arguments to CLR programs.
+       * emit-x86.c: insert a breakpoint at method invocation if needed.
+
+2001-11-27  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c: exception support
+
+       * emit-x86.c (arch_emit_epilogue): bug fix: restore the regs in
+       the right order.
+
+2001-11-26  Dick Porter  <dick@ximian.com>
+
+       * Makefile.am (mono_LDADD): Add io-layer library
+
+2001-11-19  Dietmar Maurer  <dietmar@ximian.com>
+
+       * jit.c (mono_analyze_stack): impl. LDFTN
+       (MAKE_SPILLED_BI_ALU): always spill DIV/REM results to memory to
+       make register allocation easier on x86
+
+       * emit-x86.c (enter_method): more debugging output for Strings
+       (arch_compile_method): added delegate support
+       (arch_compile_method): align EBP to 8 byte boundary
+
+Mon Nov 19 11:36:22 CET 2001 Paolo Molaro <lupus@ximian.com>
+
+       * jit.c: use mono_install_trampoline (), instead of exporting
+       a function to a lower-level library.
+
+2001-11-16  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg (STRING_ARG): impl. a way to marshal strings. This
+       will be extensible to handle all possible kinds of marshalling
+       requirements. 
+
+       * jit.c (map_call_type): added MB_TERM_CALL_VOID
+       (mono_analyze_stack): impl. LDELEMA, reimplemented CALL
+       instructions to handle this arguments more effectively.
+
+2001-11-15  Dietmar Maurer  <dietmar@ximian.com>
+
+       * Makefile.am (mono_SOURCES): renamed testjit to mono
+
+       * x86.brg: added debugging support 
+
+       * testjit.c: added support for value types, CFG improvements
+
+       * emit-x86.c (enter_method): handle value types
+       (tree_allocate_regs): impl. a better way to handle chain rules
+
+2001-11-10  Dietmar Maurer  <dietmar@ximian.com>
+
+       * x86.brg (INITOBJ): bug fix: initialize data before use,
+       simplified the code.
+
+2001-11-09  Miguel de Icaza  <miguel@ximian.com>
+
+       * testjit.c (mono_analyze_stack): Remove compiler warning by
+       testing against NULL.
+
+2001-11-09  Dick Porter  <dick@ximian.com>
+
+       * Makefile.am (testjit_LDADD): Don't need THREAD_LIBS any more
+
+2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
+
+       * testjit.c (mono_analyze_stack): new BOX impl.
+
+       * x86.brg: implemented INITOBJ
+
+       * testjit.c (mono_analyze_stack): finished array support
+       (mono_analyze_stack): reimplemented DUP instruction
+
+2001-11-08  Dietmar Maurer  <dietmar@ximian.com>
+
+       * testjit.c (MAKE_STELEM, MAKE_LDELEM): we build a tree which
+       represents the address of the element. This way we can emit highly
+       optimized x86 instructions to access elements (using base+index+offset
+       adressing mode)
+
+2001-11-07  Miguel de Icaza  <miguel@ximian.com>
+
+       * mempool.c: Include string.h to kill warning.
+
+       * testjit.c: Add typecast to kill warning.
+
+       * x86.brg: Include string.h to eliminate warning.
+
+       * emit-x86.c (tree_allocate_regs): Fix arguments to g_warning to
+       kill warning.
+
+2001-11-07  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (enter_method): print out all method arguments
+       (x86_magic_trampoline): impl.
+       (arch_create_simple_jit_trampoline): we use different trampolines
+       for static methods (no need to write the address back into to
+       vtable).
+
+2001-11-06  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (arch_create_jit_trampoline): optimised trampoline to
+       use less the 16 bytes.
+
+       * x86.brg: code cleanup
+
+2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
+
+       * testjit.c: bug fixes.
+
+       * emit-x86.c (leave_method): print result values
+
+2001-11-03  Dietmar Maurer  <dietmar@ximian.com>
+
+       * emit-x86.c (enter_method): new debugging code
+       (leave_method): new debbuging code, this functions are called
+       when you use the new option --trace-calls
+
 2001-11-02  Dietmar Maurer  <dietmar@ximian.com>
 
        * testjit.c: impl. STELEM_XX, STELEM_XX