2 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
4 * mini.c: fixed buglet in initobj generic implementation for references.
6 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
8 * Makefile.am: make the version script conditional.
9 * jit-icalls.c: handle missing truncl().
11 2004-01-23 Zoltan Varga <vargaz@freemail.hu>
13 * exceptions.cs: Add more tests for double->int conversion.
15 * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
16 we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20 * driver.c: make --verbose --version emit an error
21 if the loaded corlib doesn't match the runtime version.
23 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
25 * mini-ppc.h: export ppc_patch().
26 * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
27 * tramp-ppc.c: call convention fixes: Linux/PPC support should be
28 on par or better than on MacOSX.
30 2004-01-19 Zoltan Varga <vargaz@freemail.hu>
32 * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
33 mono_lookup_pinvoke_call.
35 * mini-x86.c: Under windows, the default pinvoke calling convention is
36 stdcall. Fixes #52834.
38 * mini.c (optimize_branches): Add an upper bound to the number of
39 iterations to prevent infinite loops on strange loops. Fixes #53003.
41 2004-01-16 Zoltan Varga <vargaz@freemail.hu>
43 * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
44 and ISINST. Fixes #52093.
46 * objects.cs (test_0_vector_array_cast): New tests.
48 2004-01-15 Zoltan Varga <vargaz@freemail.hu>
50 * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
51 checking in Array.Set ().
53 * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
56 * object.cs (test_0_multi_array_cast): New regression test.
58 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
60 * exceptions-ppc.c: fix build on Linux/PPC.
62 2004-01-14 Zoltan Varga <vargaz@freemail.hu>
64 * tramp-x86.c (x86_magic_trampoline): Disable code patching when
65 running under valgrind.
66 (x86_magic_trampoline): Fix build bustage.
68 * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
69 negative values as well. This is needed for the encoding of the line number
70 info, since sometimes the line numbers are not in increasing order.
72 2004-01-13 Zoltan Varga <vargaz@freemail.hu>
74 * cpu-pentium.md (localloc): Increase the size of the localloc
75 instruction since it is a loop under Win32.
77 * debug-mini.c (record_line_number): Get rid of unneccesary memory
80 2004-01-09 Zoltan Varga <vargaz@freemail.hu>
82 * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c
83 tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from
84 Max Horn (max@quendi.de). Fix file names in comments.
86 2004-01-03 Zoltan Varga <vargaz@freemail.hu>
88 * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
90 (replace_usage): Avoid uninitialized variable warnings.
92 * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
93 and taking the address of valuetype variables.
95 2004-01-03 Patrik Torstensson
97 * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
98 for other purposes than FP later on.
100 2004-01-02 Zoltan Varga <vargaz@freemail.hu>
102 * mini.c (mono_method_to_ir): Prevent register allocation for arguments
105 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
107 * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
109 2003-12-30 Patrik Torstensson <p@rxc.se>
111 * mini-x86.h: Decreased number of availiable fp regs.
112 Solves corner cases with FP spilling.
114 2003-12-23 Patrik Torstensson <p@rxc.se>
116 * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
117 for floating point stack tracking / spilling on x86.
120 * basic-float.cs: added float mul overflow test.
122 2003-12-23 Zoltan Varga <vargaz@freemail.hu>
124 * mini.c (mono_method_to_ir): Add workaround for bug #51126.
126 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
128 * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
129 supports for cond branches that overflow the immediate
130 overflow offset. mcs can compile simple programs.
132 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
134 * exceptions-ppc.c: exception handling support wip:
135 finally handlers get run on exception.
137 2003-12-19 Zoltan Varga <vargaz@freemail.hu>
139 * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while
142 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
144 * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
145 initial support for stack walking and unwinding.
147 2003-12-18 Zoltan Varga <vargaz@freemail.hu>
149 * driver.c (mono_main): Make corlib-out-of-sync message more
150 descriptive. Also remove verify_corlib call.
152 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
154 * mini.c: make CEE_NEWARR calls and other emulated opcodes
155 not overlap with other call's arguments, too.
157 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
159 * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c:
160 move to arch-specific code the choice of arch-specific
161 intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
162 * mini.c: ensure emulation calls will not interleave
165 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
167 * tramp-ppc.c, basic-calls.cs: rework trampolines so that
168 the magic trampoline stack frame is dropped before executing
171 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
173 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
174 and integer to fp conversions. Added support for overflowing
175 arguments on the stack. Reserve a couple more registers as temps.
176 Added support for aot compilation (as output still needs to be
179 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
181 * mini-ppc.c, basic-long.cs: fix jumps to known labels.
182 Don't overwrite return register in some corner cases.
184 2003-12-13 Zoltan Varga <vargaz@freemail.hu>
186 * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
187 static constructors when AOT compiling.
189 * driver.c (mono_main): Call mono_check_corlib_version.
191 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
193 * cpu-g4.md, basic.cs: fixed div target register.
195 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
197 * mini-ppc.c, basic.cs: shl_imm fix with test.
199 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
201 * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing
202 structures by value. Misc fixes.
203 * objects.cs: more tests.
205 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
207 * mini-ppc.c: lconv.ovf.i implemented.
209 2003-12-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
212 (mini_init): don't error out if someone already called g_thread_init.
214 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
216 * exceptions-x86.c, exceptions-ppc.c: allow the exception object
217 to be any type per the spec. Fix abnormal memory usage when
218 the same object is repeatedly thrown.
220 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
222 * mini.c: check for overruns in IL code.
224 2003-12-09 Zoltan Varga <vargaz@freemail.hu>
226 * TODO: Add/remove some todo entries.
228 2003-12-08 Zoltan Varga <vargaz@freemail.hu>
230 * driver.c (mono_main): Call mono_verify_corlib.
232 2003-12-07 Lluis Sanchez Gual <lluis@ximian.com>
234 * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy.
235 This has been moved to mini.c
236 * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
237 type being casted is marshalbyref it could be a proxy, so instead of
238 emitting the type check code, emit a call to a runtime method that will
239 perform the check by calling CanCastTo if needed.
241 2003-12-06 Zoltan Varga <vargaz@freemail.hu>
243 * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
244 methods with large stack frames under Win32.
246 2003-12-04 Zoltan Varga <vargaz@freemail.hu>
248 * Makefile.am: Distribute regression tests.
250 * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
251 at the end instead of inserting each variable into the sorted list.
253 * linear-scan.c (mono_varlist_sort): New helper function.
255 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
257 * mini.c: ensure arguments and locals are within bounds.
259 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
261 * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and
264 2003-12-03 Zoltan Varga <vargaz@freemail.hu>
266 * mini.c (mono_cprop_copy_values): Fix crash.
268 * aot.c: Set verbosity back to 0.
270 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
272 * regalloc.c: complete memory leak fix by Laurent Morichetti
275 2003-12-03 Zoltan Varga <vargaz@freemail.hu>
277 * driver.c (main_thread_handler): Revert the previous patch.
279 * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
282 * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
283 memory from the memory pool.
285 * driver.c (main_thread_handler): Turn on all optimizations when
288 * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
289 an array for better performance.
291 * regalloc.c (mono_regstate_assign): Fix memory leak.
293 * debug-mini.c (mono_debug_serialize_debug_info): New function to
294 serialize the debug info.
296 * debug-mini.c (mono_debug_add_aot_method): New function to load the
297 debug info from the serialized representation.
299 * aot.c: Save debug info into the generated file and load it when
302 * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
304 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
306 * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
307 More FP-related fixes.
309 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
311 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
312 and register allocation buglet. Hello world now runs.
314 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
316 * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
317 * tramp-ppc.c: fixed class init trampoline.
318 * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
320 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
322 * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
323 mini.c: more ppc changes/fixes.
325 2003-11-27 Zoltan Varga <vargaz@freemail.hu>
327 * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
328 Also optimize the case when the arguments are the same in the caller
331 * iltests.il: Add tests for tail calls with valuetype arguments.
333 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
335 * mini-ppc.c: fixes for struct return type.
337 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
339 * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move
340 mono_spillvar_offset() to arch-specific code.
342 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
344 * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
346 2003-11-27 Zoltan Varga <vargaz@freemail.hu>
348 * exceptions-x86.c: Fix stack space leaks.
350 * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
351 registers from the lmf if the method has save_lmf set.
353 2003-11-26 Zoltan Varga <vargaz@freemail.hu>
355 * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
356 of icall wrappers into InvokeInDomain, since these are now per-domain.
358 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
360 * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
361 make some opcode emulation and intrinsic ops enabled/disabled
362 according to the architecture. More fixes.
364 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
366 * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
368 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
370 * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
371 arch-specific handling for 'this' and struct return type to
374 2003-11-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
376 * aot.c: prevent divide by zero error when reporting (it happened with
379 2003-11-25 Zoltan Varga <vargaz@freemail.hu>
381 * mini.h (inst_switch): Remove unused macro.
383 2003-11-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
386 (load_aot_module): free 'info->methods' and 'info' properly. No more
387 "free(): invalid pointer blah" messages when you have an old aot
390 2003-11-21 Lluis Sanchez Gual <lluis@ximian.com>
392 * jit-icalls.c, mini.c: Added support for context static fields.
394 2003-11-18 Zoltan Varga <vargaz@freemail.hu>
396 * mini.c (mono_method_blittable): Methods which set LastError are not
397 blittable either. Fixes #51108.
399 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
401 * mini.c: flush icache.
402 * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
404 2003-11-18 Zoltan Varga <vargaz@freemail.hu>
406 * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
408 2003-11-17 Zoltan Varga <vargaz@freemail.hu>
410 * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
413 * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with
416 * inssel.brg (CEE_MKREFANY): Fix AOT case.
418 2003-11-16 Zoltan Varga <vargaz@freemail.hu>
420 * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div
421 instruction when the result is discarded.
423 * iltests.il (test_0_div_regalloc): New regression test.
425 * arrays.cs: Fix compilation error.
427 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
429 * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
430 float rules to inssel-x86.brg: sane architectures with FP registers
431 don't need to implement these rules.
433 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
435 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
437 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
439 * mini.h, inssel-long32.brg: fixed endianess issues in int64
440 implementation of 32 bit systems.
442 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
444 * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
445 (Jeroen Zwartepoorte).
447 2003-11-12 Zoltan Varga <vargaz@freemail.hu>
449 * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
450 the caller and the callee matches.
452 * mini.c (mono_method_to_ir): Add comment.
454 * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
455 signbit is missing on some platforms.
457 2003-11-06 Zoltan Varga <vargaz@freemail.hu>
459 * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
461 * mini.c (setup_jit_tls_data): Call the new function.
463 * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
465 * mini-x86.c: Add experimental support for fast access to the lmf
466 structure under NPTL/Linux 2.6.x.
468 2003-11-06 Martin Baulig <martin@ximian.com>
470 * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
471 `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
474 2003-11-02 Martin Baulig <martin@ximian.com>
476 * mini.c (inflate_generic_field): New static method.
477 (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
478 generic instance and the field is declared in a generic type, call
479 inflate_generic_field() to inflate it. Fixes gen-28.cs.
481 2003-10-31 Zoltan Varga <vargaz@freemail.hu>
483 * mini.h mini.c (mono_method_same_domain): New function to return
484 whenever the caller and the callee are in the same domain.
486 * tramp-x86.c (x86_magic_trampoline): Use the new function.
488 2003-10-30 Martin Baulig <martin@ximian.com>
490 * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
491 similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
493 (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
494 MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS().
496 2003-10-29 Zoltan Varga <vargaz@freemail.hu>
498 * mini.c mini-ops.h inssel.brg: Implement undeniable exception
501 * mini.c (sigusr1_signal_handler): Move creation of the thread abort
502 object here, so it is in the correct appdomain etc.
504 2003-10-27 Zoltan Varga <vargaz@freemail.hu>
506 * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
508 (mono_method_to_ir): Avoid freeing the type created returned from
509 mono_type_create_from_typespec, since it is put into an internal cache
510 by the function. Fixes pointer.exe.
512 * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal
513 trampolines for icalls and pinvokes as well. Fixes #33569.
515 2003-10-24 Zoltan Varga <vargaz@freemail.hu>
517 * mini.c: Update after appdomain changes.
519 * mini.c (mono_jit_compile_method_inner): Allways compile native
520 method wrappers in the root domain, since there can only be one
521 instance of them, whose address is stored in method->info.
523 2003-10-16 Zoltan Varga <vargaz@freemail.hu>
525 * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
526 environment variable. Instead detect automatically whenever running
527 under valgrind using the magic macro RUNNING_ON_VALGRIND from
530 2003-10-16 Miguel de Icaza <miguel@ximian.com>
532 * trace.c, trace.h: New files that implement the new trace option
535 * driver.c: Document new --trace options.
537 * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
540 - if (mono_jit_trace_calls)
541 + if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
543 * mini.h: prototypes.
545 2003-10-15 Zoltan Varga <vargaz@freemail.hu>
547 * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
549 * mini.c inssel.brg: Implement typedefbyref opcodes.
551 * mini.c (mono_jit_compile_method): Remove unused local variable.
553 * mini.c (mono_jit_compile_method_inner): Ditto.
555 2003-10-12 Zoltan Varga <vargaz@freemail.hu>
557 * tramp-x86.c (x86_class_init_trampoline): Fix build.
559 * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
561 2003-10-10 Zoltan Varga <vargaz@freemail.hu>
563 * mini.c (mono_no_aot): Remove unused global variable.
565 * mini.c: Thread safety fixes.
567 2003-10-09 Zoltan Varga <vargaz@freemail.hu>
569 * mini.c (mono_create_class_init_trampoline): Add a lock around
570 class_init_hash_addr.
572 * arrays.cs (test_0_newarr_emulation): Add new regression test for
575 * mini.c: Decompose the NEWARR instruction before decomposing its
576 arguments. Fixes #30073.
578 2003-10-08 Zoltan Varga <vargaz@freemail.hu>
580 * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
583 2003-10-06 Zoltan Varga <vargaz@freemail.hu>
585 * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
587 * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
589 * driver.c: Add support for compiling icall wrappers to --compile.
591 2003-10-05 Zoltan Varga <vargaz@freemail.hu>
593 * inssel.brg: The empty value in class->interface_offsets is -1, not
596 2003-10-03 Zoltan Varga <vargaz@freemail.hu>
598 * objects.cs: New test for 'is' operator on an array of interfaces.
600 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
602 * tramp-ppc.c: update trampoline code to support jumps
603 and class initialization.
605 2003-09-30 Zoltan Varga <vargaz@freemail.hu>
607 * mini.c (mono_jit_compile_method): Fix reading of freed memory.
609 * inssel.brg (OP_UNBOXCAST): Fix #46027.
611 * inssel.brg (OP_UNBOX): Remove unused rule.
613 * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
614 region instead of one for each method. Fixes #47813.
616 2003-09-29 Zoltan Varga <vargaz@freemail.hu>
618 * exceptions.cs (test_0_nested_finally): New regression test for
619 nested exception handlers.
621 * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
623 * mini.c (mono_method_to_ir): Avoid inlining tail calls.
625 * mini.c (mono_method_to_ir): Fix tail recursion in the presence of
628 * mini.c (mono_method_check_inlining): Make the inlining limit
629 configurable by an environment variable.
631 * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
633 * mini.h: Bump AOT file version.
635 * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a
636 token, store the image along with the token, since the token might not
637 refer to the same image as the method containing the relocation,
640 2003-09-27 Zoltan Varga <vargaz@freemail.hu>
642 * mini.c (mono_precompile_assemblies): New function to compile
643 all methods in all loaded assemblies.
645 * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
647 * regalloc.h regalloc.c (MonoRegState): Change the type of
648 iassign and fassign to int*, since they can contain large negative
649 values if the register is spilled. Also added some comments. Fixes
652 * exceptions-x86.c (seh_handler): Fix handling of system exceptions
653 under Win32. Fixes #42964.
655 2003-09-26 Zoltan Varga <vargaz@freemail.hu>
657 * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
659 * aot.c: Added support for AOT compiling methods which contain calls
660 to wrappers. Currently, only remoting-invoke-with-check wrappers are
663 * driver.c (compile_all_methods): Run the compilation in a thread
664 managed by mono. Fixes #44023.
666 * mini.c (mono_codegen): Print full method name in verbose output.
668 * mini-x86.c (mono_arch_patch_code): Fix warning.
670 * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
671 jumps, since the method we are jumping to might be domain-specific.
673 * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
675 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
677 * inssel.brg: string chars are unsigned.
679 2003-09-15 Zoltan Varga <vargaz@freemail.hu>
681 * TODO: New todo item.
683 * tramp-x86.c (x86_class_init_trampoline): New trampoline function
684 which calls mono_runtime_class_init and patches the call site to
686 (mono_arch_create_class_init_trampoline): New arch specific function
687 to create a class init trampoline.
688 (create_trampoline_code): Generalized so it can create
689 class init trampolines as well.
691 * mini.c (helper_sig_class_init_trampoline): New helper variable.
692 (mono_create_class_init_trampoline): New function to create and cache
693 class init trampolines.
694 (mono_find_class_init_trampoline_by_addr): New function to lookup the
695 vtable given the address of a class init trampoline. Used by the
697 (mono_codegen): Generate a call to a trampoline instead of
698 mono_runtime_class_init in LDSFLD[A].
699 (mono_codegen): Add relocations for the new trampoline.
701 * mini.h mini-x86.c aot.c: Added a new relocation type:
702 MONO_PATCH_INFO_CLASS_INIT.
704 * mini.h: Bump AOT version number.
706 * aot.c: Create a copy of the loaded code instead of using the original
707 so methods which call each other will be close in memory, improving
710 * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
711 patch since it breaks the regression tests.
713 * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
714 for the register saving instruction sequence since the
715 frame_state_for function in glibc 2.3.2 don't seem to detect it.
717 2003-09-14 Zoltan Varga <vargaz@freemail.hu>
719 * TODO: Fix todo item && remove another.
721 2003-09-12 Zoltan Varga <vargaz@freemail.hu>
723 * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
726 * aot.c: Moved the check for MONO_LASTAOT into the initialization
727 function of the module.
729 * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
730 turning on/off the usage of AOT code. Got rid of mono_no_aot and the
731 --no-aot command line option.
733 2003-09-11 Zoltan Varga <vargaz@freemail.hu>
735 * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
736 by Bernie Solomon (bernard@ugsolutions.com).
738 * inssel.brg: Refactor the interface offset table related code into
739 its separate functions and add support for the AOT case.
741 2003-09-10 Zoltan Varga <vargaz@freemail.hu>
743 * aot.c (mono_aot_get_method_inner): Fix memory leak.
745 * aot.c: Added mono_aot_verbose variable and made all debugging
746 output depend on the value of this variable.
748 * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
749 method_label and info_label.
751 * mini.h mini-x86.c aot.c: Added a new relocation type
752 MONO_PATCH_INFO_IID for klass->interface_id.
754 * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
755 the MonoJitInfo structure.
757 * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
758 a non-root appdomain in shared mode.
760 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
762 * aot.c: make aot loader less verbose. Remove free of unused variable.
764 2003-09-08 Zoltan Varga <vargaz@freemail.hu>
766 * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
768 * .cvsignore: Added *.dll.
770 * mini.c (mono_print_tree_nl): New function callable while debugging.
772 * mini.c (mono_print_code): Export this.
774 * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
777 2003-09-05 Zoltan Varga <vargaz@freemail.hu>
779 * mini.h (MonoCompile): Added 'jit_info' field.
781 * mini.c (mini_method_compile): Save the generated MonoJitInfo into
782 the cfg structure, since it is needed by the AOT compiler.
784 * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
786 * aot.c: A major rewrite. Changes include:
787 - save exception tables for methods which have them.
788 - cache failed lookups in aot_get_method () to avoid the (slow) calls
790 - reworked the file format so it is now much smaller and needs
791 fewer relocation entries.
793 2003-09-04 Zoltan Varga <vargaz@freemail.hu>
795 * aot.c (load_aot_module): Fix build bustage on platforms without
798 2003-09-04 Martin Baulig <martin@ximian.com>
800 * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
802 2003-09-04 Zoltan Varga <vargaz@freemail.hu>
804 * TODO: Some new optimization ideas.
806 * aot.c: Move AOT module loading logic here from mono_assembly_open.
808 * aot.c: Save the optimization flags used to compile the code into
811 * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
812 support emitting domain specific code.
814 * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is
815 no longer domain neutral. It can be made domain neutral by compiling
816 with --optimize=shared.
818 * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
821 * driver.c mini.h mini.c: New --no-aot debugging option which disables
824 * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
826 * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
827 if there is no domain neutrality information.
829 2003-09-01 Zoltan Varga <vargaz@freemail.hu>
831 * aot.c (mono_compile_assembly): Emit a symbol containing the file
832 format version into the generated library.
834 * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
835 callee method into the caller since one of them could be shared.
837 * mini.h mini-x86.c aot.c: Added two new relocations so throwing
838 system exceptions from AOT code now works.
840 * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling
841 method if it is domain neutral and the callee is not.
843 * graph.c (cfg_emit_one_loop_level): Fix warning.
845 2003-08-30 Zoltan Varga <vargaz@freemail.hu>
847 * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
850 2003-08-29 Zoltan Varga <vargaz@freemail.hu>
852 * mini.c (mini_init): Call mono_marshal_init () explicitly since it
853 is needed by code which is executed before mono_runtime_init ().
854 Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
856 * mini.c (mono_thread_abort): Fix warning.
857 (mono_jit_compile_method): Call static constructor in the AOT case too.
859 * aot.c (mono_compile_assembly): Fix warning.
861 2003-08-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
863 * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
865 2003-08-28 Zoltan Varga <vargaz@freemail.hu>
867 * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
869 * cpu-pentium.md: Fix the length of call opcodes so they include the
870 ESP restoring instruction. Fixes #47968.
872 2003-08-28 Martin Baulig <martin@ximian.com>
874 * mini-x86.c (mono_arch_call_opcode): Added support for
875 MONO_TYPE_GENERICINST.
877 * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.
879 2003-08-27 Zoltan Varga <vargaz@freemail.hu>
881 * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
882 a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
884 * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
887 2003-08-26 Martin Baulig <martin@ximian.com>
889 * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
890 when reporting an error, set this to the actual error location.
891 (mono_method_to_ir): Report the correct error location if
892 get_basic_blocks() returned an error.
894 2003-08-25 Zoltan Varga <vargaz@freemail.hu>
896 * mini.c (mono_type_blittable): OBJECT is not blittable.
897 (mono_method_blittable): Methods which have marshalling descriptors
898 are not blittable either. Fixes #47842.
900 2003-08-22 Zoltan Varga <vargaz@freemail.hu>
902 * driver.c mini.c: Use an environment variable instead of a global
903 variable. Also fix the build.
905 * mini.c (mini_init): Call g_thread_init () to make glib thread-safe.
906 Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for
909 * driver.c mini.c: Added --with-valgrind option to turn off some
910 code which prevents mono from running under valgrind.
912 * mini.c (mono_emit_call_args): Fixed warning.
914 * mini.c (mono_emulate_opcode): Fixed warning.
916 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
918 * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
919 * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
920 regalloc.c, regalloc.h: specify available registers in arch-specific
921 code and support floats in the regallocator (patch by Laurent Morichetti
924 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
926 * mini.c: mono_thread_current() can be called only after
927 mono_runtime_init(): rearrange code to not call it early on.
929 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
931 * mini.c: allocate jump tables in the code mempools.
933 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
935 * mini.c, mini.h: make sure per-thread data allocated by the jit is
938 2003-08-10 Miguel de Icaza <miguel@ximian.com>
940 * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
941 12 to 16. This fixes bug #47453.
944 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
946 * mini-ppc.c: fixed indexed load and unsigned compares.
948 2003-08-06 Lluis Sanchez Gual <lluis@ximian.com>
950 * mini.c: reenabled installation of handler for
953 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
955 * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
956 by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
957 until it's fixed and actually useful.
959 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
961 * inssel-long32.brg: couple more opcodes implemented.
963 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
965 * mini-sparc.c: Even more opcodes implemeted.
967 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
969 * mini-sparc.c: More opcodes implemented.
971 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
973 * mini-sparc.c: More opcodes implemented.
975 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
977 * inssel-sparc.brg: Add some needed rules. Direct
979 * Makefile.am: Use inssel-sparc.brg
980 * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
981 an assert happy for now.
983 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
985 * mini-sparc.c: Fixed compile errors.
986 * exceptions-sparc.c: Same. We now produce a mono binary
989 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
991 * mini-sparc.c: Renamed registers. Also some macro cleanups.
992 * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
993 They compile, but do not work.
995 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
997 * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
998 mini-sparc.h, tramp-sparc.c: Beginning of sparc support
999 from Mark Crichton <crichton@gimp.org> and Christopher Taylor
1002 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
1004 * mini.c: more opcodes implemented and better support for generics.
1006 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
1008 * cpu-g4.md, cpu-pentium.md: updates for new instructions.
1009 * mini.c, mini.h: first cut at generics support: some new instructions
1010 added and changed the behaviour of some of the existing ones.
1012 2003-07-21 Miguel de Icaza <miguel@ximian.com>
1014 * mini.c: Removed definition of metadata_shared mutex here.
1016 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
1018 * mini-x86.c: make vararg calls work for instance methods.
1020 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
1022 * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
1023 returns the arguments in a separte list, now.
1025 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
1027 * aot.c, mini.c: updates for array type representation changes.
1029 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
1031 * mini.c: register function to perform jit shutdown.
1033 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
1035 * mini.c: use a faster allocator if possible.
1037 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
1039 * aot.c: some cleanups and portability changes.
1041 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1043 * mini.c: use faster allocation for CEE_BOX if possible.
1045 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
1047 * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
1048 Moved inlined mempcy code to its own function so that is can be
1049 reused. Added an inline memset function as well (optimized initobj).
1050 * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
1052 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1054 * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
1056 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
1058 * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
1059 arch code can setup the cpu for CLR execution, if needed.
1060 We use it on x86 to set the precision of FP operations.
1062 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
1064 * mini.c: disable some optimizations if we can guess they'll cost too
1065 much for a given method.
1067 2003-06-17 Zoltan Varga <vargaz@freemail.hu>
1069 * mini.h mini.c: Rework last patch based on suggestions by Paolo.
1071 2003-06-17 Zoltan Varga <vargaz@freemail.hu>
1072 * mini.h mini.c mini-x86.c: Added instruction level coverage
1073 info collection support.
1075 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1077 * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
1078 is now implemented in the profiling API. Get rid of a couple of
1079 unnecessary global variables.
1081 2003-06-15 Nick Drochak <ndrochak@gol.com>
1083 * basic-long.cs: tests for negative values for bigmul, and unsigned.
1084 * cpu-g4.md: add op_bigmul and op_bigmul_un
1085 * cpu_pentium.md: add op_bigmul_un
1086 * inssel-long32.brg: add rule for unsigned bigmul
1087 * mini-ops.h: define OP_BIGMUL_UN
1088 * mini-x86.c: THE BUG: handle (un)signed properly
1089 * mini.c: choose unsigned opcode if needed.
1090 This set of patches fixes bug #44291
1092 2003-06-13 Dietmar Maurer <dietmar@ximian.com>
1094 * mini.c (optimize_branches): improved to handle all kinds of
1095 conditional branches.
1097 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
1099 * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
1100 don't raise exceptions.
1102 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
1104 * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
1105 to arch-specific files.
1107 2003-06-09 Martin Baulig <martin@ximian.com>
1109 * Makefile.am (libs): Added $(LIBGC_LIBS).
1111 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
1113 * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
1114 and OP_ATAN (fixes bug#44293).
1116 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
1118 * Makefile.am, mini-x86.c: rename cpu description array to
1119 pentium_desc, since some compilers define the 'pentium' preprocessor
1122 2003-05-28 Dietmar Maurer <dietmar@ximian.com>
1124 * mini.c (mini_select_instructions): add explicit branch if the
1125 following block is not the false target of a conditional branch -
1126 we need this with any optimization that reorder or remove bblocks
1128 * mini.c (optimize_branches): bug fixes
1130 2003-06-06 Dietmar Maurer <dietmar@ximian.com>
1132 * mini.c (mono_method_to_ir): inline static readonly fields
1134 * ssa.c (fold_tree): start cfold support for long (very simple
1137 * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
1139 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
1141 * inssel.brg: fixed memcpy (bug #44219).
1143 2003-06-05 Dick Porter <dick@ximian.com>
1145 * driver.c: Set the glib log levels to not abort if g_message
1148 g_set_prgname() has to happen before mini_init() so that the
1149 process handle gets the info.
1151 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1153 * driver.c: add intrins to the default optimizations to get wider
1156 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
1158 * mini.h: some large basic blocks will overflow a 16-bit
1159 integers for symbolic registers.
1161 2003-06-04 Dietmar Maurer <dietmar@ximian.com>
1163 * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
1164 (mono_arch_output_basic_block): fix bug 43499
1166 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
1168 * mini.c: kill duplicated definition of mono_debug_format.
1170 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
1172 * mini-x86.c, arrays.cs: fixed register allocation bug.
1174 2003-06-04 Dietmar Maurer <dietmar@ximian.com>
1176 * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
1178 * mini.c (mini_get_opcode_for_method): inline IEEERemainder
1180 2003-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1183 (print_method_from_ip): also print source location information if
1186 2003-06-02 Dietmar Maurer <dietmar@ximian.com>
1188 * mini.c (mono_find_block_region): bug fix in region code
1189 (mini_method_compile): enable removing unreachable code again, but
1190 only in methods without exception clauses.
1192 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
1194 * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
1195 Implemented arglist opcode and handling of TypedReference type.
1196 Fixed x86 call convention when a structure is returned.
1197 Minimal support for calling static vararg methods.
1199 2003-05-30 Dietmar Maurer <dietmar@ximian.com>
1201 * mini.c (mini_method_compile): always remove unreachable code,
1202 because the code in them may be inconsistent (access to dead
1203 variables for example).
1205 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
1207 * driver.c, debug-mini.c: warning fixes.
1209 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
1211 * Makefile.am, jit.h, mini.h: install header for embedding mono.
1213 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
1215 * mini.c: thread-static fields are registered in mono_class_vtable(),
1216 so ensure the function is called before checking for them.
1218 2003-05-27 Dietmar Maurer <dietmar@ximian.com>
1220 * mini.c (optimize_branches): fix for bug 43586
1222 * jit-icalls.c (mono_llmult_ovf): added an additional check for
1223 overflow (fixes Bug #43639)
1225 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1227 * mini.c, objects.cs: allow the use of stobj for primitive types.
1229 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1231 * mini.c: be less strict about argument checking until we support
1232 running the verifier.
1234 2003-05-27 Nick Drochak <ndrochak@gol.com>
1236 * basic-long.cs: tests for (ulong)int * (ulong)int also
1237 * mini.c: use the same trick for (ulong)int * (ulong)int
1239 2003-05-27 Nick Drochak <ndrochak@gol.com>
1241 * basic-long.cs: add regression test for (long)int * (long)int
1242 * cpu-pentium.md: add op_bigmul specification
1243 * inssel-long32.brg: add OP_BIGMUL rule
1244 * mini-ops.h: add OP_BIGMUL
1245 * mini-x86.c: register allocator: handle case where src1 needs to be
1247 * mini.c: substitute special BIGMUL opcode in the tree for
1248 (long)int * (long)int
1250 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
1252 * jit-icalls.c: call the type ctor on field access if needed.
1254 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
1256 * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
1257 to a method (including results of ldelema, bug#43207).
1259 2003-05-26 Dietmar Maurer <dietmar@ximian.com>
1261 * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
1262 colors to show exception handler blocks.
1264 * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
1265 (fix for pinvoke7.cs).
1267 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1269 * mini.h, mini.c: ensure correct initialization order for types that
1270 require it. Prepare for lazy compilation of jit icall wrappers.
1271 Provide a name for opcode emulation to reduce unneeded mallocing.
1273 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
1275 * mini-x86.c: better register restoring code and profiling
1276 support for tail calls.
1278 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1280 * mini.h, driver.c: prepare for leaf methods optimization.
1282 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
1284 * mini.c: get targets of branches before converting a method.
1286 2003-05-23 Dietmar Maurer <dietmar@ximian.com>
1288 * mini.c (optimize_branches): added some experimental code (disbaled)
1290 2003-05-22 Dietmar Maurer <dietmar@ximian.com>
1292 * mini.c (optimize_branches): fix branch to branch optimization
1294 * exceptions-x86.c (mono_arch_handle_exception): bug fix.
1296 * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
1298 * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
1300 * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
1303 2003-05-21 Dietmar Maurer <dietmar@ximian.com>
1305 * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
1306 enable use of interface variables again.
1308 * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
1309 I1 to registers because there is no simply way to sign extend 8bit
1310 quantities in caller saved registers on x86.
1312 * inssel-float.brg: set costs of some rules to 2 so
1313 that monobure always select the arch. specific ones if supplied,
1314 regardless of the order we pass the files to monoburg.
1316 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1318 * mini.c, mini-x86.c: since the magic trampoline for jumps
1319 can't patch the code directly, we do it as soon as the
1320 method gets compiled.
1322 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
1324 * mini-x86.c, mini.h: introduce a new patching method
1325 to support CEE_JMP and tail calls.
1326 * mini.c: obey tail.call. Don't precompile methods target
1328 * tramp-x86.c: new trampoline code to handle methods
1329 reached through a jump.
1331 2003-05-20 Dietmar Maurer <dietmar@ximian.com>
1333 * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
1334 bit values to registers
1336 2003-05-19 Dietmar Maurer <dietmar@ximian.com>
1338 * mini.c (mono_compile_get_interface_var): share interface
1339 variables if possible.
1341 2003-05-16 Martin Baulig <martin@ximian.com>
1343 * debug-mini.c (mono_init_debugger): New function to initialize
1344 the debugger. This is not in the debugger since it needs to
1345 access some of mini's internals.
1347 2003-05-16 Dietmar Maurer <dietmar@ximian.com>
1349 * mini.c (mono_method_to_ir): inlining fixes/cleanups
1351 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
1353 * mini.c, mini-opts.h, inssel.brg: inline small memcpy
1354 for value type handling.
1356 2003-05-16 Dietmar Maurer <dietmar@ximian.com>
1358 * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
1359 (mono_method_check_inlining): enable inlining of all kinds of wrappers
1361 2003-05-15 Lluis Sanchez Gual <lluis@ideary.com>
1363 * mini.c: fixed little bug in CEE_NEWOBJ case when calling
1364 the constructor through a proxy.
1366 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
1368 * jit-icalls.c, inssel.brg: fixes to array element address
1371 2003-05-15 Dietmar Maurer <dietmar@ximian.com>
1373 * mini-x86.c (is_regsize_var): allocate pointer to registers
1375 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
1377 * driver.c: fixed typo, added intrins to the set of optimizations
1378 tested with regressions.
1380 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
1382 * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
1383 * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
1386 2003-05-14 Dietmar Maurer <dietmar@ximian.com>
1388 * inssel.brg: remove some common pop instructions without side effects
1390 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
1392 * inssel-x86.brg: fixed thinko in int to double conversions.
1394 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
1396 * mini.c, jit-icalls.c: added runtime thread-static variable support.
1398 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
1400 * inssel-long32.brg: two more missing instructions.
1402 2003-05-13 Dietmar Maurer <dietmar@ximian.com>
1404 * mini.c (mono_emit_call_args): set the cil_code for all arguments
1407 2003-05-12 Zoltan Varga <vargaz@freemail.hu>
1409 * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
1412 * basic-float.cs: Added tests for negative zero.
1414 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
1416 * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
1417 a couple of missing operations for long casts, with test cases.
1419 2003-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1421 * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
1423 2003-05-09 Dietmar Maurer <dietmar@ximian.com>
1425 * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
1426 code size estimation.
1428 2003-05-08 Dietmar Maurer <dietmar@ximian.com>
1430 * mini.c (mono_jit_create_remoting_trampoline): make it work with
1431 abstract methods (fix bug 42542)
1433 * aot.c: add ability to handle array types
1435 2003-05-08 Zoltan Varga <vargaz@freemail.hu>
1437 * mini.c: Call the _specific versions of the object allocation
1438 functions if possible.
1440 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
1442 * driver.c: call setlocale ().
1444 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
1446 * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
1449 2003-05-05 Dietmar Maurer <dietmar@ximian.com>
1451 * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
1453 * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
1454 wrappers (fix bug 42122)
1456 2003-05-04 Martin Baulig <martin@ximian.com>
1458 * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
1460 * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
1461 s/mini_set_defaults/mono_set_defaults/g.
1463 2003-05-04 Martin Baulig <martin@ximian.com>
1465 * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
1467 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
1469 * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
1470 (reported by Don Roberts).
1472 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
1474 * mini.c: temporarily work around two bugs for this release.
1476 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1478 * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
1479 that contains -export-dynamic and it makes using the ld script
1481 * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
1483 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
1485 * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
1488 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
1490 * mini.c: make sure leave calls all the needed finally blocks,
1491 even when the target jumps out of multiple exception clauses.
1493 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
1495 * ldscript, Makefile.am: add linker script to reduce the number of
1496 exported symbols (should also fix the issues with libwine defining
1497 some of the same symbols in io-layer).
1499 2003-05-01 Zoltan Varga <vargaz@freemail.hu>
1501 * driver.c (mini_main): Avoid assertion when no file name is given on
1504 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
1506 * driver.c: added --version/-V command line option.
1507 Added the inline optimization in the regression tests.
1509 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
1511 * mini.c, basic-calls.cs: when inlining, save arguments to locals according
1512 to the type in the method signature (fixes bug#42134).
1514 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
1516 * mini.c: when inlining, check this is not null only when needed (bug #42135).
1518 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
1520 * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
1522 2003-04-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1524 * driver.c: fixed bug #42100.
1526 2003-04-29 Dietmar Maurer <dietmar@ximian.com>
1528 * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
1530 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1532 * mini.c: moved most of the code required to do inlining to its own
1533 function so it can be reused. Inline also ctors if appropriate.
1535 2003-04-28 Zoltan Varga <vargaz@freemail.hu>
1537 * Makefile.am: Link with -export-dynamic so shared libs loaded by
1538 the runtime can call mono API functions.
1540 2003-04-27 Martin Baulig <martin@ximian.com>
1542 * debug-mini.c (mono_debug_init_method): Added
1543 `guint32 breakpoint_id' argument; if the method has a breakpoint,
1544 send a notification to the debugger.
1546 * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
1547 running in the Mono Debugger, just pass the breakpoint number to
1548 mono_debug_init_method().
1550 * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
1552 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
1554 * mini.c: allow some more unsafe compares.
1556 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
1558 * mini-x86.c, Makefile.am: make distcheck works (partially from
1559 a patch by Richard Lee <r.h.lee@attbi.com>).
1560 * regset.c, regset.h: removed, they are unused.
1562 2003-04-25 Dick Porter <dick@ximian.com>
1564 * driver.c: Usage reports the name as 'mono' not 'mini'
1565 * exceptions-x86.c: Build and run on freebsd
1567 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
1569 * Makefile.am: install the program with the 'mono' name and
1570 the library as libmono instead of mini and libmini.
1572 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
1574 * driver.c: provide the APIs for the embedding interface of the old jit.
1576 2003-04-23 Dietmar Maurer <dietmar@ximian.com>
1578 * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
1580 2003-04-23 Martin Baulig <martin@ximian.com>
1582 * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
1584 * driver.c: Added `--debug' command line argument to enable
1587 2003-04-23 Martin Baulig <martin@ximian.com>
1589 * debug.[ch]: Removed. The code is now in
1590 ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
1592 * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
1595 2003-04-22 Dietmar Maurer <dietmar@ximian.com>
1597 * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
1599 2003-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1602 (mini_cleanup): moved mono_runtime_cleanup call after the call to
1603 mono_domain_finalize.
1604 (mini_method_compile): use mono_method_profile* if the the option is
1607 2003-04-17 Zoltan Varga <vargaz@freemail.hu>
1609 * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
1610 methods with their wrapper.
1612 * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
1613 methods with their wrapper.
1615 * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
1618 * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
1621 * mini.c (mono_method_check_inlining): Avoid inlining synchronized
1624 2003-04-17 Dietmar Maurer <dietmar@ximian.com>
1626 * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
1628 2003-04-16 Dietmar Maurer <dietmar@ximian.com>
1630 * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
1631 of the mempool. This is slightly faster and uses less memory
1633 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1635 * mini.c: avoid O(n) allocation for variables.
1637 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
1639 * mini.c: handle items on the stack after inlining methods.
1641 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
1643 * mini.c: make the method->opcode optimization dependent
1644 on MONO_OPT_INSTRINS and do it lazily.
1646 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
1648 * driver.c: print overall results at the end of regression run.
1650 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
1652 * inssel.brg: don't overwrite symbolic registers.
1654 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
1656 * inssel-x86.brg: fix conversion from long to float.
1658 2003-04-11 Dietmar Maurer <dietmar@ximian.com>
1660 * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
1662 2003-04-10 Zoltan Varga <vargaz@freemail.hu>
1664 * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
1666 * driver.c: Added --print-vtable option as in the old JIT.
1668 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
1670 * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
1672 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
1674 * inssel.brg, basic.cs: fixed checked conversions to byte and short.
1676 2003-04-09 Zoltan Varga <vargaz@freemail.hu>
1678 * mini.c regalloc.c regalloc.h: Fix memory leak.
1680 2003-04-09 Dietmar Maurer <dietmar@ximian.com>
1682 * aot.c (mono_aot_get_method): register all used strings
1684 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
1686 * mini.c: always intern strings references with ldstr at compile time.
1688 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
1690 * Makefile.am: add BUILT_SOURCES.
1692 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
1694 * driver.c: give a better error message when the assembly to execute
1695 doesn't have an entry point.
1697 2003-04-07 Dietmar Maurer <dietmar@ximian.com>
1699 * Makefile.am: added hack for automake
1701 * mono/mini/mini.c (mono_save_args): always copy arguments to keep
1704 * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
1706 22003-04-07 Martin Baulig <martin@ximian.com>
1708 * Makefile.am: Added Makefile.am.
1710 * debugger-main.c: Removed, this is now in the debugger where it
1713 * mini.pc.in: Call this package `mini' for the moment.