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