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