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