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