2004-08-18 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / mini / ChangeLog
1 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
2
3         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
4         under windows.
5
6 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7
8         * mini.c: thread local allocation
9
10 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
11
12         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
13
14         * Makefile.am: Link against the static version of libmonogc.
15         
16         * Makefile.am: Link the static versions of the convenience libraries
17         into the mono executable.
18
19         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20
21 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22
23         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
24         on integer overflow.
25
26         * mini-amd64.c: Reorganize function call code.
27
28         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
29
30 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
31
32         * inssel-x86.brg: use xor eax,eax.
33         
34         * basic.cs: new tests
35
36 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
37
38         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
39         in exception throwing code.
40         
41 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
42
43         * inssel-x86.brg: use xor esi,esi.
44
45 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
46
47         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
48         can trace methods compiled during mini_init () too.
49
50         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
51         CEE_CONV_U4.
52
53 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
54
55         * Makefile.am: static link on x86 (r=zoltan)
56
57 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
58
59         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
60         code since it causes some programs to fail.
61
62 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
63
64         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
65
66 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
67
68         * mini.c: ovfops_op_map - add STACK_OBJ case for
69         CONV_I 
70         * basic.cs: add test_0_pin_string as test
71         case for above.
72
73 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
74
75         * Makefile.am: build C# if srcdir != builddir
76
77 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
78
79         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
80         fall-through blocks.
81
82 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
83
84         * driver.c: enable loop by default again and include abcrem in -O=all.
85
86 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
87
88         * iltests.il: Add some localloc tests.
89
90         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
91
92         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
93         Fixes #62574.
94
95         * inssel-amd64.brg: Add some optimizations.
96
97         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
98         for gcc-3.4.
99
100         * Makefile.am: Statically link mono against libmono on AMD64.
101         
102         * mini-amd64.c inssel-amd64.brg: Optimizations.
103
104 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
105
106         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
107
108         * tramp-amd64.c: Patch calling code in trampolines.
109
110 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
111
112         * mini-amd64.c: pinvoke struct passing fixes.
113
114 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
115
116         * mini-sparc.c: redo change, make mono_arch_cpu_init call
117         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
118
119 2004-08-05  Duncan Mak  <duncan@ximian.com>
120
121         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
122         CEE_LDELEM_ANY.
123
124 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
125
126         * mini-amd64.c (emit_move_return_value): Move return value for normal
127         calls too.
128
129 2004-08-05  Martin Baulig  <martin@ximian.com>
130
131         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
132         `type->type'; just modify `type' itself when dealing with enums
133         and generic instances.
134         (check_call_signature): Make `simple_type' a `MonoType *'.
135
136 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
137
138         * mini.c: Use OP_PADD to add offsets to addresses.
139
140         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
141
142 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
143
144         * mini-sparc.c (mono_arch_emit_epilog): fix check
145         for folding last op into restore instruction
146
147 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
148
149         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
150         helper methods using the code manager.
151         
152         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
153
154         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
155
156 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
157         
158         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
159           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
160
161         * mini-s390.c: fix tail processing
162
163 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
164
165         * mini-ppc.c: mul.ovf.un exception name fix.
166
167 2004-08-03  Martin Baulig  <martin@ximian.com>
168
169         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
170         instances; before jumping to `handle_enum', also modify `ptype'.
171
172 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
173
174         * cpu-sparc.md: fcall maximal length too small.
175
176 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
177
178         * mini-amd64.c mini.h: Add initial support for passing/returning 
179         structures to/from pinvoked methods.
180
181 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
182
183         * mini-ppc.c: reg allocator fix.
184
185 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
186
187         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
188
189         * inssel.brg: Optimize memset on 64 bit machines.
190
191         * mini-amd64.c: Fix some vararg cases.
192
193 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
194
195         * mini-s390.c: Corrected macro in emit_float_to_int
196
197         * s390-abi.cs: Tests to exercise the s390 ABI
198
199 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
200
201         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
202         caller saved regs.
203
204         * basic.cs: Add a test for add.ovf.un.
205
206 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
207
208         * mini-sparc.c: add case for OP_IDIV_UN
209
210 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
211
212         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
213         
214         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
215
216 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
217
218         * basic.cs: regression tests.
219
220         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
221         regressions.
222
223 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
224
225         * basic.cs: Add a new test.
226
227         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
228         and AOT. Various fixes and optimizations.
229
230         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
231
232 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
233
234         * mini-ppc.c: make sure temp regs are not used for global reg
235         allocation.
236
237 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
238
239         * cpu-sparc.md: conv_i8 fix for 64bits
240
241         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
242
243 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
244         
245         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
246         add opcode for cmp BYTE PTR [eax], imm.
247
248         * inssel.brg: Make memcpy and memset takes bases.
249
250 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
251
252         * *-amd64.*: More AMD64 work.
253         
254 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
255
256         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
257         add a compare-not-equal opcode.
258         
259 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
260
261         * mini.c: Use mono_init_from_assembly instead of mono_init.
262         
263 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
264
265         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
266
267         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
268
269         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
270
271         * inssel.brg: 64 bit fixes.
272
273         * mini.h (MonoCallInst): Add some AMD64 specific data.
274
275         * mini.h: Add some OP_P opcodes.
276
277 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
278
279         * basic.cs: tests for 61797 and 61740
280
281 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
282
283         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
284         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
285
286 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
287
288         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
289
290         * *-amd64*.*: Ongoing AMD64 work.
291
292 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
293
294         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
295
296         * *-amd64*: Ongoing AMD64 work.
297
298         * mini-arch.h: Add AMD64 support.
299
300         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
301
302         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
303
304         * mini-ops.h: Add new opcodes.
305
306         * Makefile.am: Add AMD64 support.
307
308         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
309         rules into the inssel-long*.brg files.
310
311         * *-amd64.*: Add beginnings of AMD64 backend.
312
313 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
314
315         * mini.c (print_dfn): commenting out the code that prints
316         the cil. With -O=deadce, this makes -v -v crash.
317         
318         * cpu-pentium.md: make checkthis have a length of 2
319
320 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
321
322         * mini-sparc.h: fix implementations of __builtin
323         functions for Sun compiler for V9.
324
325 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
326
327         * mini.c: use the new stelem.ref wrapper
328         * exceptions.cs, arrays.cs: new stelem.ref tests
329
330 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
331
332         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
333         new XSP should work with these changes).
334
335 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
336         
337         * inssel-{long32,x86,}.brg: trivial optimizations.
338         
339 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
340
341         * mini.c: load value when emitting box operation in
342         constrained calls.
343
344 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
345
346         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
347         is one byte shorter than cmp DWORD PTR [eax], 0.
348
349 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
350
351         * inssel-ppc.brg: arguments on the stack are always
352         relative to the stack pointer (spotted by Neale Ferguson).
353
354 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
355
356         * exceptions-x86.c: delay appending the method name to the trace until
357         after mono_jit_info_table_find is called, as this gets the real
358         MonoMethod.
359
360 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
361
362         * aot.c: register roots
363
364 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
365
366         * aot.c : I could just use PLATFORM_WIN32 flag.
367
368 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
369
370         * aot.c : Reverting the previous fix. This time it broke linux build.
371
372 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
373
374         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
375
376 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
377
378         * mini.c (handle_stack_args): Remove some more debugging code.
379         
380         * mini.c (handle_stack_args): Remove debug output left in by mistake.
381
382         * driver.c mini.h aot.c: Allow additional options to be specified with
383         --aot and pass them to mono_compile_assembly.
384
385         * aot.c: Add experimental code to AOT compile all loaded assemblies
386         on demand and save the code into a cache in the filesystem.
387
388         * aot.c: Add support for more wrapper methods.
389         
390         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
391         58863.
392
393         * cpu-*.md: Remove removed opcodes.
394
395         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
396         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
397         related icalls to marshal.c.
398
399 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
400
401         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
402
403         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
404
405         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
406
407 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
408         * liveness.c: If liveness is recomputated we need to reset the information
409         for each variable. This way, if the liveness range has been narrowed
410         by optimizations that happened after the last computation, we can return
411         a smaller range.
412         
413         For example, if you have
414         
415         {
416                 int i = 0;
417                 
418                 // Tons of code that does not affect i
419                 
420                 i = foo ();
421                 ...
422         }
423         
424         i = 0 is dead code and will be removed by SSA. However, when
425         linear scan gets to the code, i will still appear to be live
426         throughout the entire block. This prevents good register allocation.
427
428 2004-07-06  Martin Baulig  <martin@ximian.com>
429
430         * debug-mini.c (mono_debug_init_method): Allow
431         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
432         (mono_debug_add_icall_wrapper): New method.
433
434         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
435
436 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
437
438         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
439         optimization.
440
441 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
442
443         * aot.c (mono_aot_load_method): Fix loading of debug info.
444
445 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
446
447         * aot.c: Add logging support.
448
449 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
450
451         * mini.h: Add prototype for mono_print_method_from_ip.
452
453         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
454
455         * inssel.brg: 64 bit fixes.
456
457         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
458         inssel-long32.brg.
459
460         * Makefile.am: Add SPARC64 support.
461
462 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
463
464         * aot.c: Fix alignment problems on 32 bit platforms.
465
466 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
467
468         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
469         SPARC64.
470
471         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
472         problems.
473
474         * mini.h: Bump AOT file version. Some 64 bit fixes.
475
476 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
477
478         * inssel-sparc.brg: Add new rule to avoid register moves.
479
480         * inssel.brg: Add ldind_to_load_membase helper function.
481
482 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
483
484         * mini.c: OffsetToStringData intrinsic.
485         
486 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
487
488         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
489
490         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
491         regression tests.
492
493         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
494 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
495
496         * mini.c: reinstated mono_compile_get_interface_var()
497         on x86, too, since the change breaks the Gtk# build there as well.
498
499 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
500
501         * driver.c: remove loop from the default optimizations: it seems to
502         interact badly with some of the other options (see bug #60613).
503
504 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
505
506         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
507         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
508
509 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
510
511         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
512         vararg-using methods.
513
514 2004-06-21  Martin Baulig  <martin@ximian.com>
515
516         * mini/mini-exceptions.c
517         (mono_handle_exception): Added `gpointer original_ip' argument.
518         After calling mono_unhandled_exception(), call
519         mono_debugger_unhandled_exception() and if that returns true,
520         restore the context and return.
521
522 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
523
524         * mini-ppc.c: prefer the use of relative branches so
525         they won't need to be patched in aot code (patch from Patrick Beard).
526
527 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
528
529         * aot.c: patch from Patrick Beard to make the output assembly
530         more correct for the MacOSX assembler. Small tweak to
531         generate sane images on Linux/PPC, too.
532
533 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
534
535         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
536         case until bug #59509 is fixed (shows up in #60332).
537
538 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
539
540         * mini.c: make sure the needed wrappers are compiled, too, with
541         precomp.
542
543 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
544
545         * driver.c: remove NPTL reference in --version output.
546
547 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
548
549         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
550         generate valid assembly for the Mach-O assembler.
551
552 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
553
554         * driver.c: don't include abcrem in the all optimization specifier
555         since it slows down jit compilation too much for now.
556
557 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
558
559         * mini.c: use BIGMUL only if both operands have the same signage.
560         * iltests.il: Test for bug 60056. (errors related to signage in
561         BIGMUL).
562
563         r=lupus.
564
565 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
566
567         * mini.c, aot.c: memory leak fixes.
568
569 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
570
571         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
572
573 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
574
575         * Makefile.am: remove the -static hack completely, it links in
576         statically glib as well.
577
578 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
579
580         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
581         * exceptions.cs: make it compile with new mcs/csc.
582
583 2004-06-03 Massimiliano Mantione <massi@ximian.com>
584         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
585         and added relevant test case.
586
587 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
588
589         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
590         regressions in gtk-sharp.
591
592 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
593
594         * exceptions.cs: New regression tests.
595
596         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
597
598 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
599
600         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
601
602 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
603
604         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
605
606         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
607
608 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
609
610         * mini.c (mono_jit_runtime_invoke): Init class in this
611         method instead of trusting mono_jit_compile_method to
612         do the work (because wrappers can be in object class)
613
614 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
615
616         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
617
618         * basic-long.cs: New regression test.
619
620 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
621
622         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
623         and div/rem checks.
624
625 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
626
627         * Makefile.am: fix miguel's change to build mono statically against
628         libmono (track build dependencies).
629
630 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
631
632         * cfold.c: Some glib versions do not have G_MININT32.
633
634 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
635
636         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
637         with precision of tan, atan, sin and cos, and implemented related
638         regressions tests (fixes bug 54467, but one new problem appeared and
639         is not fixed yet).
640
641 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
642
643         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
644
645         * exceptions.cs: Add test for constant folding && division by zero.
646
647         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
648         since driver.c is in libmono too, so the optimization was useless.
649
650         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
651         variable to driver.c so the compiler can emit more efficient code to
652         access them.
653
654 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
655
656         * Makefile.am: don't distribute generated inssel.[ch] files.
657
658 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
659
660         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
661         into the default appdomain. Fixes #58707.
662
663         * jit-icalls.c: Remove the broken approximation for truncl, doing
664         no conversion is better.
665
666         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
667         Fixes #58863.
668
669 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
670
671         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
672         of the mcrxr instruction which is not available on some processors
673         even if it's documented to be. Implement add and sub overflow correctly
674         (still not complete for long unsigned). Speed up icalls a bit.
675
676 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
677
678         * mini.c (mono_jit_compile_method_with_opt): Make sure that
679         we run .cctor in the current domain instead of target_domain.
680         
681         Fixes bug #58558, .cctor not being called in -O=shared.
682
683 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
684
685         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
686
687 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
688
689         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
690         which can be done with an imm8, do it that way.
691         (mono_arch_output_basic_block): ditto for a jmp
692         (mono_arch_emit_prolog): Computate maximum offset of a label.
693
694 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
695
696         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
697         now tries to allocate prefered physical reg's for virtual
698         regs. This reduces the number of emited spills/loads with
699         20-30% on our core assemblies.
700
701 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
702
703         * jit-icalls.c: truncl() is not needed and trunc() is
704         the correct thing to do anyway (bug #58287).
705
706 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
707
708         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
709         if available.
710
711 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
712
713         * driver.c: enable loop optimizations by default.
714
715 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
716
717         * mini-x86.c: fix calc of max loop size when aligning loops start.
718
719 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
720
721         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
722         the stack.
723
724 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
725
726         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
727         should set carry.
728
729         * basic-long.cs: Add tests for add/subtract of immediates with carry.
730
731         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
732         
733         * mini.c (inline_method): Allways inline some wrappers even if the cost
734         is too large. Fixes #58785.
735
736         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
737         
738 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
739
740         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
741         (crichton@gimp.org). Beginning of support for sparc/linux.
742
743         * mini-sparc.c: Optimize retrieval of LMF address.
744
745 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
746
747         * exceptions-ppc.c:  handle alloca in methods with clauses.
748
749 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
750
751         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
752
753 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
754
755         * mini.c: Delegate most of the abort signal work to 
756           mono_thread_request_interruption, which also handles Stop and Suspend
757           states.
758
759 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
760
761         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
762         supports the save/restore lmf opcodes.
763
764 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
765
766         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
767         by gcc-3.4 as well.
768
769         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
770
771 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
772
773         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
774         methods which contain array accesses.
775
776         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
777         boundaries. Fixes #58537.
778
779         * iltests.il: Add regression test for #58537.
780
781 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
782
783         * mini-x86.c (mono_arch_local_regalloc): Last part of
784         fix for bug #58633 (releasing register to early).
785
786 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
787
788         * basic-long.cs: Add new regression test.
789
790 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
791
792         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
793         register too early on the chain.
794
795 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
796
797         * mini.c (create_helper_signature): Use a helper function to reduce
798         the code which needs to be written. Also set the calling convention of
799         icalls on windows. Fixes #57840.
800
801 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
802
803         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
804         exceptions-ppc.c: added helper function to get the instruction address
805         from a signal handler context.
806
807 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
808
809         * helpers.c: use g_get_tmp_dir. Invokes happyness 
810         from gonzalo.
811
812 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
813
814         * helpers.c: Add new env variable to pass args to objdump.
815         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
816
817 2004-05-17  Radek Doulik  <rodo@ximian.com>
818
819         * Makefile.am (common_sources): added abcremoval.h so it get
820         disted and daily mono packages on go-mono.com will build again
821
822 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
823
824         * abcremoval.c: Fixed coding style, added copyright header.
825
826         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
827
828         * mini.h: Added prototype for abc removal main function.
829
830         * build_relations_propagation_table.pl: Added copyright header.
831
832 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
833
834         * basic-long.cs: reg test for complex ceq_long bug.
835
836 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
837
838         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
839         reg in long and clob case (bug #58343). Fixed/added comments.
840
841 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
842
843         * mini.c (mono_jit_runtime_invoke): Follow new convention
844         of calling the invoke method with an function pointer.
845
846 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
847
848         * ChangeLog: Fix author of memory leak patch.
849
850 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
851
852         * Makefile.am: fix make dist as well...
853
854
855 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
856
857         * cfold.c: Made so that conversions from pointer to int4 are no-ops
858         on archs where pointers are 4 bytes long.
859
860         * Makefile.am: Added abcremoval.c source file.
861
862         * abcremoval.c: Added abcremoval.c.
863
864         * abcremoval.h: Added abcremoval.h.
865
866         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
867
868         * inssel.brg: Enabled bounds check removal.
869
870         * mini.c: Added support for abcrem optimization.
871
872         * mini.h: Added abcrem optimization label.
873
874         * driver.c: Added support for abcrem optimization.
875
876         * propagated_relations_table.def: Added propagated_relations_table.def.
877
878 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
879
880         * mini.c, cfold.c: fix style.
881
882 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
883
884         * mini.c: handle issue with the low-level implementation of
885         some long opcodes (bug #54209).
886
887 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
888
889         * basic.cs: test for my new cmov stuff.
890
891 2004-05-13      Patrik Torstensson
892
893         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
894         opt and added peephole documentation.
895
896 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
897
898         * tramp-ppc.c: rewrote the generic trampoline code.
899
900 2004-05-11      Patrik Torstensson
901
902         * mini-x86.c: optimize long shl/shr asm code (one less branch)
903
904 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
905
906         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
907
908         * mini.h mini.c dominators.c: Applied patch from Derek Woo
909         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
910
911         * mini.c: Add new icalls for AsAny marshalling.
912
913 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
914
915         * tramp-ppc.c, mini-ppc.c: more cleanups.
916
917 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
918
919         * mini.c: no warnings.
920
921 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
922
923         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
924
925 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
926
927         * mini.c: In the thread abort signal handler, if the thread is in the
928         process of being stoped, don't throw the Abort exception, just stop the
929         thread.
930
931 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
932
933         * tramp-ppc.c: removed old code.
934
935 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
936
937         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
938         do some simple speed optimizations on ppc.
939
940 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
941
942         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
943         and large offsets in load/store.
944
945 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
946
947         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
948         it causes regressions.
949
950 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
951
952         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
953         support.
954
955 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
956
957         * jit-icalls.c: remove warnings.
958         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
959         speedups for unsafe code.
960
961 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
962
963         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
964
965 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
966
967         * basic-calls.cs: Add new regression test.
968
969         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
970         more portable.
971
972         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
973
974         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
975         is no longer used.
976
977 2004-05-06      Patrik Torstensson
978
979         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
980         long reg allocation in any reg (not only eax:edx) and implemented 
981         long shl/shr ops in asm instead of helpers.
982
983 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
984
985         * mini-sparc.h: Fix warnings.
986
987         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
988         stack.
989
990         * mini-exceptions.c (mono_handle_exception): Call the filter in a
991         separate statement for clarity.
992
993         * mini-sparc.c: Update status.
994
995 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
996
997         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
998         here.
999
1000 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
1001
1002         * inssel-ppc.brg: another small pre-release workaround:
1003         we don't do overflow detection for long_sub_un.
1004
1005 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
1006
1007         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
1008         (also works around a weird ppc bug: 57957).
1009
1010 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
1011
1012         * tramp-ppc.c: trampoline fixes.
1013
1014 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
1015
1016         * mini-ppc.c: fixed typos.
1017
1018 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
1019
1020         * mini-ppc.c, exceptions-ppc.c: more code saves registers
1021         at the top of the stack. Fixed typos. Use a frame registers
1022         for all the methods with exception clauses.
1023
1024 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
1025
1026         * exceptions-ppc.c: restore fp registers.
1027
1028 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
1029
1030         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
1031         order from the stack top (moved the stack room to save the
1032         return value for trace after the param area). Fixed corruption
1033         in restoring registers on unwind.
1034
1035 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
1036
1037         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
1038
1039 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
1040
1041         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
1042         and prolog/epilog for methods that use it. Allow
1043         enough param area room for varargs methods. Fix miguel's
1044         breakage in exception handling.
1045
1046 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
1047
1048         * Makefile.am: run genmdesc only on current arch.
1049
1050 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1051
1052         * exceptions-x86.c:
1053         * mini-x86.h: fix the build on windows.
1054
1055 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
1056
1057         * Makefile.am mini.h mini-exceptions.c mini-x86.h mini-sparc.h exceptions-sparc.c: Move parts of the sparc exception handling code to XP code.
1058
1059         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
1060
1061         * mini-exceptions.c: New file.
1062         
1063         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
1064         Move some parts of the x86 exception handling code to an 
1065         arch-independent file so it can be shared with other ports.
1066
1067 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
1068
1069         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
1070
1071 2004-04-26  David Waite  <mass@akuma.org>
1072
1073         * driver.c: remove comma from end of enumeration declaration
1074
1075 2004-04-26  Jackson Harper  <jackson@ximian.com>
1076
1077         * driver.c: parse config file before loading first assembly. This
1078         allows the user gac to be enabled/disabled. 
1079         
1080 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
1081
1082         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
1083         simpler mechanism: we do not care what is encoded initially
1084         (branch absolute or relative), we care about the code and its
1085         target.  I kept the old code for reference for now.
1086
1087         The new code tries first to determine if the jump is anywhere in
1088         the -/+32 absolute meg range, if it succeeds, it encodes using the
1089         absolute branch;  If not, it tried to find something in the
1090         relative range, if not, it uses the handle_thunk code. 
1091
1092 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
1093
1094         * exceptions-ppc.c: use the correct ip register on macosx.
1095
1096 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
1097
1098         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
1099
1100 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
1101
1102         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
1103         Raise exception on integer divide by zero by hand since the hw
1104         doesn't support it. Handle NaNs in FP compares.
1105
1106 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
1107
1108         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
1109         code reducing duplication between the platforms and enabled
1110         signal exception handling (on linux for now).
1111
1112 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
1113
1114         * exceptions-ppc.c: more macosx support.
1115
1116 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
1117
1118         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
1119
1120 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
1121
1122         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
1123
1124 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
1125
1126         * iltests.il: more tests.
1127
1128 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
1129
1130         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
1131         vars as well.
1132
1133 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
1134
1135         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
1136
1137 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
1138
1139         * liveness.c: Mark variables as volatile in all basic blocks reachable
1140         from exception clauses.
1141
1142 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
1143
1144         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
1145         inlining.
1146
1147 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
1148
1149         * iltests.il, basic.cs: more tests for regalloc.
1150
1151 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
1152
1153         * iltests.il: Some tests for register allocation modifications
1154         I have locally.
1155
1156 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
1157
1158         * exceptions.cs: Add regression test for bug #56782.
1159
1160         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
1161         original stack trace if an exception is rethrown. Fixes #56782. Oh,
1162         the beauty of fixing the same thing in 5 different files...
1163
1164 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
1165
1166         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
1167         methods.
1168
1169 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
1170
1171         * mini.c: Add support for STRWLPARRAY marshalling convention.
1172
1173 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
1174
1175         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
1176         to init the context to setup the regs pointer).
1177
1178 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
1179
1180         * exceptions-ppc.c: more exceptions work.
1181
1182 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
1183
1184         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
1185         not allowed.
1186
1187 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
1188
1189         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
1190         can use the memory directly.
1191
1192         * cpu-pentium.md: Update documentation from a post from Zoltan. 
1193
1194         add x86_add_membase, x86_sub_membase, x86_mul_membase
1195
1196 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
1197
1198         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
1199         GENERAL_REGS they were also hardcoded for all PPC ports.
1200
1201         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
1202
1203         Remove hard-coded limit for floating point registers, use
1204         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
1205
1206         Notice that in MacOS X calling conventions you can fit a lot more
1207         floating point values in registers, so I should update the PInvoke
1208         test to excercise the passing of floating point values on the
1209         stack (currently broken).
1210         
1211 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
1212
1213         * tramp-ppc.c (create_trampoline_code): Added
1214         JUMP_TRAMPOLINE_SIZE. 
1215         (ppc_magic_trampoline): Follow the pattern from
1216         x86_magic_trampoline: if code is set to zero, return. 
1217         (create_trampoline_code): Always pass MonoMethod to the jump
1218         trampoline, before it was passing a null.
1219         (mono_arch_create_jump_trampoline): Implement the jump stub, could
1220         share the code with mono_arch_create_jit_trampoline. 
1221
1222         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
1223         implemented.
1224         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
1225         implemented.  
1226
1227         * cpu-g4.md: Added length for jmp instruction, the worst case
1228         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
1229         for save_lmf).
1230
1231 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
1232
1233         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
1234
1235 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
1236
1237         * mini.c: Only set bblock->real_offset when adding a new bblock, and
1238         before each IL instruction.
1239
1240         * mini.c (CEE_BOX): Fix warnings.
1241
1242 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1243
1244         * mini.c: removed a few unused vars and extra whitespace.
1245
1246 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
1247
1248         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
1249         checks.
1250         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
1251         index.
1252         (OP_GETCHR): use the above
1253         (CEE_LDELEMA): use the above.
1254
1255         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
1256         version of the generic impl.
1257         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
1258         (CEE_LDELEMA): use the above.
1259
1260 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
1261
1262         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
1263         Fixes #56317.
1264
1265         * iltests.il: Added new regression test for #56317.
1266
1267 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
1268
1269         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
1270         under NetBSD. Fixes #56450.
1271
1272         * liveness.c (update_gen_kill_set): Fix previous patch.
1273
1274 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1275
1276         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
1277
1278 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
1279
1280         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
1281         ldsfld and ldsflda.
1282
1283         * inssel-sparc.brg: Add more optimizations.
1284
1285         * mini-sparc.c: Replace multiply/divide with shifts if possible.
1286
1287 2004-04-01  Martin Baulig  <martin@ximian.com>
1288
1289         * mini.c (handle_box): New static function; moved the
1290         implementation of CEE_BOX here.
1291         (mono_method_to_ir): Added `constrained_call' variable.
1292         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
1293         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
1294         mono_method_get_constrained() to get the method.
1295
1296 2004-04-01  Martin Baulig  <martin@ximian.com>
1297
1298         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
1299         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
1300         (mono_method_to_ir): We don't need these macros anymore since
1301         mono_class_get_full() already takes care of it. 
1302
1303 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1304
1305         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
1306         use @function (as doesn't accept #function here) and check the return
1307         value of system and stop if fails.
1308
1309 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1310
1311         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
1312
1313 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
1314
1315         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
1316
1317         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
1318
1319         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
1320         #56223.
1321
1322         * basic-long.cs: Add test for negation of Int64.MinValue.
1323
1324 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
1325
1326         * mini-sparc.c: Update status.
1327
1328         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
1329
1330         * exceptions-sparc.c: Fix return value in filters.
1331
1332         * inssel-sparc.brg: Fix register allocation in some rules.
1333
1334 2004-03-28  Martin Baulig  <martin@ximian.com>
1335
1336         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
1337         if neccessary.  
1338
1339 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
1340
1341         * mini-x86.c (mono_arch_patch_code): Fix warnings.
1342         
1343         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
1344         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
1345         remove unused conv_u4 opcode.
1346
1347         * mini-x86.c: Remove valgrind workaround since it slows down things
1348         even when mono is not run under valgrind.
1349
1350 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
1351
1352         * mini-sparc.c: Update status.
1353
1354         * inssel-sparc.brg: Add some optimizations.
1355
1356         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
1357         future delay slot filling. Add support for varargs, tail calls and JMP.
1358
1359         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
1360         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
1361
1362         * inssel.brg: Fix register allocation in OP_ARGLIST.
1363
1364         * inssel.brg: Fix warnings.
1365
1366 2004-03-25  Martin Baulig  <martin@ximian.com>
1367
1368         * mini.c (inflate_generic_field): Removed.
1369         (mini_get_method): Removed, use mono_get_method_full(),
1370         (mini_get_class): Removed, use mono_class_get_full().
1371         (mono_method_to_ir): Pass our generic context to
1372         mono_field_from_token().        
1373
1374 2004-03-25  Martin Baulig  <martin@ximian.com>
1375
1376         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
1377         of a `MonoMethod *'.
1378         (mini_get_method): Take a `MonoGenericContext *' instead
1379         of a `MonoMethod *'.
1380         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
1381         a new local variable called `generic_context' which holds the
1382         current `MonoGenericContext *'; use it to lookup things.
1383
1384 2004-03-24  Martin Baulig  <martin@ximian.com>
1385
1386         * mini.c (mini_get_class): New static method; if we're inside a
1387         generic instance, inflate the class if neccessary.
1388         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
1389
1390 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
1391
1392         * iltests.il: New regression test for #55976.
1393
1394         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
1395         #55976.
1396
1397 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
1398
1399         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
1400         output.
1401
1402 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
1403
1404         * liveness.c: Consider SSA stores as well as loads when making vars
1405         volatile.
1406
1407         * exceptions.cs: New regression tests for register allocation.
1408         
1409 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
1410
1411         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
1412         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
1413           domain lock only to protect puntual access to data structures.
1414           Added access lock for sighash, jit_icall_hash_name, 
1415           jit_icall_hash_addr and domain->code_mp.
1416
1417 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
1418
1419         * driver.c: Print SIGSEGV handling method.
1420
1421         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
1422
1423         * mini.c (setup_jit_tls_data): Handle case when this is called
1424         multiple times for a thread.
1425
1426         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
1427         is different from fbxx_un. Fixes #54303. Also use constants instead of
1428         magic numbers in a lot of places.
1429
1430 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
1431
1432         * exceptions.cs: Fix cctor test when --regression is used.
1433
1434 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
1435
1436         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
1437         for Linux/ppc.
1438
1439 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
1440
1441         * inssel-ppc.brg: fixed register assignments for some rules.
1442
1443 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
1444
1445         * exceptions.cs: Add test for exceptions in static constructors.
1446
1447         * mini.c (mono_jit_compile_method_with_out): Move the calling of
1448         static constructors outside the domain lock. Fixes #55720.
1449
1450 2004-03-17  Martin Baulig  <martin@ximian.com>
1451
1452         * mini.c (get_generic_field_inst): Removed, this'll never happen.
1453         (inflate_generic_field): Take the `MonoMethod *' instead of the
1454         `MonoClass *' and added support for generic method.
1455         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
1456         have a `field->parent->gen_params', only inflate the field if it's
1457         an open constructed type.
1458
1459 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
1460
1461         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
1462         exception object instead of the preconstructed ones.
1463
1464 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1465
1466         * mini.c: reverted changed to sigsegv_signal_handler commited
1467         accidentally in the previous patch.
1468
1469 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1470
1471         * mini.c:
1472         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
1473         running --aot with an old assembly.
1474
1475 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
1476
1477         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
1478         point values.
1479
1480         * mini-sparc.c: Add support for v9 branches with prediction.
1481
1482 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
1483
1484         * mini.c (mini_init): #warning is GNUC only
1485
1486         * mini-sparc.h: implement __builtin_frame_address
1487         and __builtin_return_address for Sun C compiler
1488
1489 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
1490
1491         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
1492
1493 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
1494
1495         * basic-calls.cs: Add test for unaligned byref long argument passing.
1496
1497         * mini-ops.h: Add sparcv9 compare and branch instructions.
1498
1499         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
1500         v9 instructions if we have a v9 cpu.
1501
1502         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
1503         registers for global allocation.
1504
1505         * exceptions-sparc.c: Fixes.
1506         
1507 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
1508
1509         * liveness.c (mono_analyze_liveness): Optimized version.
1510
1511         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
1512
1513         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
1514         sparc work.
1515
1516         * basic-float.cs basic-calls.cs: New regression tests.
1517
1518 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
1519
1520         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
1521         sigaltstack implementation.
1522
1523         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
1524         
1525         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
1526         stuff if SIGSEGV_ON_ALTSTACK is not defined.
1527
1528 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
1529
1530         * mini.c: Fix warnings.
1531         
1532         * mini.c (mono_resolve_patch_target): New function which contains the
1533         arch independent part of the patching process.
1534
1535         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
1536         patching code to a separate function.
1537
1538 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
1539
1540         * mini.c (add_signal_handler): ifdef out on Windows
1541
1542 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
1543
1544         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
1545         cpu-sparc.md: Add exception handling support + other fixes.
1546
1547         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
1548         typed GC detection in --version.
1549
1550         * basic.cs exceptions.cs: New regression tests.
1551
1552         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
1553         the arch specific code can store data during a compilation.
1554
1555         * mini-ops.h: Add OP_SETFRET.
1556
1557         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
1558         function, register a separate icall for each arity, so the icalls can
1559         get a wrapper.
1560         
1561         * mini.c (mono_print_tree): Print negative offsets in a more readable
1562         form.
1563         
1564         * mini.c: Make signal handling work on sparc.
1565         
1566         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
1567
1568         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
1569
1570         * jit-icalls.c: Emulate truncl by aintl on solaris.
1571
1572         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
1573
1574 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
1575
1576         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
1577
1578 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
1579
1580         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
1581         a MarshalByRef type, inline a method that performs the check, taking into
1582         account that the object can be a proxy. Also implemented tow new opcodes:
1583         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
1584         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
1585         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
1586
1587 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
1588
1589         * mini-ppc.c: if a relative branch displacement is too big
1590         but it points to and area reachable with an absolute branch, 
1591         avoid the thunks.
1592
1593 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
1594
1595         * mini.c: optimize small copies in cpblk.
1596
1597 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
1598
1599         * basic-calls.cs basic-float.cs: New regression tests.
1600
1601         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
1602         negative offsets from %fp. Implement localloc. Fix local register 
1603         allocation. Fix the case when the this argument needs to be saved to
1604         the stack. Implement some missing opcodes.
1605
1606 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
1607
1608         * mini.c (mini_method_compile): Reenable global regalloc in methods
1609         with exception handlers.
1610
1611         * linear-scan.c (mono_varlist_sort): Fix warning.
1612
1613         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
1614
1615         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
1616         regalloc costs.
1617
1618         * liveness.c: Make all variables uses in exception clauses volatile, to
1619         prevent them from being allocated to registers. Fixes #42136.
1620
1621 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
1622
1623         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
1624         causes regressions.
1625
1626         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
1627         argument to mono_arch_regalloc_cost.
1628
1629         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
1630         precisely.
1631
1632 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
1633
1634         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
1635         Make the cost of allocating a variable to a register arch dependent.
1636
1637         * basic-calls.cs: Fix compilation of tests.
1638         
1639         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
1640         helper function to cut back on the number of #ifdefs needed.
1641
1642         * mini-ppc.c: Fix compilation.
1643
1644         * basic-calls.cs: New regression tests.
1645
1646         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
1647
1648         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
1649         of l0 since that is callee saved.
1650
1651         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
1652         to virtual calls.
1653
1654         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
1655         of delay instruction.
1656
1657         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
1658
1659         * mini.h (MonoCallInst): Add 'virtual' flag.
1660
1661         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
1662
1663 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
1664
1665         * *.cs: New regression tests.
1666
1667         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
1668         work.
1669
1670         * mini.c (mono_runtime_install_handlers): Fix build.
1671
1672         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
1673         'signal_stack_size' members.
1674
1675         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
1676         alternate signal stack.
1677
1678         * exceptions-x86.c: Add stack overflow handling.
1679
1680         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
1681         functions to arch independent code.
1682
1683         * mini.c (mono_print_tree): Print more detailed info for load_membase
1684         opcodes.
1685         
1686 2004-02-23  Martin Baulig  <martin@ximian.com>
1687
1688         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
1689
1690 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
1691
1692         * mini-x86.c: fixed reg allocation for div/rem.
1693
1694 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
1695
1696         * driver.c (mono_main): Report some configuratio options on --version.
1697
1698 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
1699
1700         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
1701         low in the address space. Correctly flush memory in thunks where we
1702         output native code.
1703
1704 2004-02-20  Martin Baulig  <martin@ximian.com>
1705
1706         * mini.c (mini_get_method): New static method; inflate all generic
1707         methods and methods in open generic instances.
1708         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
1709         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
1710
1711 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
1712
1713         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
1714
1715         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
1716
1717 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
1718
1719         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
1720
1721         * mini-sparc.c (flushi mono_arch_output_basic_block): make
1722         it compile using Sun's compiler.
1723
1724 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
1725
1726         * mini-ops.h inssel-sparc.brg cpu-sparc.md mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Sparc port, part I.
1727
1728         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
1729
1730 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
1731
1732         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
1733         code.
1734         * mini-ppc.c: handle calls outside of the allowed range with thunks
1735         allocated using the code manager.
1736         * tramp-ppc.c: use the code manager to hold generated native code.
1737         Fixed the magic trampoline to just patch vtable entries.
1738
1739 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
1740
1741         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
1742         independent file.
1743
1744 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
1745
1746         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
1747         PPC.
1748
1749         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
1750         if we have a working __thread implementation.
1751
1752         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
1753         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
1754
1755 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
1756
1757         * mini-x86.c: Fix compilation under gcc 2.
1758         
1759 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
1760
1761         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
1762         contains a call to the wrapped function.
1763
1764         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
1765         OP_<CALL>_IMM opcodes, and use them under X86.
1766         
1767         * mini.c (mono_jit_find_compiled_method): Fix warning.
1768
1769         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
1770
1771         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
1772
1773         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
1774         functionality to mini.c.
1775
1776         * mini.c (mono_create_jump_trampoline): New function to create a jump
1777         trampoline. Return a compiled method instead of a trampoline if it
1778         exists. Add a cache for jump trampolines.
1779
1780         * mini.c (mono_jit_find_compiled_method): New function to return a
1781         compiled method if it exists.
1782
1783         * mini-x86.c: Call mono_create_jump_trampoline instead of 
1784         mono_arch_create_jit_trampoline.
1785
1786         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
1787         a jump trampoline. Fixes #52092.
1788         
1789 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
1790
1791         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
1792         which is not up-to-date. Add check_corlib_version () instead.
1793
1794         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
1795         have to call it.
1796         
1797         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
1798         since newer valgrind versions do not need it.
1799
1800         * mini.c (mono_jit_compile_method_with_opt): New helper function to
1801         compile a method with a given set of optimizations.
1802
1803         * mini.c: Compile icall wrappers on-demand instead of at startup.
1804
1805         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
1806         wrapper for an icall.
1807
1808 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
1809
1810         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
1811         #54063.
1812
1813         * iltests.il: Add test for non-empty stack before switch instruction.
1814
1815 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
1816
1817         * mini.c: Add support for new stringbuilder marshalling conventions.
1818
1819         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
1820
1821 2004-02-01  Martin Baulig  <martin@ximian.com>
1822
1823         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
1824         in `ginst->mtype_argv'.
1825
1826 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
1827
1828         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
1829         facilitate grepping.
1830
1831 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
1832
1833         * mini.c: fixed buglet in initobj generic implementation for references.
1834
1835 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
1836
1837         * Makefile.am: make the version script conditional.
1838         * jit-icalls.c: handle missing truncl().
1839
1840 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
1841
1842         * exceptions.cs: Add more tests for double->int conversion.
1843
1844         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
1845         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
1846
1847 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
1848
1849         * driver.c: make --verbose --version emit an error
1850         if the loaded corlib doesn't match the runtime version.
1851
1852 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
1853
1854         * mini-ppc.h: export ppc_patch().
1855         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
1856         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
1857         on par or better than on MacOSX.
1858
1859 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
1860
1861         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
1862         mono_lookup_pinvoke_call.
1863
1864         * mini-x86.c: Under windows, the default pinvoke calling convention is
1865         stdcall. Fixes #52834.
1866
1867         * mini.c (optimize_branches): Add an upper bound to the number of
1868         iterations to prevent infinite loops on strange loops. Fixes #53003.
1869
1870 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
1871
1872         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
1873         and ISINST. Fixes #52093.
1874
1875         * objects.cs (test_0_vector_array_cast): New tests.
1876         
1877 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
1878
1879         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
1880         checking in Array.Set ().
1881
1882         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
1883         #52590.
1884
1885         * object.cs (test_0_multi_array_cast): New regression test.
1886
1887 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
1888
1889         * exceptions-ppc.c: fix build on Linux/PPC.
1890
1891 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
1892
1893         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
1894         running under valgrind.
1895         (x86_magic_trampoline): Fix build bustage.
1896
1897         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
1898         negative values as well. This is needed for the encoding of the line number
1899         info, since sometimes the line numbers are not in increasing order.
1900
1901 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
1902
1903         * cpu-pentium.md (localloc): Increase the size of the localloc 
1904         instruction since it is a loop under Win32.
1905
1906         * debug-mini.c (record_line_number): Get rid of unneccesary memory
1907         allocation.
1908
1909 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
1910
1911         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
1912         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
1913         Max Horn (max@quendi.de). Fix file names in comments.
1914
1915 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
1916
1917         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
1918         avoid stack overflow.
1919         (replace_usage): Avoid uninitialized variable warnings.
1920
1921         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
1922         and taking the address of valuetype variables.
1923
1924 2004-01-03  Patrik Torstensson
1925
1926         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
1927         for other purposes than FP later on.
1928
1929 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
1930
1931         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
1932         of tail calls.
1933
1934 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
1935
1936         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
1937
1938 2003-12-30  Patrik Torstensson <p@rxc.se>
1939
1940         * mini-x86.h: Decreased number of availiable fp regs.
1941         Solves corner cases with FP spilling.
1942
1943 2003-12-23  Patrik Torstensson <p@rxc.se>
1944
1945         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
1946         for floating point stack tracking / spilling on x86. 
1947         Fixes bug #49012.
1948         
1949         * basic-float.cs: added float mul overflow test.
1950
1951 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
1952
1953         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
1954
1955 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
1956
1957         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
1958         supports for cond branches that overflow the immediate
1959         overflow offset. mcs can compile simple programs.
1960
1961 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
1962
1963         * exceptions-ppc.c: exception handling support wip:
1964         finally handlers get run on exception.
1965
1966 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
1967
1968         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
1969         profiling.
1970
1971 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
1972
1973         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
1974         initial support for stack walking and unwinding.
1975
1976 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
1977
1978         * driver.c (mono_main): Make corlib-out-of-sync message more 
1979         descriptive. Also remove verify_corlib call.
1980
1981 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
1982
1983         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
1984         not overlap with other call's arguments, too.
1985
1986 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
1987
1988         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
1989         move to arch-specific code the choice of arch-specific
1990         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
1991         * mini.c: ensure emulation calls will not interleave
1992         with other calls.
1993
1994 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
1995
1996         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
1997         the magic trampoline stack frame is dropped before executing
1998         the new method.
1999
2000 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
2001
2002         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
2003         and integer to fp conversions. Added support for overflowing
2004         arguments on the stack. Reserve a couple more registers as temps.
2005         Added support for aot compilation (as output still needs to be
2006         tweaked, though).
2007
2008 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
2009
2010         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
2011         Don't overwrite return register in some corner cases.
2012
2013 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
2014
2015         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
2016         static constructors when AOT compiling.
2017
2018         * driver.c (mono_main): Call mono_check_corlib_version.
2019
2020 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
2021
2022         * cpu-g4.md, basic.cs: fixed div target register.
2023
2024 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
2025
2026         * mini-ppc.c, basic.cs: shl_imm fix with test.
2027
2028 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
2029
2030         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
2031         structures by value. Misc fixes.
2032         * objects.cs: more tests.
2033
2034 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
2035
2036         * mini-ppc.c: lconv.ovf.i implemented.
2037
2038 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2039
2040         * mini.c:
2041         (mini_init): don't error out if someone already called g_thread_init.
2042
2043 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
2044
2045         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
2046         to be any type per the spec. Fix abnormal memory usage when
2047         the same object is repeatedly thrown.
2048
2049 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
2050
2051         * mini.c: check for overruns in IL code.
2052
2053 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
2054
2055         * TODO: Add/remove some todo entries.
2056
2057 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
2058
2059         * driver.c (mono_main): Call mono_verify_corlib.
2060
2061 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
2062
2063         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
2064         This has been moved to mini.c
2065         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
2066         type being casted is marshalbyref it could be a proxy, so instead of
2067         emitting the type check code, emit a call to a runtime method that will
2068         perform the check by calling CanCastTo if needed.
2069
2070 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
2071
2072         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
2073         methods with large stack frames under Win32.
2074
2075 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
2076
2077         * Makefile.am: Distribute regression tests.
2078
2079         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
2080         at the end instead of inserting each variable into the sorted list.
2081
2082         * linear-scan.c (mono_varlist_sort): New helper function.
2083         
2084 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
2085
2086         * mini.c: ensure arguments and locals are within bounds.
2087
2088 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
2089
2090         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
2091         related fixes.
2092
2093 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
2094
2095         * mini.c (mono_cprop_copy_values): Fix crash.
2096
2097         * aot.c: Set verbosity back to 0.
2098         
2099 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
2100
2101         * regalloc.c: complete memory leak fix by Laurent Morichetti
2102         (l_m@pacbell.net).
2103
2104 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
2105
2106         * driver.c (main_thread_handler): Revert the previous patch.
2107
2108         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
2109         under valgrind.
2110
2111         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
2112         memory from the memory pool.
2113
2114         * driver.c (main_thread_handler): Turn on all optimizations when
2115         --aot is used.
2116
2117         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
2118         an array for better performance.
2119
2120         * regalloc.c (mono_regstate_assign): Fix memory leak.
2121
2122         * debug-mini.c (mono_debug_serialize_debug_info): New function to
2123         serialize the debug info.
2124
2125         * debug-mini.c (mono_debug_add_aot_method): New function to load the
2126         debug info from the serialized representation.
2127
2128         * aot.c: Save debug info into the generated file and load it when 
2129         loading a method.
2130
2131         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
2132
2133 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
2134
2135         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
2136         More FP-related fixes.
2137
2138 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
2139
2140         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
2141         and register allocation buglet. Hello world now runs.
2142
2143 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
2144
2145         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
2146         * tramp-ppc.c: fixed class init trampoline.
2147         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
2148
2149 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
2150
2151         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
2152         mini.c: more ppc changes/fixes.
2153
2154 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
2155
2156         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
2157         Also optimize the case when the arguments are the same in the caller 
2158         and in the callee.
2159
2160         * iltests.il: Add tests for tail calls with valuetype arguments.
2161
2162 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
2163
2164         * mini-ppc.c: fixes for struct return type.
2165
2166 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
2167
2168         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
2169         mono_spillvar_offset() to arch-specific code.
2170
2171 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
2172
2173         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
2174
2175 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
2176
2177         * exceptions-x86.c: Fix stack space leaks.
2178         
2179         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
2180         registers from the lmf if the method has save_lmf set.
2181
2182 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
2183
2184         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
2185         of icall wrappers into InvokeInDomain, since these are now per-domain.
2186
2187 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
2188
2189         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
2190         make some opcode emulation and intrinsic ops enabled/disabled 
2191         according to the architecture. More fixes.
2192
2193 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
2194
2195         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
2196
2197 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
2198
2199         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
2200         arch-specific handling for 'this' and struct return type to
2201         arch-specific code.
2202
2203 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2204
2205         * aot.c: prevent divide by zero error when reporting (it happened with
2206         Accessibility.dll).
2207
2208 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
2209
2210         * mini.h (inst_switch): Remove unused macro.
2211
2212 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2213
2214         * aot.c:
2215         (load_aot_module): free 'info->methods' and 'info' properly. No more
2216         "free(): invalid pointer blah" messages when you have an old aot
2217         compiled assembly.
2218
2219 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
2220
2221         * jit-icalls.c, mini.c: Added support for context static fields.
2222
2223 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
2224
2225         * mini.c (mono_method_blittable): Methods which set LastError are not 
2226         blittable either. Fixes #51108.
2227         
2228 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
2229
2230         * mini.c: flush icache.
2231         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
2232
2233 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
2234
2235         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
2236
2237 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
2238
2239         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
2240         safe on IA32.
2241
2242         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
2243         vararg calls.
2244
2245         * inssel.brg (CEE_MKREFANY): Fix AOT case.
2246
2247 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
2248
2249         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
2250         instruction when the result is discarded.
2251
2252         * iltests.il (test_0_div_regalloc): New regression test.
2253
2254         * arrays.cs: Fix compilation error.
2255
2256 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
2257
2258         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
2259         float rules to inssel-x86.brg: sane architectures with FP registers
2260         don't need to implement these rules.
2261
2262 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
2263
2264         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
2265
2266 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
2267
2268         * mini.h, inssel-long32.brg: fixed endianess issues in int64
2269         implementation of 32 bit systems.
2270
2271 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
2272
2273         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
2274         (Jeroen Zwartepoorte).
2275
2276 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
2277
2278         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
2279         the caller and the callee matches.
2280         
2281         * mini.c (mono_method_to_ir): Add comment.
2282
2283         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
2284         signbit is missing on some platforms.
2285
2286 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
2287
2288         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
2289
2290         * mini.c (setup_jit_tls_data): Call the new function.
2291         
2292         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
2293
2294         * mini-x86.c: Add experimental support for fast access to the lmf
2295         structure under NPTL/Linux 2.6.x.
2296
2297 2003-11-06  Martin Baulig  <martin@ximian.com>
2298
2299         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
2300         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
2301         the debugger.
2302
2303 2003-11-02  Martin Baulig  <martin@ximian.com>
2304
2305         * mini.c (inflate_generic_field): New static method.
2306         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
2307         generic instance and the field is declared in a generic type, call
2308         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
2309
2310 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
2311
2312         * mini.h mini.c (mono_method_same_domain): New function to return
2313         whenever the caller and the callee are in the same domain.
2314
2315         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
2316
2317 2003-10-30  Martin Baulig  <martin@ximian.com>
2318
2319         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
2320         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
2321         method parameters.
2322         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
2323         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
2324
2325 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
2326
2327         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
2328         propagation.
2329
2330         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
2331         object here, so it is in the correct appdomain etc.
2332
2333 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
2334
2335         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
2336         already done.
2337         (mono_method_to_ir): Avoid freeing the type created returned from
2338         mono_type_create_from_typespec, since it is put into an internal cache
2339         by the function. Fixes pointer.exe.
2340
2341         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
2342         trampolines for icalls and pinvokes as well. Fixes #33569.
2343
2344 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
2345
2346         * mini.c: Update after appdomain changes.
2347
2348         * mini.c (mono_jit_compile_method_inner): Allways compile native
2349         method wrappers in the root domain, since there can only be one
2350         instance of them, whose address is stored in method->info.
2351
2352 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
2353
2354         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
2355         environment variable. Instead detect automatically whenever running
2356         under valgrind using the magic macro RUNNING_ON_VALGRIND from
2357         valgrind.h.
2358
2359 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
2360
2361         * trace.c, trace.h: New files that implement the new trace option
2362         parsing. 
2363
2364         * driver.c: Document new --trace options.
2365
2366         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
2367         mini-x86.c: Apply:
2368
2369         -       if (mono_jit_trace_calls)
2370         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
2371
2372         * mini.h: prototypes.
2373         
2374 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
2375
2376         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
2377
2378         * mini.c inssel.brg: Implement typedefbyref opcodes.
2379
2380         * mini.c (mono_jit_compile_method): Remove unused local variable.
2381
2382         * mini.c (mono_jit_compile_method_inner): Ditto.
2383         
2384 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
2385
2386         * tramp-x86.c (x86_class_init_trampoline): Fix build.
2387         
2388         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
2389
2390 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
2391
2392         * mini.c (mono_no_aot): Remove unused global variable.
2393
2394         * mini.c: Thread safety fixes.
2395
2396 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
2397
2398         * mini.c (mono_create_class_init_trampoline): Add a lock around
2399         class_init_hash_addr.
2400
2401         * arrays.cs (test_0_newarr_emulation): Add new regression test for
2402         #30073.
2403
2404         * mini.c: Decompose the NEWARR instruction before decomposing its
2405         arguments. Fixes #30073.
2406
2407 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
2408
2409         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
2410         convention.
2411
2412 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
2413
2414         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
2415
2416         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
2417
2418         * driver.c: Add support for compiling icall wrappers to --compile.
2419
2420 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
2421
2422         * inssel.brg: The empty value in class->interface_offsets is -1, not
2423         0. Fixes #49287.
2424
2425 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
2426
2427         * objects.cs: New test for 'is' operator on an array of interfaces.
2428
2429 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
2430
2431         * tramp-ppc.c: update trampoline code to support jumps
2432         and class initialization.
2433
2434 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
2435
2436         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
2437
2438         * inssel.brg (OP_UNBOXCAST): Fix #46027.
2439
2440         * inssel.brg (OP_UNBOX): Remove unused rule.
2441
2442         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
2443         region instead of one for each method. Fixes #47813.
2444
2445 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
2446
2447         * exceptions.cs (test_0_nested_finally): New regression test for
2448         nested exception handlers.
2449
2450         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
2451
2452         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
2453
2454         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
2455         inlining.
2456
2457         * mini.c (mono_method_check_inlining): Make the inlining limit 
2458         configurable by an environment variable.
2459         
2460         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
2461
2462         * mini.h: Bump AOT file version.
2463
2464         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
2465         token, store the image along with the token, since the token might not 
2466         refer to the same image as the method containing the relocation, 
2467         because of inlining.
2468
2469 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
2470
2471         * mini.c (mono_precompile_assemblies): New function to compile
2472         all methods in all loaded assemblies.
2473
2474         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
2475
2476         * regalloc.h regalloc.c (MonoRegState): Change the type of 
2477         iassign and fassign to int*, since they can contain large negative
2478         values if the register is spilled. Also added some comments. Fixes
2479         #45817.
2480
2481         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
2482         under Win32. Fixes #42964.
2483
2484 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
2485
2486         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
2487
2488         * aot.c: Added support for AOT compiling methods which contain calls
2489         to wrappers. Currently, only remoting-invoke-with-check wrappers are
2490         handled.
2491         
2492         * driver.c (compile_all_methods): Run the compilation in a thread
2493         managed by mono. Fixes #44023.
2494
2495         * mini.c (mono_codegen): Print full method name in verbose output.
2496
2497         * mini-x86.c (mono_arch_patch_code): Fix warning.
2498         
2499         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
2500         jumps, since the method we are jumping to might be domain-specific.
2501
2502         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
2503
2504 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
2505
2506         * inssel.brg: string chars are unsigned.
2507
2508 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
2509
2510         * TODO: New todo item.
2511
2512         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
2513         which calls mono_runtime_class_init and patches the call site to
2514         avoid further calls.
2515         (mono_arch_create_class_init_trampoline): New arch specific function 
2516         to create a class init trampoline.
2517         (create_trampoline_code): Generalized so it can create
2518         class init trampolines as well.
2519
2520         * mini.c (helper_sig_class_init_trampoline): New helper variable.
2521         (mono_create_class_init_trampoline): New function to create and cache
2522         class init trampolines.
2523         (mono_find_class_init_trampoline_by_addr): New function to lookup the
2524         vtable given the address of a class init trampoline. Used by the
2525         patching process.
2526         (mono_codegen): Generate a call to a trampoline instead of
2527         mono_runtime_class_init in LDSFLD[A].
2528         (mono_codegen): Add relocations for the new trampoline.
2529         
2530         * mini.h mini-x86.c aot.c: Added a new relocation type: 
2531         MONO_PATCH_INFO_CLASS_INIT.
2532
2533         * mini.h: Bump AOT version number.
2534
2535         * aot.c: Create a copy of the loaded code instead of using the original
2536         so methods which call each other will be close in memory, improving
2537         cache behaviour.
2538         
2539         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
2540         patch since it breaks the regression tests.
2541         
2542         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
2543         for the register saving instruction sequence since the 
2544         frame_state_for function in glibc 2.3.2 don't seem to detect it.
2545
2546 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
2547
2548         * TODO: Fix todo item && remove another.
2549
2550 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
2551
2552         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
2553         previous checkin.
2554
2555         * aot.c: Moved the check for MONO_LASTAOT into the initialization
2556         function of the module.
2557
2558         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
2559         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
2560         --no-aot command line option.
2561
2562 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
2563
2564         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
2565         by Bernie Solomon (bernard@ugsolutions.com).
2566
2567         * inssel.brg: Refactor the interface offset table related code into
2568         its separate functions and add support for the AOT case.
2569
2570 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
2571
2572         * aot.c (mono_aot_get_method_inner): Fix memory leak.
2573         
2574         * aot.c: Added mono_aot_verbose variable and made all debugging
2575         output depend on the value of this variable.
2576
2577         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
2578         method_label and info_label.
2579
2580         * mini.h mini-x86.c aot.c: Added a new relocation type 
2581         MONO_PATCH_INFO_IID for klass->interface_id.
2582
2583         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
2584         the MonoJitInfo structure.
2585
2586         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
2587         a non-root appdomain in shared mode.
2588
2589 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
2590
2591         * aot.c: make aot loader less verbose. Remove free of unused variable.
2592
2593 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
2594
2595         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
2596
2597         * .cvsignore: Added *.dll.
2598
2599         * mini.c (mono_print_tree_nl): New function callable while debugging.
2600
2601         * mini.c (mono_print_code): Export this.
2602
2603         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
2604         patched code.
2605
2606 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
2607
2608         * mini.h (MonoCompile): Added 'jit_info' field.
2609
2610         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
2611         the cfg structure, since it is needed by the AOT compiler.
2612
2613         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
2614
2615         * aot.c: A major rewrite. Changes include:
2616         - save exception tables for methods which have them.
2617         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
2618         to g_module_symbol.
2619         - reworked the file format so it is now much smaller and needs
2620         fewer relocation entries.
2621         
2622 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
2623
2624         * aot.c (load_aot_module): Fix build bustage on platforms without
2625         Boehm GC.
2626
2627 2003-09-04  Martin Baulig  <martin@ximian.com>
2628
2629         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
2630
2631 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
2632
2633         * TODO: Some new optimization ideas.
2634
2635         * aot.c: Move AOT module loading logic here from mono_assembly_open.
2636
2637         * aot.c: Save the optimization flags used to compile the code into
2638         the AOT module.
2639
2640         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
2641         support emitting domain specific code.
2642         
2643         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
2644         no longer domain neutral. It can be made domain neutral by compiling 
2645         with --optimize=shared.
2646
2647         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
2648         between appdomains.
2649
2650         * driver.c mini.h mini.c: New --no-aot debugging option which disables
2651         loading of AOT code.
2652
2653         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
2654         
2655         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
2656         if there is no domain neutrality information.
2657
2658 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
2659
2660         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
2661         format version into the generated library.
2662
2663         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
2664         callee method into the caller since one of them could be shared.
2665
2666         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
2667         system exceptions from AOT code now works.
2668
2669         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
2670         method if it is domain neutral and the callee is not.
2671
2672         * graph.c (cfg_emit_one_loop_level): Fix warning.
2673
2674 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
2675
2676         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
2677         last checkin.
2678
2679 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
2680
2681         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
2682         is needed  by code which is executed before mono_runtime_init ().
2683         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
2684         
2685         * mini.c (mono_thread_abort): Fix warning.
2686         (mono_jit_compile_method): Call static constructor in the AOT case too.
2687
2688         * aot.c (mono_compile_assembly): Fix warning.
2689
2690 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2691
2692         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
2693
2694 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
2695
2696         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
2697
2698         * cpu-pentium.md: Fix the length of call opcodes so they include the
2699         ESP restoring instruction. Fixes #47968.
2700
2701 2003-08-28  Martin Baulig  <martin@ximian.com>
2702
2703         * mini-x86.c (mono_arch_call_opcode): Added support for
2704         MONO_TYPE_GENERICINST.
2705
2706         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
2707
2708 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
2709
2710         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
2711         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
2712
2713         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
2714         metadata_section.
2715
2716 2003-08-26  Martin Baulig  <martin@ximian.com>
2717
2718         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
2719         when reporting an error, set this to the actual error location.
2720         (mono_method_to_ir): Report the correct error location if
2721         get_basic_blocks() returned an error.
2722
2723 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
2724
2725         * mini.c (mono_type_blittable): OBJECT is not blittable.
2726         (mono_method_blittable): Methods which have marshalling descriptors
2727         are not blittable either. Fixes #47842.
2728
2729 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
2730
2731         * driver.c mini.c: Use an environment variable instead of a global 
2732         variable. Also fix the build.
2733
2734         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
2735         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
2736         reporting this. 
2737
2738         * driver.c mini.c: Added --with-valgrind option to turn off some
2739         code which prevents mono from running under valgrind.
2740
2741         * mini.c (mono_emit_call_args): Fixed warning.
2742
2743         * mini.c (mono_emulate_opcode): Fixed warning.
2744
2745 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
2746
2747         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
2748         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
2749         regalloc.c, regalloc.h: specify available registers in arch-specific
2750         code and support floats in the regallocator (patch by Laurent Morichetti 
2751         <l_m@pacbell.net>)
2752
2753 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
2754
2755         * mini.c: mono_thread_current() can be called only after
2756         mono_runtime_init(): rearrange code to not call it early on.
2757
2758 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
2759
2760         * mini.c: allocate jump tables in the code mempools.
2761
2762 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
2763
2764         * mini.c, mini.h: make sure per-thread data allocated by the jit is
2765         freed.
2766
2767 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
2768
2769         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
2770         12 to 16.  This fixes bug #47453.
2771
2772
2773 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
2774
2775         * mini-ppc.c: fixed indexed load and unsigned compares.
2776
2777 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
2778
2779         * mini.c: reenabled installation of handler for
2780           thread abort signal.
2781
2782 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
2783
2784         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
2785         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
2786         until it's fixed and actually useful.
2787
2788 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
2789
2790         * inssel-long32.brg: couple more opcodes implemented.
2791
2792 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
2793         
2794         * mini-sparc.c: Even more opcodes implemeted.
2795
2796 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
2797
2798         * mini-sparc.c: More opcodes implemented.
2799
2800 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
2801
2802         * mini-sparc.c: More opcodes implemented.
2803
2804 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
2805
2806         * inssel-sparc.brg: Add some needed rules.  Direct
2807         copy from PPC.
2808         * Makefile.am: Use inssel-sparc.brg
2809         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
2810         an assert happy for now.
2811
2812 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
2813
2814         * mini-sparc.c: Fixed compile errors.
2815         * exceptions-sparc.c: Same.  We now produce a mono binary 
2816         on sparc-linux.  Yea.
2817
2818 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
2819
2820         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
2821         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
2822         They compile, but do not work.
2823
2824 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2825
2826         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
2827         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
2828         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
2829         (ct@gentoo.org).
2830
2831 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
2832
2833         * mini.c: more opcodes implemented and better support for generics.
2834
2835 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
2836
2837         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
2838         * mini.c, mini.h: first cut at generics support: some new instructions 
2839         added and changed the behaviour of some of the existing ones.
2840
2841 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
2842
2843         * mini.c: Removed definition of metadata_shared mutex here.
2844
2845 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
2846
2847         * mini-x86.c: make vararg calls work for instance methods.
2848
2849 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
2850
2851         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
2852         returns the arguments in a separte list, now.
2853
2854 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
2855
2856         * aot.c, mini.c: updates for array type representation changes.
2857
2858 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
2859
2860         * mini.c: register function to perform jit shutdown.
2861
2862 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2863
2864         * mini.c: use a faster allocator if possible.
2865
2866 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
2867
2868         * aot.c: some cleanups and portability changes.
2869
2870 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
2871
2872         * mini.c: use faster allocation for CEE_BOX if possible.
2873
2874 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
2875
2876         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
2877         Moved inlined mempcy code to its own function so that is can be
2878         reused. Added an inline memset function as well (optimized initobj).
2879         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
2880
2881 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
2882
2883         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
2884
2885 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
2886
2887         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
2888         arch code can setup the cpu for CLR execution, if needed.
2889         We use it on x86 to set the precision of FP operations.
2890
2891 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
2892
2893         * mini.c: disable some optimizations if we can guess they'll cost too
2894         much for a given method.
2895
2896 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
2897
2898         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
2899         
2900 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
2901         * mini.h mini.c mini-x86.c: Added instruction level coverage 
2902         info collection support.
2903
2904 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2905
2906         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
2907         is now implemented in the profiling API. Get rid of a couple of
2908         unnecessary global variables.
2909
2910 2003-06-15  Nick Drochak <ndrochak@gol.com>
2911
2912         * basic-long.cs: tests for negative values for bigmul, and unsigned.
2913         * cpu-g4.md: add op_bigmul and op_bigmul_un
2914         * cpu_pentium.md: add op_bigmul_un
2915         * inssel-long32.brg: add rule for unsigned bigmul
2916         * mini-ops.h: define OP_BIGMUL_UN
2917         * mini-x86.c: THE BUG: handle (un)signed properly
2918         * mini.c: choose unsigned opcode if needed.
2919         This set of patches fixes bug #44291
2920
2921 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
2922
2923         * mini.c (optimize_branches): improved to handle all kinds of
2924         conditional branches.
2925
2926 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
2927
2928         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
2929         don't raise exceptions.
2930
2931 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
2932
2933         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
2934         to arch-specific files.
2935
2936 2003-06-09  Martin Baulig  <martin@ximian.com>
2937
2938         * Makefile.am (libs): Added $(LIBGC_LIBS).
2939
2940 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
2941
2942         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
2943         and OP_ATAN (fixes bug#44293).
2944
2945 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
2946
2947         * Makefile.am, mini-x86.c: rename cpu description array to
2948         pentium_desc, since some compilers define the 'pentium' preprocessor
2949         symbol.
2950
2951 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
2952
2953         * mini.c (mini_select_instructions): add explicit branch if the
2954         following block is not the false target of a conditional branch -
2955         we need this with any optimization that reorder or remove bblocks
2956
2957         * mini.c (optimize_branches): bug fixes
2958
2959 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
2960
2961         * mini.c (mono_method_to_ir): inline static readonly fields
2962
2963         * ssa.c (fold_tree): start cfold support for long (very simple
2964         cases only)
2965
2966         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
2967
2968 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
2969
2970         * inssel.brg: fixed memcpy (bug #44219).
2971
2972 2003-06-05  Dick Porter  <dick@ximian.com>
2973
2974         * driver.c: Set the glib log levels to not abort if g_message
2975         recurses.
2976
2977         g_set_prgname() has to happen before mini_init() so that the
2978         process handle gets the info.
2979         
2980 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2981
2982         * driver.c: add intrins to the default optimizations to get wider
2983         exposure.
2984
2985 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
2986
2987         * mini.h: some large basic blocks will overflow a 16-bit
2988         integers for symbolic registers.
2989
2990 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
2991
2992         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
2993         (mono_arch_output_basic_block): fix bug 43499 
2994
2995 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
2996
2997         * mini.c: kill duplicated definition of mono_debug_format.
2998
2999 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
3000
3001         * mini-x86.c, arrays.cs: fixed register allocation bug.
3002
3003 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
3004
3005         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
3006
3007         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
3008
3009 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3010
3011         * mini.c:
3012         (print_method_from_ip): also print source location information if
3013         available.
3014
3015 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
3016
3017         * mini.c (mono_find_block_region): bug fix in region code
3018         (mini_method_compile): enable removing unreachable code again, but
3019         only in methods without exception clauses.
3020
3021 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
3022
3023         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
3024         Implemented arglist opcode and handling of TypedReference type.
3025         Fixed x86 call convention when a structure is returned.
3026         Minimal support for calling static vararg methods.
3027
3028 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
3029
3030         * mini.c (mini_method_compile):  always remove unreachable code,
3031         because the code in them may be inconsistent  (access to dead
3032         variables for example).
3033
3034 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
3035
3036         * driver.c, debug-mini.c: warning fixes.
3037
3038 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
3039
3040         * Makefile.am, jit.h, mini.h: install header for embedding mono.
3041
3042 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
3043
3044         * mini.c: thread-static fields are registered in mono_class_vtable(),
3045         so ensure the function is called before checking for them.
3046
3047 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
3048
3049         * mini.c (optimize_branches): fix for bug 43586
3050
3051         * jit-icalls.c (mono_llmult_ovf): added an additional check for
3052         overflow (fixes Bug #43639)
3053
3054 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
3055
3056         * mini.c, objects.cs: allow the use of stobj for primitive types.
3057
3058 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
3059
3060         * mini.c: be less strict about argument checking until we support
3061         running the verifier.
3062
3063 2003-05-27  Nick Drochak <ndrochak@gol.com>
3064
3065         * basic-long.cs: tests for (ulong)int * (ulong)int also
3066         * mini.c: use the same trick for (ulong)int * (ulong)int
3067
3068 2003-05-27  Nick Drochak <ndrochak@gol.com>
3069
3070         * basic-long.cs: add regression test for (long)int * (long)int
3071         * cpu-pentium.md: add op_bigmul specification
3072         * inssel-long32.brg: add OP_BIGMUL rule
3073         * mini-ops.h: add OP_BIGMUL
3074         * mini-x86.c: register allocator: handle case where src1 needs to be
3075         in EAX.
3076         * mini.c: substitute special BIGMUL opcode in the tree for 
3077         (long)int * (long)int
3078
3079 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
3080
3081         * jit-icalls.c: call the type ctor on field access if needed.
3082
3083 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
3084
3085         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
3086         to a method (including results of ldelema, bug#43207).
3087
3088 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
3089
3090         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
3091         colors to show exception handler blocks.
3092
3093         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
3094         (fix for pinvoke7.cs).
3095
3096 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
3097
3098         * mini.h, mini.c: ensure correct initialization order for types that
3099         require it. Prepare for lazy compilation of jit icall wrappers.
3100         Provide a name for opcode emulation to reduce unneeded mallocing.
3101
3102 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
3103
3104         * mini-x86.c: better register restoring code and profiling
3105         support for tail calls.
3106
3107 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
3108
3109         * mini.h, driver.c: prepare for leaf methods optimization.
3110
3111 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
3112
3113         * mini.c: get targets of branches before converting a method.
3114
3115 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
3116
3117         * mini.c (optimize_branches): added some experimental code (disbaled) 
3118
3119 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
3120
3121         * mini.c (optimize_branches): fix branch to branch optimization 
3122
3123         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
3124
3125         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
3126
3127         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
3128
3129         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
3130         if needed.
3131
3132 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
3133
3134         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
3135         enable use of interface variables again.
3136
3137         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
3138         I1 to registers because there is no simply way to sign extend 8bit
3139         quantities in caller saved registers on x86.
3140
3141         * inssel-float.brg: set costs of some rules to 2 so
3142         that monobure always select the arch. specific ones if supplied,
3143         regardless of the order we pass the files to monoburg.
3144
3145 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
3146
3147         * mini.c, mini-x86.c: since the magic trampoline for jumps
3148         can't patch the code directly, we do it as soon as the
3149         method gets compiled.
3150
3151 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
3152
3153         * mini-x86.c, mini.h: introduce a new patching method
3154         to support CEE_JMP and tail calls.
3155         * mini.c: obey tail.call. Don't precompile methods target
3156         of CEE_JMP.
3157         * tramp-x86.c: new trampoline code to handle methods
3158         reached through a jump.
3159
3160 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
3161
3162         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
3163         bit values to registers
3164
3165 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
3166
3167         * mini.c (mono_compile_get_interface_var): share interface
3168         variables if possible.
3169
3170 2003-05-16  Martin Baulig  <martin@ximian.com>
3171
3172         * debug-mini.c (mono_init_debugger): New function to initialize
3173         the debugger.  This is not in the debugger since it needs to
3174         access some of mini's internals.
3175
3176 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
3177
3178         * mini.c (mono_method_to_ir): inlining fixes/cleanups
3179
3180 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
3181
3182         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
3183         for value type handling.
3184
3185 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
3186
3187         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
3188         (mono_method_check_inlining): enable inlining of all kinds of wrappers
3189
3190 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
3191
3192         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
3193           the constructor through a proxy.
3194
3195 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
3196
3197         * jit-icalls.c, inssel.brg: fixes to array element address
3198         calculations.
3199
3200 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
3201
3202         * mini-x86.c (is_regsize_var): allocate pointer to registers
3203
3204 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
3205
3206         * driver.c: fixed typo, added intrins to the set of optimizations
3207         tested with regressions.
3208
3209 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
3210
3211         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
3212         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
3213         test case.
3214
3215 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
3216
3217         * inssel.brg: remove some common pop instructions without side effects
3218
3219 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
3220
3221         * inssel-x86.brg: fixed thinko in int to double conversions.
3222
3223 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
3224
3225         * mini.c, jit-icalls.c: added runtime thread-static variable support.
3226
3227 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
3228
3229         * inssel-long32.brg: two more missing instructions.
3230
3231 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
3232
3233         * mini.c (mono_emit_call_args): set the cil_code for all arguments
3234         if not already set.
3235
3236 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
3237
3238         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
3239         correctly.
3240
3241         * basic-float.cs: Added tests for negative zero.
3242
3243 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
3244
3245         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
3246         a couple of missing operations for long casts, with test cases.
3247
3248 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3249
3250         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
3251
3252 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
3253
3254         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
3255         code size estimation.
3256
3257 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
3258
3259         * mini.c (mono_jit_create_remoting_trampoline): make it work with
3260         abstract methods (fix bug 42542)
3261
3262         * aot.c: add ability to handle array types
3263         
3264 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
3265
3266         * mini.c: Call the _specific versions of the object allocation
3267         functions if possible.
3268
3269 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
3270
3271         * driver.c: call setlocale ().
3272
3273 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
3274
3275         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
3276         windows build.
3277
3278 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
3279
3280         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
3281
3282         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
3283         wrappers (fix bug 42122)
3284
3285 2003-05-04  Martin Baulig  <martin@ximian.com>
3286
3287         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
3288
3289         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
3290         s/mini_set_defaults/mono_set_defaults/g.
3291
3292 2003-05-04  Martin Baulig  <martin@ximian.com>
3293
3294         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
3295
3296 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
3297
3298         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
3299         (reported by Don Roberts).
3300
3301 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
3302
3303         * mini.c: temporarily work around two bugs for this release.
3304
3305 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
3306
3307         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
3308         that contains -export-dynamic and it makes using the ld script
3309         useless.
3310         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
3311
3312 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
3313
3314         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
3315         specific cpu.
3316
3317 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
3318
3319         * mini.c: make sure leave calls all the needed finally blocks,
3320         even when the target jumps out of multiple exception clauses.
3321
3322 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
3323
3324         * ldscript, Makefile.am: add linker script to reduce the number of
3325         exported symbols (should also fix the issues with libwine defining
3326         some of the same symbols in io-layer).
3327
3328 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
3329
3330         * driver.c (mini_main): Avoid assertion when no file name is given on 
3331         the command line.
3332
3333 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
3334
3335         * driver.c: added --version/-V command line option.
3336         Added the inline optimization in the regression tests.
3337
3338 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
3339
3340         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
3341         to the type in the method signature (fixes bug#42134).
3342
3343 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
3344
3345         * mini.c: when inlining, check this is not null only when needed (bug #42135).
3346
3347 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
3348
3349         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
3350
3351 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3352
3353         * driver.c: fixed bug #42100.
3354
3355 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
3356
3357         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
3358
3359 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
3360
3361         * mini.c: moved most of the code required to do inlining to its own
3362         function so it can be reused. Inline also ctors if appropriate.
3363
3364 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
3365
3366         * Makefile.am: Link with -export-dynamic so shared libs loaded by
3367         the runtime can call mono API functions.
3368
3369 2003-04-27  Martin Baulig  <martin@ximian.com>
3370
3371         * debug-mini.c (mono_debug_init_method): Added
3372         `guint32 breakpoint_id' argument; if the method has a breakpoint,
3373         send a notification to the debugger.
3374
3375         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
3376         running in the Mono Debugger, just pass the breakpoint number to
3377         mono_debug_init_method().
3378
3379         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
3380
3381 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
3382
3383         * mini.c: allow some more unsafe compares.
3384
3385 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
3386
3387         * mini-x86.c, Makefile.am: make distcheck works (partially from
3388         a patch by Richard Lee <r.h.lee@attbi.com>).
3389         * regset.c, regset.h: removed, they are unused.
3390
3391 2003-04-25  Dick Porter  <dick@ximian.com>
3392
3393         * driver.c: Usage reports the name as 'mono' not 'mini'
3394         * exceptions-x86.c: Build and run on freebsd
3395
3396 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
3397
3398         * Makefile.am: install the program with the 'mono' name and
3399         the library as libmono instead of mini and libmini.
3400
3401 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
3402
3403         * driver.c: provide the APIs for the embedding interface of the old jit.
3404
3405 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
3406
3407         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
3408
3409 2003-04-23  Martin Baulig  <martin@ximian.com>
3410
3411         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
3412
3413         * driver.c: Added `--debug' command line argument to enable
3414         debugging support.
3415
3416 2003-04-23  Martin Baulig  <martin@ximian.com>
3417
3418         * debug.[ch]: Removed.  The code is now in
3419         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
3420
3421         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
3422         last six months.
3423
3424 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
3425
3426         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
3427
3428 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3429
3430         * mini.c:
3431         (mini_cleanup): moved mono_runtime_cleanup call after the call to
3432         mono_domain_finalize.
3433         (mini_method_compile): use mono_method_profile* if the the option is
3434         enabled.
3435
3436 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
3437
3438         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
3439         methods with their wrapper.
3440
3441         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
3442         methods with their wrapper.
3443
3444         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
3445         their wrapper.
3446
3447         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
3448         wrapper.
3449
3450         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
3451         methods.
3452
3453 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
3454
3455         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
3456
3457 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
3458
3459         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
3460         of the mempool. This is slightly faster and uses less memory
3461
3462 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
3463
3464         * mini.c: avoid O(n) allocation for variables.
3465
3466 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
3467
3468         * mini.c: handle items on the stack after inlining methods.
3469
3470 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
3471
3472         * mini.c: make the method->opcode optimization dependent
3473         on MONO_OPT_INSTRINS and do it lazily.
3474
3475 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
3476
3477         * driver.c: print overall results at the end of regression run.
3478
3479 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
3480
3481         * inssel.brg: don't overwrite symbolic registers.
3482
3483 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
3484
3485         * inssel-x86.brg: fix conversion from long to float.
3486
3487 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
3488
3489         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
3490
3491 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
3492
3493         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
3494
3495         * driver.c: Added --print-vtable option as in the old JIT.
3496
3497 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
3498
3499         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
3500
3501 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
3502
3503         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
3504
3505 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
3506
3507         * mini.c regalloc.c regalloc.h: Fix memory leak.
3508
3509 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
3510
3511         * aot.c (mono_aot_get_method): register all used strings
3512
3513 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
3514
3515         * mini.c: always intern strings references with ldstr at compile time.
3516
3517 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
3518
3519         * Makefile.am: add BUILT_SOURCES.
3520
3521 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
3522
3523         * driver.c: give a better error message when the assembly to execute
3524         doesn't have an entry point.
3525
3526 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
3527
3528         * Makefile.am: added hack for automake
3529
3530         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
3531         correct sematics.
3532
3533         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
3534
3535 22003-04-07  Martin Baulig  <martin@ximian.com>
3536
3537         * Makefile.am: Added Makefile.am.
3538
3539         * debugger-main.c: Removed, this is now in the debugger where it
3540         belongs.
3541
3542         * mini.pc.in: Call this package `mini' for the moment.
3543
3544
3545
3546