1 2004-01-16 Zoltan Varga <vargaz@freemail.hu>
3 * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
4 and ISINST. Fixes #52093.
6 * objects.cs (test_0_vector_array_cast): New tests.
8 2004-01-15 Zoltan Varga <vargaz@freemail.hu>
10 * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
11 checking in Array.Set ().
13 * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16 * object.cs (test_0_multi_array_cast): New regression test.
18 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
20 * exceptions-ppc.c: fix build on Linux/PPC.
22 2004-01-14 Zoltan Varga <vargaz@freemail.hu>
24 * tramp-x86.c (x86_magic_trampoline): Disable code patching when
25 running under valgrind.
26 (x86_magic_trampoline): Fix build bustage.
28 * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
29 negative values as well. This is needed for the encoding of the line number
30 info, since sometimes the line numbers are not in increasing order.
32 2004-01-13 Zoltan Varga <vargaz@freemail.hu>
34 * cpu-pentium.md (localloc): Increase the size of the localloc
35 instruction since it is a loop under Win32.
37 * debug-mini.c (record_line_number): Get rid of unneccesary memory
40 2004-01-09 Zoltan Varga <vargaz@freemail.hu>
42 * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c
43 tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from
44 Max Horn (max@quendi.de). Fix file names in comments.
46 2004-01-03 Zoltan Varga <vargaz@freemail.hu>
48 * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
50 (replace_usage): Avoid uninitialized variable warnings.
52 * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
53 and taking the address of valuetype variables.
55 2004-01-03 Patrik Torstensson
57 * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
58 for other purposes than FP later on.
60 2004-01-02 Zoltan Varga <vargaz@freemail.hu>
62 * mini.c (mono_method_to_ir): Prevent register allocation for arguments
65 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
67 * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
69 2003-12-30 Patrik Torstensson <p@rxc.se>
71 * mini-x86.h: Decreased number of availiable fp regs.
72 Solves corner cases with FP spilling.
74 2003-12-23 Patrik Torstensson <p@rxc.se>
76 * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
77 for floating point stack tracking / spilling on x86.
80 * basic-float.cs: added float mul overflow test.
82 2003-12-23 Zoltan Varga <vargaz@freemail.hu>
84 * mini.c (mono_method_to_ir): Add workaround for bug #51126.
86 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
88 * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
89 supports for cond branches that overflow the immediate
90 overflow offset. mcs can compile simple programs.
92 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
94 * exceptions-ppc.c: exception handling support wip:
95 finally handlers get run on exception.
97 2003-12-19 Zoltan Varga <vargaz@freemail.hu>
99 * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while
102 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
104 * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
105 initial support for stack walking and unwinding.
107 2003-12-18 Zoltan Varga <vargaz@freemail.hu>
109 * driver.c (mono_main): Make corlib-out-of-sync message more
110 descriptive. Also remove verify_corlib call.
112 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
114 * mini.c: make CEE_NEWARR calls and other emulated opcodes
115 not overlap with other call's arguments, too.
117 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
119 * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c:
120 move to arch-specific code the choice of arch-specific
121 intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
122 * mini.c: ensure emulation calls will not interleave
125 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
127 * tramp-ppc.c, basic-calls.cs: rework trampolines so that
128 the magic trampoline stack frame is dropped before executing
131 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
133 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
134 and integer to fp conversions. Added support for overflowing
135 arguments on the stack. Reserve a couple more registers as temps.
136 Added support for aot compilation (as output still needs to be
139 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
141 * mini-ppc.c, basic-long.cs: fix jumps to known labels.
142 Don't overwrite return register in some corner cases.
144 2003-12-13 Zoltan Varga <vargaz@freemail.hu>
146 * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
147 static constructors when AOT compiling.
149 * driver.c (mono_main): Call mono_check_corlib_version.
151 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
153 * cpu-g4.md, basic.cs: fixed div target register.
155 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
157 * mini-ppc.c, basic.cs: shl_imm fix with test.
159 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
161 * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing
162 structures by value. Misc fixes.
163 * objects.cs: more tests.
165 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
167 * mini-ppc.c: lconv.ovf.i implemented.
169 2003-12-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
172 (mini_init): don't error out if someone already called g_thread_init.
174 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
176 * exceptions-x86.c, exceptions-ppc.c: allow the exception object
177 to be any type per the spec. Fix abnormal memory usage when
178 the same object is repeatedly thrown.
180 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
182 * mini.c: check for overruns in IL code.
184 2003-12-09 Zoltan Varga <vargaz@freemail.hu>
186 * TODO: Add/remove some todo entries.
188 2003-12-08 Zoltan Varga <vargaz@freemail.hu>
190 * driver.c (mono_main): Call mono_verify_corlib.
192 2003-12-07 Lluis Sanchez Gual <lluis@ximian.com>
194 * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy.
195 This has been moved to mini.c
196 * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
197 type being casted is marshalbyref it could be a proxy, so instead of
198 emitting the type check code, emit a call to a runtime method that will
199 perform the check by calling CanCastTo if needed.
201 2003-12-06 Zoltan Varga <vargaz@freemail.hu>
203 * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
204 methods with large stack frames under Win32.
206 2003-12-04 Zoltan Varga <vargaz@freemail.hu>
208 * Makefile.am: Distribute regression tests.
210 * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
211 at the end instead of inserting each variable into the sorted list.
213 * linear-scan.c (mono_varlist_sort): New helper function.
215 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
217 * mini.c: ensure arguments and locals are within bounds.
219 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
221 * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and
224 2003-12-03 Zoltan Varga <vargaz@freemail.hu>
226 * mini.c (mono_cprop_copy_values): Fix crash.
228 * aot.c: Set verbosity back to 0.
230 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
232 * regalloc.c: complete memory leak fix by Laurent Morichetti
235 2003-12-03 Zoltan Varga <vargaz@freemail.hu>
237 * driver.c (main_thread_handler): Revert the previous patch.
239 * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
242 * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
243 memory from the memory pool.
245 * driver.c (main_thread_handler): Turn on all optimizations when
248 * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
249 an array for better performance.
251 * regalloc.c (mono_regstate_assign): Fix memory leak.
253 * debug-mini.c (mono_debug_serialize_debug_info): New function to
254 serialize the debug info.
256 * debug-mini.c (mono_debug_add_aot_method): New function to load the
257 debug info from the serialized representation.
259 * aot.c: Save debug info into the generated file and load it when
262 * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
264 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
266 * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
267 More FP-related fixes.
269 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
271 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
272 and register allocation buglet. Hello world now runs.
274 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
276 * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
277 * tramp-ppc.c: fixed class init trampoline.
278 * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
280 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
282 * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
283 mini.c: more ppc changes/fixes.
285 2003-11-27 Zoltan Varga <vargaz@freemail.hu>
287 * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
288 Also optimize the case when the arguments are the same in the caller
291 * iltests.il: Add tests for tail calls with valuetype arguments.
293 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
295 * mini-ppc.c: fixes for struct return type.
297 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
299 * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move
300 mono_spillvar_offset() to arch-specific code.
302 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
304 * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
306 2003-11-27 Zoltan Varga <vargaz@freemail.hu>
308 * exceptions-x86.c: Fix stack space leaks.
310 * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
311 registers from the lmf if the method has save_lmf set.
313 2003-11-26 Zoltan Varga <vargaz@freemail.hu>
315 * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
316 of icall wrappers into InvokeInDomain, since these are now per-domain.
318 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
320 * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
321 make some opcode emulation and intrinsic ops enabled/disabled
322 according to the architecture. More fixes.
324 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
326 * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
328 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
330 * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
331 arch-specific handling for 'this' and struct return type to
334 2003-11-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
336 * aot.c: prevent divide by zero error when reporting (it happened with
339 2003-11-25 Zoltan Varga <vargaz@freemail.hu>
341 * mini.h (inst_switch): Remove unused macro.
343 2003-11-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
346 (load_aot_module): free 'info->methods' and 'info' properly. No more
347 "free(): invalid pointer blah" messages when you have an old aot
350 2003-11-21 Lluis Sanchez Gual <lluis@ximian.com>
352 * jit-icalls.c, mini.c: Added support for context static fields.
354 2003-11-18 Zoltan Varga <vargaz@freemail.hu>
356 * mini.c (mono_method_blittable): Methods which set LastError are not
357 blittable either. Fixes #51108.
359 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
361 * mini.c: flush icache.
362 * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
364 2003-11-18 Zoltan Varga <vargaz@freemail.hu>
366 * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
368 2003-11-17 Zoltan Varga <vargaz@freemail.hu>
370 * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
373 * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with
376 * inssel.brg (CEE_MKREFANY): Fix AOT case.
378 2003-11-16 Zoltan Varga <vargaz@freemail.hu>
380 * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div
381 instruction when the result is discarded.
383 * iltests.il (test_0_div_regalloc): New regression test.
385 * arrays.cs: Fix compilation error.
387 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
389 * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
390 float rules to inssel-x86.brg: sane architectures with FP registers
391 don't need to implement these rules.
393 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
395 * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
397 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
399 * mini.h, inssel-long32.brg: fixed endianess issues in int64
400 implementation of 32 bit systems.
402 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
404 * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
405 (Jeroen Zwartepoorte).
407 2003-11-12 Zoltan Varga <vargaz@freemail.hu>
409 * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
410 the caller and the callee matches.
412 * mini.c (mono_method_to_ir): Add comment.
414 * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
415 signbit is missing on some platforms.
417 2003-11-06 Zoltan Varga <vargaz@freemail.hu>
419 * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
421 * mini.c (setup_jit_tls_data): Call the new function.
423 * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
425 * mini-x86.c: Add experimental support for fast access to the lmf
426 structure under NPTL/Linux 2.6.x.
428 2003-11-06 Martin Baulig <martin@ximian.com>
430 * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
431 `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
434 2003-11-02 Martin Baulig <martin@ximian.com>
436 * mini.c (inflate_generic_field): New static method.
437 (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
438 generic instance and the field is declared in a generic type, call
439 inflate_generic_field() to inflate it. Fixes gen-28.cs.
441 2003-10-31 Zoltan Varga <vargaz@freemail.hu>
443 * mini.h mini.c (mono_method_same_domain): New function to return
444 whenever the caller and the callee are in the same domain.
446 * tramp-x86.c (x86_magic_trampoline): Use the new function.
448 2003-10-30 Martin Baulig <martin@ximian.com>
450 * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
451 similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
453 (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
454 MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS().
456 2003-10-29 Zoltan Varga <vargaz@freemail.hu>
458 * mini.c mini-ops.h inssel.brg: Implement undeniable exception
461 * mini.c (sigusr1_signal_handler): Move creation of the thread abort
462 object here, so it is in the correct appdomain etc.
464 2003-10-27 Zoltan Varga <vargaz@freemail.hu>
466 * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
468 (mono_method_to_ir): Avoid freeing the type created returned from
469 mono_type_create_from_typespec, since it is put into an internal cache
470 by the function. Fixes pointer.exe.
472 * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal
473 trampolines for icalls and pinvokes as well. Fixes #33569.
475 2003-10-24 Zoltan Varga <vargaz@freemail.hu>
477 * mini.c: Update after appdomain changes.
479 * mini.c (mono_jit_compile_method_inner): Allways compile native
480 method wrappers in the root domain, since there can only be one
481 instance of them, whose address is stored in method->info.
483 2003-10-16 Zoltan Varga <vargaz@freemail.hu>
485 * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
486 environment variable. Instead detect automatically whenever running
487 under valgrind using the magic macro RUNNING_ON_VALGRIND from
490 2003-10-16 Miguel de Icaza <miguel@ximian.com>
492 * trace.c, trace.h: New files that implement the new trace option
495 * driver.c: Document new --trace options.
497 * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
500 - if (mono_jit_trace_calls)
501 + if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
503 * mini.h: prototypes.
505 2003-10-15 Zoltan Varga <vargaz@freemail.hu>
507 * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
509 * mini.c inssel.brg: Implement typedefbyref opcodes.
511 * mini.c (mono_jit_compile_method): Remove unused local variable.
513 * mini.c (mono_jit_compile_method_inner): Ditto.
515 2003-10-12 Zoltan Varga <vargaz@freemail.hu>
517 * tramp-x86.c (x86_class_init_trampoline): Fix build.
519 * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
521 2003-10-10 Zoltan Varga <vargaz@freemail.hu>
523 * mini.c (mono_no_aot): Remove unused global variable.
525 * mini.c: Thread safety fixes.
527 2003-10-09 Zoltan Varga <vargaz@freemail.hu>
529 * mini.c (mono_create_class_init_trampoline): Add a lock around
530 class_init_hash_addr.
532 * arrays.cs (test_0_newarr_emulation): Add new regression test for
535 * mini.c: Decompose the NEWARR instruction before decomposing its
536 arguments. Fixes #30073.
538 2003-10-08 Zoltan Varga <vargaz@freemail.hu>
540 * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
543 2003-10-06 Zoltan Varga <vargaz@freemail.hu>
545 * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
547 * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
549 * driver.c: Add support for compiling icall wrappers to --compile.
551 2003-10-05 Zoltan Varga <vargaz@freemail.hu>
553 * inssel.brg: The empty value in class->interface_offsets is -1, not
556 2003-10-03 Zoltan Varga <vargaz@freemail.hu>
558 * objects.cs: New test for 'is' operator on an array of interfaces.
560 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
562 * tramp-ppc.c: update trampoline code to support jumps
563 and class initialization.
565 2003-09-30 Zoltan Varga <vargaz@freemail.hu>
567 * mini.c (mono_jit_compile_method): Fix reading of freed memory.
569 * inssel.brg (OP_UNBOXCAST): Fix #46027.
571 * inssel.brg (OP_UNBOX): Remove unused rule.
573 * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
574 region instead of one for each method. Fixes #47813.
576 2003-09-29 Zoltan Varga <vargaz@freemail.hu>
578 * exceptions.cs (test_0_nested_finally): New regression test for
579 nested exception handlers.
581 * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
583 * mini.c (mono_method_to_ir): Avoid inlining tail calls.
585 * mini.c (mono_method_to_ir): Fix tail recursion in the presence of
588 * mini.c (mono_method_check_inlining): Make the inlining limit
589 configurable by an environment variable.
591 * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
593 * mini.h: Bump AOT file version.
595 * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a
596 token, store the image along with the token, since the token might not
597 refer to the same image as the method containing the relocation,
600 2003-09-27 Zoltan Varga <vargaz@freemail.hu>
602 * mini.c (mono_precompile_assemblies): New function to compile
603 all methods in all loaded assemblies.
605 * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
607 * regalloc.h regalloc.c (MonoRegState): Change the type of
608 iassign and fassign to int*, since they can contain large negative
609 values if the register is spilled. Also added some comments. Fixes
612 * exceptions-x86.c (seh_handler): Fix handling of system exceptions
613 under Win32. Fixes #42964.
615 2003-09-26 Zoltan Varga <vargaz@freemail.hu>
617 * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
619 * aot.c: Added support for AOT compiling methods which contain calls
620 to wrappers. Currently, only remoting-invoke-with-check wrappers are
623 * driver.c (compile_all_methods): Run the compilation in a thread
624 managed by mono. Fixes #44023.
626 * mini.c (mono_codegen): Print full method name in verbose output.
628 * mini-x86.c (mono_arch_patch_code): Fix warning.
630 * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
631 jumps, since the method we are jumping to might be domain-specific.
633 * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
635 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
637 * inssel.brg: string chars are unsigned.
639 2003-09-15 Zoltan Varga <vargaz@freemail.hu>
641 * TODO: New todo item.
643 * tramp-x86.c (x86_class_init_trampoline): New trampoline function
644 which calls mono_runtime_class_init and patches the call site to
646 (mono_arch_create_class_init_trampoline): New arch specific function
647 to create a class init trampoline.
648 (create_trampoline_code): Generalized so it can create
649 class init trampolines as well.
651 * mini.c (helper_sig_class_init_trampoline): New helper variable.
652 (mono_create_class_init_trampoline): New function to create and cache
653 class init trampolines.
654 (mono_find_class_init_trampoline_by_addr): New function to lookup the
655 vtable given the address of a class init trampoline. Used by the
657 (mono_codegen): Generate a call to a trampoline instead of
658 mono_runtime_class_init in LDSFLD[A].
659 (mono_codegen): Add relocations for the new trampoline.
661 * mini.h mini-x86.c aot.c: Added a new relocation type:
662 MONO_PATCH_INFO_CLASS_INIT.
664 * mini.h: Bump AOT version number.
666 * aot.c: Create a copy of the loaded code instead of using the original
667 so methods which call each other will be close in memory, improving
670 * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
671 patch since it breaks the regression tests.
673 * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
674 for the register saving instruction sequence since the
675 frame_state_for function in glibc 2.3.2 don't seem to detect it.
677 2003-09-14 Zoltan Varga <vargaz@freemail.hu>
679 * TODO: Fix todo item && remove another.
681 2003-09-12 Zoltan Varga <vargaz@freemail.hu>
683 * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
686 * aot.c: Moved the check for MONO_LASTAOT into the initialization
687 function of the module.
689 * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
690 turning on/off the usage of AOT code. Got rid of mono_no_aot and the
691 --no-aot command line option.
693 2003-09-11 Zoltan Varga <vargaz@freemail.hu>
695 * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
696 by Bernie Solomon (bernard@ugsolutions.com).
698 * inssel.brg: Refactor the interface offset table related code into
699 its separate functions and add support for the AOT case.
701 2003-09-10 Zoltan Varga <vargaz@freemail.hu>
703 * aot.c (mono_aot_get_method_inner): Fix memory leak.
705 * aot.c: Added mono_aot_verbose variable and made all debugging
706 output depend on the value of this variable.
708 * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
709 method_label and info_label.
711 * mini.h mini-x86.c aot.c: Added a new relocation type
712 MONO_PATCH_INFO_IID for klass->interface_id.
714 * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
715 the MonoJitInfo structure.
717 * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
718 a non-root appdomain in shared mode.
720 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
722 * aot.c: make aot loader less verbose. Remove free of unused variable.
724 2003-09-08 Zoltan Varga <vargaz@freemail.hu>
726 * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
728 * .cvsignore: Added *.dll.
730 * mini.c (mono_print_tree_nl): New function callable while debugging.
732 * mini.c (mono_print_code): Export this.
734 * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
737 2003-09-05 Zoltan Varga <vargaz@freemail.hu>
739 * mini.h (MonoCompile): Added 'jit_info' field.
741 * mini.c (mini_method_compile): Save the generated MonoJitInfo into
742 the cfg structure, since it is needed by the AOT compiler.
744 * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
746 * aot.c: A major rewrite. Changes include:
747 - save exception tables for methods which have them.
748 - cache failed lookups in aot_get_method () to avoid the (slow) calls
750 - reworked the file format so it is now much smaller and needs
751 fewer relocation entries.
753 2003-09-04 Zoltan Varga <vargaz@freemail.hu>
755 * aot.c (load_aot_module): Fix build bustage on platforms without
758 2003-09-04 Martin Baulig <martin@ximian.com>
760 * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
762 2003-09-04 Zoltan Varga <vargaz@freemail.hu>
764 * TODO: Some new optimization ideas.
766 * aot.c: Move AOT module loading logic here from mono_assembly_open.
768 * aot.c: Save the optimization flags used to compile the code into
771 * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
772 support emitting domain specific code.
774 * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is
775 no longer domain neutral. It can be made domain neutral by compiling
776 with --optimize=shared.
778 * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
781 * driver.c mini.h mini.c: New --no-aot debugging option which disables
784 * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
786 * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
787 if there is no domain neutrality information.
789 2003-09-01 Zoltan Varga <vargaz@freemail.hu>
791 * aot.c (mono_compile_assembly): Emit a symbol containing the file
792 format version into the generated library.
794 * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
795 callee method into the caller since one of them could be shared.
797 * mini.h mini-x86.c aot.c: Added two new relocations so throwing
798 system exceptions from AOT code now works.
800 * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling
801 method if it is domain neutral and the callee is not.
803 * graph.c (cfg_emit_one_loop_level): Fix warning.
805 2003-08-30 Zoltan Varga <vargaz@freemail.hu>
807 * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
810 2003-08-29 Zoltan Varga <vargaz@freemail.hu>
812 * mini.c (mini_init): Call mono_marshal_init () explicitly since it
813 is needed by code which is executed before mono_runtime_init ().
814 Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
816 * mini.c (mono_thread_abort): Fix warning.
817 (mono_jit_compile_method): Call static constructor in the AOT case too.
819 * aot.c (mono_compile_assembly): Fix warning.
821 2003-08-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
823 * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
825 2003-08-28 Zoltan Varga <vargaz@freemail.hu>
827 * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
829 * cpu-pentium.md: Fix the length of call opcodes so they include the
830 ESP restoring instruction. Fixes #47968.
832 2003-08-28 Martin Baulig <martin@ximian.com>
834 * mini-x86.c (mono_arch_call_opcode): Added support for
835 MONO_TYPE_GENERICINST.
837 * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.
839 2003-08-27 Zoltan Varga <vargaz@freemail.hu>
841 * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
842 a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
844 * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
847 2003-08-26 Martin Baulig <martin@ximian.com>
849 * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
850 when reporting an error, set this to the actual error location.
851 (mono_method_to_ir): Report the correct error location if
852 get_basic_blocks() returned an error.
854 2003-08-25 Zoltan Varga <vargaz@freemail.hu>
856 * mini.c (mono_type_blittable): OBJECT is not blittable.
857 (mono_method_blittable): Methods which have marshalling descriptors
858 are not blittable either. Fixes #47842.
860 2003-08-22 Zoltan Varga <vargaz@freemail.hu>
862 * driver.c mini.c: Use an environment variable instead of a global
863 variable. Also fix the build.
865 * mini.c (mini_init): Call g_thread_init () to make glib thread-safe.
866 Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for
869 * driver.c mini.c: Added --with-valgrind option to turn off some
870 code which prevents mono from running under valgrind.
872 * mini.c (mono_emit_call_args): Fixed warning.
874 * mini.c (mono_emulate_opcode): Fixed warning.
876 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
878 * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
879 * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
880 regalloc.c, regalloc.h: specify available registers in arch-specific
881 code and support floats in the regallocator (patch by Laurent Morichetti
884 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
886 * mini.c: mono_thread_current() can be called only after
887 mono_runtime_init(): rearrange code to not call it early on.
889 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
891 * mini.c: allocate jump tables in the code mempools.
893 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
895 * mini.c, mini.h: make sure per-thread data allocated by the jit is
898 2003-08-10 Miguel de Icaza <miguel@ximian.com>
900 * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
901 12 to 16. This fixes bug #47453.
904 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
906 * mini-ppc.c: fixed indexed load and unsigned compares.
908 2003-08-06 Lluis Sanchez Gual <lluis@ximian.com>
910 * mini.c: reenabled installation of handler for
913 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
915 * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
916 by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
917 until it's fixed and actually useful.
919 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
921 * inssel-long32.brg: couple more opcodes implemented.
923 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
925 * mini-sparc.c: Even more opcodes implemeted.
927 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
929 * mini-sparc.c: More opcodes implemented.
931 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
933 * mini-sparc.c: More opcodes implemented.
935 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
937 * inssel-sparc.brg: Add some needed rules. Direct
939 * Makefile.am: Use inssel-sparc.brg
940 * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
941 an assert happy for now.
943 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
945 * mini-sparc.c: Fixed compile errors.
946 * exceptions-sparc.c: Same. We now produce a mono binary
949 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
951 * mini-sparc.c: Renamed registers. Also some macro cleanups.
952 * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
953 They compile, but do not work.
955 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
957 * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
958 mini-sparc.h, tramp-sparc.c: Beginning of sparc support
959 from Mark Crichton <crichton@gimp.org> and Christopher Taylor
962 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
964 * mini.c: more opcodes implemented and better support for generics.
966 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
968 * cpu-g4.md, cpu-pentium.md: updates for new instructions.
969 * mini.c, mini.h: first cut at generics support: some new instructions
970 added and changed the behaviour of some of the existing ones.
972 2003-07-21 Miguel de Icaza <miguel@ximian.com>
974 * mini.c: Removed definition of metadata_shared mutex here.
976 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
978 * mini-x86.c: make vararg calls work for instance methods.
980 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
982 * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
983 returns the arguments in a separte list, now.
985 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
987 * aot.c, mini.c: updates for array type representation changes.
989 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
991 * mini.c: register function to perform jit shutdown.
993 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
995 * mini.c: use a faster allocator if possible.
997 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
999 * aot.c: some cleanups and portability changes.
1001 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1003 * mini.c: use faster allocation for CEE_BOX if possible.
1005 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
1007 * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
1008 Moved inlined mempcy code to its own function so that is can be
1009 reused. Added an inline memset function as well (optimized initobj).
1010 * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
1012 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1014 * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
1016 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
1018 * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
1019 arch code can setup the cpu for CLR execution, if needed.
1020 We use it on x86 to set the precision of FP operations.
1022 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
1024 * mini.c: disable some optimizations if we can guess they'll cost too
1025 much for a given method.
1027 2003-06-17 Zoltan Varga <vargaz@freemail.hu>
1029 * mini.h mini.c: Rework last patch based on suggestions by Paolo.
1031 2003-06-17 Zoltan Varga <vargaz@freemail.hu>
1032 * mini.h mini.c mini-x86.c: Added instruction level coverage
1033 info collection support.
1035 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1037 * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
1038 is now implemented in the profiling API. Get rid of a couple of
1039 unnecessary global variables.
1041 2003-06-15 Nick Drochak <ndrochak@gol.com>
1043 * basic-long.cs: tests for negative values for bigmul, and unsigned.
1044 * cpu-g4.md: add op_bigmul and op_bigmul_un
1045 * cpu_pentium.md: add op_bigmul_un
1046 * inssel-long32.brg: add rule for unsigned bigmul
1047 * mini-ops.h: define OP_BIGMUL_UN
1048 * mini-x86.c: THE BUG: handle (un)signed properly
1049 * mini.c: choose unsigned opcode if needed.
1050 This set of patches fixes bug #44291
1052 2003-06-13 Dietmar Maurer <dietmar@ximian.com>
1054 * mini.c (optimize_branches): improved to handle all kinds of
1055 conditional branches.
1057 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
1059 * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
1060 don't raise exceptions.
1062 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
1064 * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
1065 to arch-specific files.
1067 2003-06-09 Martin Baulig <martin@ximian.com>
1069 * Makefile.am (libs): Added $(LIBGC_LIBS).
1071 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
1073 * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
1074 and OP_ATAN (fixes bug#44293).
1076 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
1078 * Makefile.am, mini-x86.c: rename cpu description array to
1079 pentium_desc, since some compilers define the 'pentium' preprocessor
1082 2003-05-28 Dietmar Maurer <dietmar@ximian.com>
1084 * mini.c (mini_select_instructions): add explicit branch if the
1085 following block is not the false target of a conditional branch -
1086 we need this with any optimization that reorder or remove bblocks
1088 * mini.c (optimize_branches): bug fixes
1090 2003-06-06 Dietmar Maurer <dietmar@ximian.com>
1092 * mini.c (mono_method_to_ir): inline static readonly fields
1094 * ssa.c (fold_tree): start cfold support for long (very simple
1097 * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
1099 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
1101 * inssel.brg: fixed memcpy (bug #44219).
1103 2003-06-05 Dick Porter <dick@ximian.com>
1105 * driver.c: Set the glib log levels to not abort if g_message
1108 g_set_prgname() has to happen before mini_init() so that the
1109 process handle gets the info.
1111 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1113 * driver.c: add intrins to the default optimizations to get wider
1116 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
1118 * mini.h: some large basic blocks will overflow a 16-bit
1119 integers for symbolic registers.
1121 2003-06-04 Dietmar Maurer <dietmar@ximian.com>
1123 * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
1124 (mono_arch_output_basic_block): fix bug 43499
1126 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
1128 * mini.c: kill duplicated definition of mono_debug_format.
1130 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
1132 * mini-x86.c, arrays.cs: fixed register allocation bug.
1134 2003-06-04 Dietmar Maurer <dietmar@ximian.com>
1136 * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
1138 * mini.c (mini_get_opcode_for_method): inline IEEERemainder
1140 2003-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1143 (print_method_from_ip): also print source location information if
1146 2003-06-02 Dietmar Maurer <dietmar@ximian.com>
1148 * mini.c (mono_find_block_region): bug fix in region code
1149 (mini_method_compile): enable removing unreachable code again, but
1150 only in methods without exception clauses.
1152 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
1154 * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
1155 Implemented arglist opcode and handling of TypedReference type.
1156 Fixed x86 call convention when a structure is returned.
1157 Minimal support for calling static vararg methods.
1159 2003-05-30 Dietmar Maurer <dietmar@ximian.com>
1161 * mini.c (mini_method_compile): always remove unreachable code,
1162 because the code in them may be inconsistent (access to dead
1163 variables for example).
1165 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
1167 * driver.c, debug-mini.c: warning fixes.
1169 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
1171 * Makefile.am, jit.h, mini.h: install header for embedding mono.
1173 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
1175 * mini.c: thread-static fields are registered in mono_class_vtable(),
1176 so ensure the function is called before checking for them.
1178 2003-05-27 Dietmar Maurer <dietmar@ximian.com>
1180 * mini.c (optimize_branches): fix for bug 43586
1182 * jit-icalls.c (mono_llmult_ovf): added an additional check for
1183 overflow (fixes Bug #43639)
1185 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1187 * mini.c, objects.cs: allow the use of stobj for primitive types.
1189 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1191 * mini.c: be less strict about argument checking until we support
1192 running the verifier.
1194 2003-05-27 Nick Drochak <ndrochak@gol.com>
1196 * basic-long.cs: tests for (ulong)int * (ulong)int also
1197 * mini.c: use the same trick for (ulong)int * (ulong)int
1199 2003-05-27 Nick Drochak <ndrochak@gol.com>
1201 * basic-long.cs: add regression test for (long)int * (long)int
1202 * cpu-pentium.md: add op_bigmul specification
1203 * inssel-long32.brg: add OP_BIGMUL rule
1204 * mini-ops.h: add OP_BIGMUL
1205 * mini-x86.c: register allocator: handle case where src1 needs to be
1207 * mini.c: substitute special BIGMUL opcode in the tree for
1208 (long)int * (long)int
1210 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
1212 * jit-icalls.c: call the type ctor on field access if needed.
1214 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
1216 * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
1217 to a method (including results of ldelema, bug#43207).
1219 2003-05-26 Dietmar Maurer <dietmar@ximian.com>
1221 * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
1222 colors to show exception handler blocks.
1224 * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
1225 (fix for pinvoke7.cs).
1227 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1229 * mini.h, mini.c: ensure correct initialization order for types that
1230 require it. Prepare for lazy compilation of jit icall wrappers.
1231 Provide a name for opcode emulation to reduce unneeded mallocing.
1233 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
1235 * mini-x86.c: better register restoring code and profiling
1236 support for tail calls.
1238 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1240 * mini.h, driver.c: prepare for leaf methods optimization.
1242 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
1244 * mini.c: get targets of branches before converting a method.
1246 2003-05-23 Dietmar Maurer <dietmar@ximian.com>
1248 * mini.c (optimize_branches): added some experimental code (disbaled)
1250 2003-05-22 Dietmar Maurer <dietmar@ximian.com>
1252 * mini.c (optimize_branches): fix branch to branch optimization
1254 * exceptions-x86.c (mono_arch_handle_exception): bug fix.
1256 * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
1258 * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
1260 * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
1263 2003-05-21 Dietmar Maurer <dietmar@ximian.com>
1265 * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
1266 enable use of interface variables again.
1268 * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
1269 I1 to registers because there is no simply way to sign extend 8bit
1270 quantities in caller saved registers on x86.
1272 * inssel-float.brg: set costs of some rules to 2 so
1273 that monobure always select the arch. specific ones if supplied,
1274 regardless of the order we pass the files to monoburg.
1276 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1278 * mini.c, mini-x86.c: since the magic trampoline for jumps
1279 can't patch the code directly, we do it as soon as the
1280 method gets compiled.
1282 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
1284 * mini-x86.c, mini.h: introduce a new patching method
1285 to support CEE_JMP and tail calls.
1286 * mini.c: obey tail.call. Don't precompile methods target
1288 * tramp-x86.c: new trampoline code to handle methods
1289 reached through a jump.
1291 2003-05-20 Dietmar Maurer <dietmar@ximian.com>
1293 * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
1294 bit values to registers
1296 2003-05-19 Dietmar Maurer <dietmar@ximian.com>
1298 * mini.c (mono_compile_get_interface_var): share interface
1299 variables if possible.
1301 2003-05-16 Martin Baulig <martin@ximian.com>
1303 * debug-mini.c (mono_init_debugger): New function to initialize
1304 the debugger. This is not in the debugger since it needs to
1305 access some of mini's internals.
1307 2003-05-16 Dietmar Maurer <dietmar@ximian.com>
1309 * mini.c (mono_method_to_ir): inlining fixes/cleanups
1311 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
1313 * mini.c, mini-opts.h, inssel.brg: inline small memcpy
1314 for value type handling.
1316 2003-05-16 Dietmar Maurer <dietmar@ximian.com>
1318 * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
1319 (mono_method_check_inlining): enable inlining of all kinds of wrappers
1321 2003-05-15 Lluis Sanchez Gual <lluis@ideary.com>
1323 * mini.c: fixed little bug in CEE_NEWOBJ case when calling
1324 the constructor through a proxy.
1326 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
1328 * jit-icalls.c, inssel.brg: fixes to array element address
1331 2003-05-15 Dietmar Maurer <dietmar@ximian.com>
1333 * mini-x86.c (is_regsize_var): allocate pointer to registers
1335 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
1337 * driver.c: fixed typo, added intrins to the set of optimizations
1338 tested with regressions.
1340 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
1342 * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
1343 * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
1346 2003-05-14 Dietmar Maurer <dietmar@ximian.com>
1348 * inssel.brg: remove some common pop instructions without side effects
1350 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
1352 * inssel-x86.brg: fixed thinko in int to double conversions.
1354 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
1356 * mini.c, jit-icalls.c: added runtime thread-static variable support.
1358 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
1360 * inssel-long32.brg: two more missing instructions.
1362 2003-05-13 Dietmar Maurer <dietmar@ximian.com>
1364 * mini.c (mono_emit_call_args): set the cil_code for all arguments
1367 2003-05-12 Zoltan Varga <vargaz@freemail.hu>
1369 * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
1372 * basic-float.cs: Added tests for negative zero.
1374 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
1376 * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
1377 a couple of missing operations for long casts, with test cases.
1379 2003-05-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1381 * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
1383 2003-05-09 Dietmar Maurer <dietmar@ximian.com>
1385 * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
1386 code size estimation.
1388 2003-05-08 Dietmar Maurer <dietmar@ximian.com>
1390 * mini.c (mono_jit_create_remoting_trampoline): make it work with
1391 abstract methods (fix bug 42542)
1393 * aot.c: add ability to handle array types
1395 2003-05-08 Zoltan Varga <vargaz@freemail.hu>
1397 * mini.c: Call the _specific versions of the object allocation
1398 functions if possible.
1400 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
1402 * driver.c: call setlocale ().
1404 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
1406 * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
1409 2003-05-05 Dietmar Maurer <dietmar@ximian.com>
1411 * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
1413 * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
1414 wrappers (fix bug 42122)
1416 2003-05-04 Martin Baulig <martin@ximian.com>
1418 * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
1420 * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
1421 s/mini_set_defaults/mono_set_defaults/g.
1423 2003-05-04 Martin Baulig <martin@ximian.com>
1425 * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
1427 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
1429 * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
1430 (reported by Don Roberts).
1432 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
1434 * mini.c: temporarily work around two bugs for this release.
1436 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
1438 * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
1439 that contains -export-dynamic and it makes using the ld script
1441 * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
1443 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
1445 * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
1448 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
1450 * mini.c: make sure leave calls all the needed finally blocks,
1451 even when the target jumps out of multiple exception clauses.
1453 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
1455 * ldscript, Makefile.am: add linker script to reduce the number of
1456 exported symbols (should also fix the issues with libwine defining
1457 some of the same symbols in io-layer).
1459 2003-05-01 Zoltan Varga <vargaz@freemail.hu>
1461 * driver.c (mini_main): Avoid assertion when no file name is given on
1464 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
1466 * driver.c: added --version/-V command line option.
1467 Added the inline optimization in the regression tests.
1469 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
1471 * mini.c, basic-calls.cs: when inlining, save arguments to locals according
1472 to the type in the method signature (fixes bug#42134).
1474 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
1476 * mini.c: when inlining, check this is not null only when needed (bug #42135).
1478 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
1480 * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
1482 2003-04-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1484 * driver.c: fixed bug #42100.
1486 2003-04-29 Dietmar Maurer <dietmar@ximian.com>
1488 * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
1490 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
1492 * mini.c: moved most of the code required to do inlining to its own
1493 function so it can be reused. Inline also ctors if appropriate.
1495 2003-04-28 Zoltan Varga <vargaz@freemail.hu>
1497 * Makefile.am: Link with -export-dynamic so shared libs loaded by
1498 the runtime can call mono API functions.
1500 2003-04-27 Martin Baulig <martin@ximian.com>
1502 * debug-mini.c (mono_debug_init_method): Added
1503 `guint32 breakpoint_id' argument; if the method has a breakpoint,
1504 send a notification to the debugger.
1506 * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
1507 running in the Mono Debugger, just pass the breakpoint number to
1508 mono_debug_init_method().
1510 * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
1512 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
1514 * mini.c: allow some more unsafe compares.
1516 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
1518 * mini-x86.c, Makefile.am: make distcheck works (partially from
1519 a patch by Richard Lee <r.h.lee@attbi.com>).
1520 * regset.c, regset.h: removed, they are unused.
1522 2003-04-25 Dick Porter <dick@ximian.com>
1524 * driver.c: Usage reports the name as 'mono' not 'mini'
1525 * exceptions-x86.c: Build and run on freebsd
1527 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
1529 * Makefile.am: install the program with the 'mono' name and
1530 the library as libmono instead of mini and libmini.
1532 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
1534 * driver.c: provide the APIs for the embedding interface of the old jit.
1536 2003-04-23 Dietmar Maurer <dietmar@ximian.com>
1538 * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
1540 2003-04-23 Martin Baulig <martin@ximian.com>
1542 * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
1544 * driver.c: Added `--debug' command line argument to enable
1547 2003-04-23 Martin Baulig <martin@ximian.com>
1549 * debug.[ch]: Removed. The code is now in
1550 ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
1552 * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
1555 2003-04-22 Dietmar Maurer <dietmar@ximian.com>
1557 * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
1559 2003-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1562 (mini_cleanup): moved mono_runtime_cleanup call after the call to
1563 mono_domain_finalize.
1564 (mini_method_compile): use mono_method_profile* if the the option is
1567 2003-04-17 Zoltan Varga <vargaz@freemail.hu>
1569 * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
1570 methods with their wrapper.
1572 * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
1573 methods with their wrapper.
1575 * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
1578 * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
1581 * mini.c (mono_method_check_inlining): Avoid inlining synchronized
1584 2003-04-17 Dietmar Maurer <dietmar@ximian.com>
1586 * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
1588 2003-04-16 Dietmar Maurer <dietmar@ximian.com>
1590 * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
1591 of the mempool. This is slightly faster and uses less memory
1593 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
1595 * mini.c: avoid O(n) allocation for variables.
1597 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
1599 * mini.c: handle items on the stack after inlining methods.
1601 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
1603 * mini.c: make the method->opcode optimization dependent
1604 on MONO_OPT_INSTRINS and do it lazily.
1606 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
1608 * driver.c: print overall results at the end of regression run.
1610 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
1612 * inssel.brg: don't overwrite symbolic registers.
1614 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
1616 * inssel-x86.brg: fix conversion from long to float.
1618 2003-04-11 Dietmar Maurer <dietmar@ximian.com>
1620 * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
1622 2003-04-10 Zoltan Varga <vargaz@freemail.hu>
1624 * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
1626 * driver.c: Added --print-vtable option as in the old JIT.
1628 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
1630 * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
1632 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
1634 * inssel.brg, basic.cs: fixed checked conversions to byte and short.
1636 2003-04-09 Zoltan Varga <vargaz@freemail.hu>
1638 * mini.c regalloc.c regalloc.h: Fix memory leak.
1640 2003-04-09 Dietmar Maurer <dietmar@ximian.com>
1642 * aot.c (mono_aot_get_method): register all used strings
1644 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
1646 * mini.c: always intern strings references with ldstr at compile time.
1648 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
1650 * Makefile.am: add BUILT_SOURCES.
1652 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
1654 * driver.c: give a better error message when the assembly to execute
1655 doesn't have an entry point.
1657 2003-04-07 Dietmar Maurer <dietmar@ximian.com>
1659 * Makefile.am: added hack for automake
1661 * mono/mini/mini.c (mono_save_args): always copy arguments to keep
1664 * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
1666 22003-04-07 Martin Baulig <martin@ximian.com>
1668 * Makefile.am: Added Makefile.am.
1670 * debugger-main.c: Removed, this is now in the debugger where it
1673 * mini.pc.in: Call this package `mini' for the moment.