Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro * mini.c: mono_thread_current() can be called only after mono_runtime_init(): rearrange code to not call it early on. Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro * mini.c: allocate jump tables in the code mempools. Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro * mini.c, mini.h: make sure per-thread data allocated by the jit is freed. 2003-08-10 Miguel de Icaza * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from 12 to 16. This fixes bug #47453. Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro * mini-ppc.c: fixed indexed load and unsigned compares. 2003-08-06 Lluis Sanchez Gual * mini.c: reenabled installation of handler for thread abort signal. Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted by Laurent Morichetti . Disabled local cprop until it's fixed and actually useful. Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro * inssel-long32.brg: couple more opcodes implemented. Thu Jul 31 22:43:02 EDT 2003 Mark Crichton * mini-sparc.c: Even more opcodes implemeted. Thu Jul 31 19:36:03 EDT 2003 Mark Crichton * mini-sparc.c: More opcodes implemented. Thu Jul 31 15:16:26 EDT 2003 Mark Crichton * mini-sparc.c: More opcodes implemented. Wed Jul 30 22:31:02 EDT 2003 Mark Crichton * inssel-sparc.brg: Add some needed rules. Direct copy from PPC. * Makefile.am: Use inssel-sparc.brg * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep an assert happy for now. Wed Jul 30 20:44:07 EDT 2003 Mark Crichton * mini-sparc.c: Fixed compile errors. * exceptions-sparc.c: Same. We now produce a mono binary on sparc-linux. Yea. Wed Jul 30 14:10:12 EDT 2003 Mark Crichton * mini-sparc.c: Renamed registers. Also some macro cleanups. * exceptions-sparc.c, tramp-sparc.c: Various compile fixes. They compile, but do not work. Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c, mini-sparc.h, tramp-sparc.c: Beginning of sparc support from Mark Crichton and Christopher Taylor (ct@gentoo.org). Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro * mini.c: more opcodes implemented and better support for generics. Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro * cpu-g4.md, cpu-pentium.md: updates for new instructions. * mini.c, mini.h: first cut at generics support: some new instructions added and changed the behaviour of some of the existing ones. 2003-07-21 Miguel de Icaza * mini.c: Removed definition of metadata_shared mutex here. Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro * mini-x86.c: make vararg calls work for instance methods. Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode() returns the arguments in a separte list, now. Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro * aot.c, mini.c: updates for array type representation changes. Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro * mini.c: register function to perform jit shutdown. Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro * mini.c: use a faster allocator if possible. Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro * aot.c: some cleanups and portability changes. Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro * mini.c: use faster allocation for CEE_BOX if possible. Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields. Moved inlined mempcy code to its own function so that is can be reused. Added an inline memset function as well (optimized initobj). * cpu-pentium.md, inssel-x86.brg: add and use lea_membase. Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods. Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that arch code can setup the cpu for CLR execution, if needed. We use it on x86 to set the precision of FP operations. Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro * mini.c: disable some optimizations if we can guess they'll cost too much for a given method. 2003-06-17 Zoltan Varga * mini.h mini.c: Rework last patch based on suggestions by Paolo. 2003-06-17 Zoltan Varga * mini.h mini.c mini-x86.c: Added instruction level coverage info collection support. Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff is now implemented in the profiling API. Get rid of a couple of unnecessary global variables. 2003-06-15 Nick Drochak * basic-long.cs: tests for negative values for bigmul, and unsigned. * cpu-g4.md: add op_bigmul and op_bigmul_un * cpu_pentium.md: add op_bigmul_un * inssel-long32.brg: add rule for unsigned bigmul * mini-ops.h: define OP_BIGMUL_UN * mini-x86.c: THE BUG: handle (un)signed properly * mini.c: choose unsigned opcode if needed. This set of patches fixes bug #44291 2003-06-13 Dietmar Maurer * mini.c (optimize_branches): improved to handle all kinds of conditional branches. Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that don't raise exceptions. Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code to arch-specific files. 2003-06-09 Martin Baulig * Makefile.am (libs): Added $(LIBGC_LIBS). Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN and OP_ATAN (fixes bug#44293). Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro * Makefile.am, mini-x86.c: rename cpu description array to pentium_desc, since some compilers define the 'pentium' preprocessor symbol. 2003-05-28 Dietmar Maurer * mini.c (mini_select_instructions): add explicit branch if the following block is not the false target of a conditional branch - we need this with any optimization that reorder or remove bblocks * mini.c (optimize_branches): bug fixes 2003-06-06 Dietmar Maurer * mini.c (mono_method_to_ir): inline static readonly fields * ssa.c (fold_tree): start cfold support for long (very simple cases only) * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST) Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro * inssel.brg: fixed memcpy (bug #44219). 2003-06-05 Dick Porter * driver.c: Set the glib log levels to not abort if g_message recurses. g_set_prgname() has to happen before mini_init() so that the process handle gets the info. Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro * driver.c: add intrins to the default optimizations to get wider exposure. Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro * mini.h: some large basic blocks will overflow a 16-bit integers for symbolic registers. 2003-06-04 Dietmar Maurer * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes. (mono_arch_output_basic_block): fix bug 43499 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro * mini.c: kill duplicated definition of mono_debug_format. Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro * mini-x86.c, arrays.cs: fixed register allocation bug. 2003-06-04 Dietmar Maurer * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1 * mini.c (mini_get_opcode_for_method): inline IEEERemainder 2003-06-04 Gonzalo Paniagua Javier * mini.c: (print_method_from_ip): also print source location information if available. 2003-06-02 Dietmar Maurer * mini.c (mono_find_block_region): bug fix in region code (mini_method_compile): enable removing unreachable code again, but only in methods without exception clauses. Fri May 30 18:40:24 CEST 2003 Paolo Molaro * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h: Implemented arglist opcode and handling of TypedReference type. Fixed x86 call convention when a structure is returned. Minimal support for calling static vararg methods. 2003-05-30 Dietmar Maurer * mini.c (mini_method_compile): always remove unreachable code, because the code in them may be inconsistent (access to dead variables for example). Thu May 29 11:44:49 CEST 2003 Paolo Molaro * driver.c, debug-mini.c: warning fixes. Wed May 28 11:19:15 CEST 2003 Paolo Molaro * Makefile.am, jit.h, mini.h: install header for embedding mono. Tue May 27 17:56:12 CEST 2003 Paolo Molaro * mini.c: thread-static fields are registered in mono_class_vtable(), so ensure the function is called before checking for them. 2003-05-27 Dietmar Maurer * mini.c (optimize_branches): fix for bug 43586 * jit-icalls.c (mono_llmult_ovf): added an additional check for overflow (fixes Bug #43639) Tue May 27 11:33:53 CEST 2003 Paolo Molaro * mini.c, objects.cs: allow the use of stobj for primitive types. Tue May 27 10:33:53 CEST 2003 Paolo Molaro * mini.c: be less strict about argument checking until we support running the verifier. 2003-05-27 Nick Drochak * basic-long.cs: tests for (ulong)int * (ulong)int also * mini.c: use the same trick for (ulong)int * (ulong)int 2003-05-27 Nick Drochak * basic-long.cs: add regression test for (long)int * (long)int * cpu-pentium.md: add op_bigmul specification * inssel-long32.brg: add OP_BIGMUL rule * mini-ops.h: add OP_BIGMUL * mini-x86.c: register allocator: handle case where src1 needs to be in EAX. * mini.c: substitute special BIGMUL opcode in the tree for (long)int * (long)int Mon May 26 20:20:13 CEST 2003 Paolo Molaro * jit-icalls.c: call the type ctor on field access if needed. Mon May 26 15:21:21 CEST 2003 Paolo Molaro * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed to a method (including results of ldelema, bug#43207). 2003-05-26 Dietmar Maurer * graph.c (cfg_emit_one_loop_level): loop over all blocks. use colors to show exception handler blocks. * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures (fix for pinvoke7.cs). Mon May 26 12:11:53 CEST 2003 Paolo Molaro * mini.h, mini.c: ensure correct initialization order for types that require it. Prepare for lazy compilation of jit icall wrappers. Provide a name for opcode emulation to reduce unneeded mallocing. Fri May 23 16:08:54 CEST 2003 Paolo Molaro * mini-x86.c: better register restoring code and profiling support for tail calls. Fri May 23 15:30:53 CEST 2003 Paolo Molaro * mini.h, driver.c: prepare for leaf methods optimization. Fri May 23 15:28:32 CEST 2003 Paolo Molaro * mini.c: get targets of branches before converting a method. 2003-05-23 Dietmar Maurer * mini.c (optimize_branches): added some experimental code (disbaled) 2003-05-22 Dietmar Maurer * mini.c (optimize_branches): fix branch to branch optimization * exceptions-x86.c (mono_arch_handle_exception): bug fix. * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf if needed. 2003-05-21 Dietmar Maurer * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining. enable use of interface variables again. * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate I1 to registers because there is no simply way to sign extend 8bit quantities in caller saved registers on x86. * inssel-float.brg: set costs of some rules to 2 so that monobure always select the arch. specific ones if supplied, regardless of the order we pass the files to monoburg. Tue May 20 17:19:14 CEST 2003 Paolo Molaro * mini.c, mini-x86.c: since the magic trampoline for jumps can't patch the code directly, we do it as soon as the method gets compiled. Tue May 20 16:02:52 CEST 2003 Paolo Molaro * mini-x86.c, mini.h: introduce a new patching method to support CEE_JMP and tail calls. * mini.c: obey tail.call. Don't precompile methods target of CEE_JMP. * tramp-x86.c: new trampoline code to handle methods reached through a jump. 2003-05-20 Dietmar Maurer * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16 bit values to registers 2003-05-19 Dietmar Maurer * mini.c (mono_compile_get_interface_var): share interface variables if possible. 2003-05-16 Martin Baulig * debug-mini.c (mono_init_debugger): New function to initialize the debugger. This is not in the debugger since it needs to access some of mini's internals. 2003-05-16 Dietmar Maurer * mini.c (mono_method_to_ir): inlining fixes/cleanups Fri May 16 13:27:23 CEST 2003 Paolo Molaro * mini.c, mini-opts.h, inssel.brg: inline small memcpy for value type handling. 2003-05-16 Dietmar Maurer * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers (mono_method_check_inlining): enable inlining of all kinds of wrappers 2003-05-15 Lluis Sanchez Gual * mini.c: fixed little bug in CEE_NEWOBJ case when calling the constructor through a proxy. Thu May 15 17:17:27 CEST 2003 Paolo Molaro * jit-icalls.c, inssel.brg: fixes to array element address calculations. 2003-05-15 Dietmar Maurer * mini-x86.c (is_regsize_var): allocate pointer to registers Thu May 15 13:04:02 CEST 2003 Paolo Molaro * driver.c: fixed typo, added intrins to the set of optimizations tested with regressions. Thu May 15 11:57:42 CEST 2003 Paolo Molaro * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays. * jit-icalls.c, exceptions.cs: fixed index out of range checks, added test case. 2003-05-14 Dietmar Maurer * inssel.brg: remove some common pop instructions without side effects Wed May 14 12:40:31 CEST 2003 Paolo Molaro * inssel-x86.brg: fixed thinko in int to double conversions. Wed May 14 12:01:58 CEST 2003 Paolo Molaro * mini.c, jit-icalls.c: added runtime thread-static variable support. Tue May 13 22:02:06 CEST 2003 Paolo Molaro * inssel-long32.brg: two more missing instructions. 2003-05-13 Dietmar Maurer * mini.c (mono_emit_call_args): set the cil_code for all arguments if not already set. 2003-05-12 Zoltan Varga * mini-x86.c (mono_arch_output_basic_block): Handle negative zero correctly. * basic-float.cs: Added tests for negative zero. Sun May 11 14:56:27 CEST 2003 Paolo Molaro * inssel-long32.brg, basic-long.cs, exceptions.cs: handle a couple of missing operations for long casts, with test cases. 2003-05-11 Gonzalo Paniagua Javier * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception. 2003-05-09 Dietmar Maurer * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better code size estimation. 2003-05-08 Dietmar Maurer * mini.c (mono_jit_create_remoting_trampoline): make it work with abstract methods (fix bug 42542) * aot.c: add ability to handle array types 2003-05-08 Zoltan Varga * mini.c: Call the _specific versions of the object allocation functions if possible. Tue May 6 17:18:33 CEST 2003 Paolo Molaro * driver.c: call setlocale (). Tue May 6 14:38:22 CEST 2003 Paolo Molaro * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for windows build. 2003-05-05 Dietmar Maurer * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136) * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting wrappers (fix bug 42122) 2003-05-04 Martin Baulig * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes. * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g. s/mini_set_defaults/mono_set_defaults/g. 2003-05-04 Martin Baulig * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g. Sun May 4 11:48:08 CEST 2003 Paolo Molaro * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule (reported by Don Roberts). Fri May 2 18:36:45 CEST 2003 Paolo Molaro * mini.c: temporarily work around two bugs for this release. Fri May 2 17:37:29 CEST 2003 Paolo Molaro * Makefile.am: avoid linking libmono with GMODULE_LIBS, because that contains -export-dynamic and it makes using the ld script useless. * mini.h, main.c, driver.c: s/mini_main/mono_main/g. Fri May 2 12:52:32 CEST 2003 Paolo Molaro * mini.h, mini-x86.c, driver.c: disable optimizations not available on a specific cpu. Thu May 1 15:28:21 CEST 2003 Paolo Molaro * mini.c: make sure leave calls all the needed finally blocks, even when the target jumps out of multiple exception clauses. Thu May 1 15:18:26 CEST 2003 Paolo Molaro * ldscript, Makefile.am: add linker script to reduce the number of exported symbols (should also fix the issues with libwine defining some of the same symbols in io-layer). 2003-05-01 Zoltan Varga * driver.c (mini_main): Avoid assertion when no file name is given on the command line. Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro * driver.c: added --version/-V command line option. Added the inline optimization in the regression tests. Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro * mini.c, basic-calls.cs: when inlining, save arguments to locals according to the type in the method signature (fixes bug#42134). Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro * mini.c: when inlining, check this is not null only when needed (bug #42135). Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn . 2003-04-30 Gonzalo Paniagua Javier * driver.c: fixed bug #42100. 2003-04-29 Dietmar Maurer * mini.c (mono_method_to_ir): UNBOX need to CAST objects first Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro * mini.c: moved most of the code required to do inlining to its own function so it can be reused. Inline also ctors if appropriate. 2003-04-28 Zoltan Varga * Makefile.am: Link with -export-dynamic so shared libs loaded by the runtime can call mono API functions. 2003-04-27 Martin Baulig * debug-mini.c (mono_debug_init_method): Added `guint32 breakpoint_id' argument; if the method has a breakpoint, send a notification to the debugger. * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're running in the Mono Debugger, just pass the breakpoint number to mono_debug_init_method(). * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines. Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro * mini.c: allow some more unsafe compares. Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro * mini-x86.c, Makefile.am: make distcheck works (partially from a patch by Richard Lee ). * regset.c, regset.h: removed, they are unused. 2003-04-25 Dick Porter * driver.c: Usage reports the name as 'mono' not 'mini' * exceptions-x86.c: Build and run on freebsd Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro * Makefile.am: install the program with the 'mono' name and the library as libmono instead of mini and libmini. Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro * driver.c: provide the APIs for the embedding interface of the old jit. 2003-04-23 Dietmar Maurer * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775) 2003-04-23 Martin Baulig * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface. * driver.c: Added `--debug' command line argument to enable debugging support. 2003-04-23 Martin Baulig * debug.[ch]: Removed. The code is now in ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch]. * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the last six months. 2003-04-22 Dietmar Maurer * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525) 2003-04-17 Gonzalo Paniagua Javier * mini.c: (mini_cleanup): moved mono_runtime_cleanup call after the call to mono_domain_finalize. (mini_method_compile): use mono_method_profile* if the the option is enabled. 2003-04-17 Zoltan Varga * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized methods with their wrapper. * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized methods with their wrapper. * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with their wrapper. * mini.c (mono_method_to_ir): Subsitute synchronized methods with their wrapper. * mini.c (mono_method_check_inlining): Avoid inlining synchronized methods. 2003-04-17 Dietmar Maurer * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252 2003-04-16 Dietmar Maurer * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead of the mempool. This is slightly faster and uses less memory Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro * mini.c: avoid O(n) allocation for variables. Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro * mini.c: handle items on the stack after inlining methods. Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro * mini.c: make the method->opcode optimization dependent on MONO_OPT_INSTRINS and do it lazily. Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro * driver.c: print overall results at the end of regression run. Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro * inssel.brg: don't overwrite symbolic registers. Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro * inssel-x86.brg: fix conversion from long to float. 2003-04-11 Dietmar Maurer * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR) 2003-04-10 Zoltan Varga * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable. * driver.c: Added --print-vtable option as in the old JIT. Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro * inssel-long32.brg, exceptions.cs: fix conversions from long, too. Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro * inssel.brg, basic.cs: fixed checked conversions to byte and short. 2003-04-09 Zoltan Varga * mini.c regalloc.c regalloc.h: Fix memory leak. 2003-04-09 Dietmar Maurer * aot.c (mono_aot_get_method): register all used strings Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro * mini.c: always intern strings references with ldstr at compile time. Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro * Makefile.am: add BUILT_SOURCES. Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro * driver.c: give a better error message when the assembly to execute doesn't have an entry point. 2003-04-07 Dietmar Maurer * Makefile.am: added hack for automake * mono/mini/mini.c (mono_save_args): always copy arguments to keep correct sematics. * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls 22003-04-07 Martin Baulig * Makefile.am: Added Makefile.am. * debugger-main.c: Removed, this is now in the debugger where it belongs. * mini.pc.in: Call this package `mini' for the moment.