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