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