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