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