2004-05-17 Ben Maurer <bmaurer@users.sourceforge.net>
[mono.git] / mono / mini / ChangeLog
1 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
2
3         * helpers.c: Add new env variable to pass args to objdump.
4         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
5
6 2004-05-17  Radek Doulik  <rodo@ximian.com>
7
8         * Makefile.am (common_sources): added abcremoval.h so it get
9         disted and daily mono packages on go-mono.com will build again
10
11 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
12
13         * abcremoval.c: Fixed coding style, added copyright header.
14
15         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
16
17         * mini.h: Added prototype for abc removal main function.
18
19         * build_relations_propagation_table.pl: Added copyright header.
20
21 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22
23         * basic-long.cs: reg test for complex ceq_long bug.
24
25 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
26
27         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
28         reg in long and clob case (bug #58343). Fixed/added comments.
29
30 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
31
32         * mini.c (mono_jit_runtime_invoke): Follow new convention
33         of calling the invoke method with an function pointer.
34
35 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
36
37         * ChangeLog: Fix author of memory leak patch.
38
39 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
40
41         * Makefile.am: fix make dist as well...
42
43
44 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
45
46         * cfold.c: Made so that conversions from pointer to int4 are no-ops
47         on archs where pointers are 4 bytes long.
48
49         * Makefile.am: Added abcremoval.c source file.
50
51         * abcremoval.c: Added abcremoval.c.
52
53         * abcremoval.h: Added abcremoval.h.
54
55         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
56
57         * inssel.brg: Enabled bounds check removal.
58
59         * mini.c: Added support for abcrem optimization.
60
61         * mini.h: Added abcrem optimization label.
62
63         * driver.c: Added support for abcrem optimization.
64
65         * propagated_relations_table.def: Added propagated_relations_table.def.
66
67 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
68
69         * mini.c, cfold.c: fix style.
70
71 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
72
73         * mini.c: handle issue with the low-level implementation of
74         some long opcodes (bug #54209).
75
76 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
77
78         * basic.cs: test for my new cmov stuff.
79
80 2004-05-13      Patrik Torstensson
81
82         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
83         opt and added peephole documentation.
84
85 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
86
87         * tramp-ppc.c: rewrote the generic trampoline code.
88
89 2004-05-11      Patrik Torstensson
90
91         * mini-x86.c: optimize long shl/shr asm code (one less branch)
92
93 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
94
95         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
96
97         * mini.h mini.c dominators.c: Applied patch from Derek Woo
98         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
99
100         * mini.c: Add new icalls for AsAny marshalling.
101
102 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
103
104         * tramp-ppc.c, mini-ppc.c: more cleanups.
105
106 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
107
108         * mini.c: no warnings.
109
110 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
111
112         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
113
114 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
115
116         * mini.c: In the thread abort signal handler, if the thread is in the
117         process of being stoped, don't throw the Abort exception, just stop the
118         thread.
119
120 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
121
122         * tramp-ppc.c: removed old code.
123
124 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
125
126         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
127         do some simple speed optimizations on ppc.
128
129 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
130
131         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
132         and large offsets in load/store.
133
134 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
135
136         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
137         it causes regressions.
138
139 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
140
141         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
142         support.
143
144 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
145
146         * jit-icalls.c: remove warnings.
147         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
148         speedups for unsafe code.
149
150 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
151
152         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
153
154 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
155
156         * basic-calls.cs: Add new regression test.
157
158         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
159         more portable.
160
161         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
162
163         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
164         is no longer used.
165
166 2004-05-06      Patrik Torstensson
167
168         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
169         long reg allocation in any reg (not only eax:edx) and implemented 
170         long shl/shr ops in asm instead of helpers.
171
172 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
173
174         * mini-sparc.h: Fix warnings.
175
176         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
177         stack.
178
179         * mini-exceptions.c (mono_handle_exception): Call the filter in a
180         separate statement for clarity.
181
182         * mini-sparc.c: Update status.
183
184 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
185
186         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
187         here.
188
189 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
190
191         * inssel-ppc.brg: another small pre-release workaround:
192         we don't do overflow detection for long_sub_un.
193
194 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
195
196         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
197         (also works around a weird ppc bug: 57957).
198
199 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
200
201         * tramp-ppc.c: trampoline fixes.
202
203 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
204
205         * mini-ppc.c: fixed typos.
206
207 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
208
209         * mini-ppc.c, exceptions-ppc.c: more code saves registers
210         at the top of the stack. Fixed typos. Use a frame registers
211         for all the methods with exception clauses.
212
213 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
214
215         * exceptions-ppc.c: restore fp registers.
216
217 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
218
219         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
220         order from the stack top (moved the stack room to save the
221         return value for trace after the param area). Fixed corruption
222         in restoring registers on unwind.
223
224 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
225
226         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
227
228 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
229
230         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
231         and prolog/epilog for methods that use it. Allow
232         enough param area room for varargs methods. Fix miguel's
233         breakage in exception handling.
234
235 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
236
237         * Makefile.am: run genmdesc only on current arch.
238
239 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
240
241         * exceptions-x86.c:
242         * mini-x86.h: fix the build on windows.
243
244 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
245
246         * 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.
247
248         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
249
250         * mini-exceptions.c: New file.
251         
252         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
253         Move some parts of the x86 exception handling code to an 
254         arch-independent file so it can be shared with other ports.
255
256 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
257
258         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
259
260 2004-04-26  David Waite  <mass@akuma.org>
261
262         * driver.c: remove comma from end of enumeration declaration
263
264 2004-04-26  Jackson Harper  <jackson@ximian.com>
265
266         * driver.c: parse config file before loading first assembly. This
267         allows the user gac to be enabled/disabled. 
268         
269 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
270
271         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
272         simpler mechanism: we do not care what is encoded initially
273         (branch absolute or relative), we care about the code and its
274         target.  I kept the old code for reference for now.
275
276         The new code tries first to determine if the jump is anywhere in
277         the -/+32 absolute meg range, if it succeeds, it encodes using the
278         absolute branch;  If not, it tried to find something in the
279         relative range, if not, it uses the handle_thunk code. 
280
281 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
282
283         * exceptions-ppc.c: use the correct ip register on macosx.
284
285 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
286
287         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
288
289 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
290
291         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
292         Raise exception on integer divide by zero by hand since the hw
293         doesn't support it. Handle NaNs in FP compares.
294
295 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
296
297         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
298         code reducing duplication between the platforms and enabled
299         signal exception handling (on linux for now).
300
301 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
302
303         * exceptions-ppc.c: more macosx support.
304
305 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
306
307         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
308
309 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
310
311         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
312
313 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
314
315         * iltests.il: more tests.
316
317 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
318
319         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
320         vars as well.
321
322 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
323
324         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
325
326 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
327
328         * liveness.c: Mark variables as volatile in all basic blocks reachable
329         from exception clauses.
330
331 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
332
333         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
334         inlining.
335
336 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
337
338         * iltests.il, basic.cs: more tests for regalloc.
339
340 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
341
342         * iltests.il: Some tests for register allocation modifications
343         I have locally.
344
345 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
346
347         * exceptions.cs: Add regression test for bug #56782.
348
349         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
350         original stack trace if an exception is rethrown. Fixes #56782. Oh,
351         the beauty of fixing the same thing in 5 different files...
352
353 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
354
355         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
356         methods.
357
358 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
359
360         * mini.c: Add support for STRWLPARRAY marshalling convention.
361
362 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
363
364         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
365         to init the context to setup the regs pointer).
366
367 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
368
369         * exceptions-ppc.c: more exceptions work.
370
371 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
372
373         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
374         not allowed.
375
376 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
377
378         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
379         can use the memory directly.
380
381         * cpu-pentium.md: Update documentation from a post from Zoltan. 
382
383         add x86_add_membase, x86_sub_membase, x86_mul_membase
384
385 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
386
387         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
388         GENERAL_REGS they were also hardcoded for all PPC ports.
389
390         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
391
392         Remove hard-coded limit for floating point registers, use
393         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
394
395         Notice that in MacOS X calling conventions you can fit a lot more
396         floating point values in registers, so I should update the PInvoke
397         test to excercise the passing of floating point values on the
398         stack (currently broken).
399         
400 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
401
402         * tramp-ppc.c (create_trampoline_code): Added
403         JUMP_TRAMPOLINE_SIZE. 
404         (ppc_magic_trampoline): Follow the pattern from
405         x86_magic_trampoline: if code is set to zero, return. 
406         (create_trampoline_code): Always pass MonoMethod to the jump
407         trampoline, before it was passing a null.
408         (mono_arch_create_jump_trampoline): Implement the jump stub, could
409         share the code with mono_arch_create_jit_trampoline. 
410
411         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
412         implemented.
413         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
414         implemented.  
415
416         * cpu-g4.md: Added length for jmp instruction, the worst case
417         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
418         for save_lmf).
419
420 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
421
422         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
423
424 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
425
426         * mini.c: Only set bblock->real_offset when adding a new bblock, and
427         before each IL instruction.
428
429         * mini.c (CEE_BOX): Fix warnings.
430
431 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
432
433         * mini.c: removed a few unused vars and extra whitespace.
434
435 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
436
437         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
438         checks.
439         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
440         index.
441         (OP_GETCHR): use the above
442         (CEE_LDELEMA): use the above.
443
444         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
445         version of the generic impl.
446         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
447         (CEE_LDELEMA): use the above.
448
449 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
450
451         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
452         Fixes #56317.
453
454         * iltests.il: Added new regression test for #56317.
455
456 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
457
458         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
459         under NetBSD. Fixes #56450.
460
461         * liveness.c (update_gen_kill_set): Fix previous patch.
462
463 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
464
465         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
466
467 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
468
469         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
470         ldsfld and ldsflda.
471
472         * inssel-sparc.brg: Add more optimizations.
473
474         * mini-sparc.c: Replace multiply/divide with shifts if possible.
475
476 2004-04-01  Martin Baulig  <martin@ximian.com>
477
478         * mini.c (handle_box): New static function; moved the
479         implementation of CEE_BOX here.
480         (mono_method_to_ir): Added `constrained_call' variable.
481         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
482         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
483         mono_method_get_constrained() to get the method.
484
485 2004-04-01  Martin Baulig  <martin@ximian.com>
486
487         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
488         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
489         (mono_method_to_ir): We don't need these macros anymore since
490         mono_class_get_full() already takes care of it. 
491
492 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
493
494         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
495         use @function (as doesn't accept #function here) and check the return
496         value of system and stop if fails.
497
498 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
499
500         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
501
502 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
503
504         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
505
506         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
507
508         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
509         #56223.
510
511         * basic-long.cs: Add test for negation of Int64.MinValue.
512
513 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
514
515         * mini-sparc.c: Update status.
516
517         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
518
519         * exceptions-sparc.c: Fix return value in filters.
520
521         * inssel-sparc.brg: Fix register allocation in some rules.
522
523 2004-03-28  Martin Baulig  <martin@ximian.com>
524
525         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
526         if neccessary.  
527
528 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
529
530         * mini-x86.c (mono_arch_patch_code): Fix warnings.
531         
532         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
533         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
534         remove unused conv_u4 opcode.
535
536         * mini-x86.c: Remove valgrind workaround since it slows down things
537         even when mono is not run under valgrind.
538
539 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
540
541         * mini-sparc.c: Update status.
542
543         * inssel-sparc.brg: Add some optimizations.
544
545         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
546         future delay slot filling. Add support for varargs, tail calls and JMP.
547
548         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
549         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
550
551         * inssel.brg: Fix register allocation in OP_ARGLIST.
552
553         * inssel.brg: Fix warnings.
554
555 2004-03-25  Martin Baulig  <martin@ximian.com>
556
557         * mini.c (inflate_generic_field): Removed.
558         (mini_get_method): Removed, use mono_get_method_full(),
559         (mini_get_class): Removed, use mono_class_get_full().
560         (mono_method_to_ir): Pass our generic context to
561         mono_field_from_token().        
562
563 2004-03-25  Martin Baulig  <martin@ximian.com>
564
565         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
566         of a `MonoMethod *'.
567         (mini_get_method): Take a `MonoGenericContext *' instead
568         of a `MonoMethod *'.
569         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
570         a new local variable called `generic_context' which holds the
571         current `MonoGenericContext *'; use it to lookup things.
572
573 2004-03-24  Martin Baulig  <martin@ximian.com>
574
575         * mini.c (mini_get_class): New static method; if we're inside a
576         generic instance, inflate the class if neccessary.
577         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
578
579 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
580
581         * iltests.il: New regression test for #55976.
582
583         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
584         #55976.
585
586 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
587
588         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
589         output.
590
591 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
592
593         * liveness.c: Consider SSA stores as well as loads when making vars
594         volatile.
595
596         * exceptions.cs: New regression tests for register allocation.
597         
598 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
599
600         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
601         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
602           domain lock only to protect puntual access to data structures.
603           Added access lock for sighash, jit_icall_hash_name, 
604           jit_icall_hash_addr and domain->code_mp.
605
606 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
607
608         * driver.c: Print SIGSEGV handling method.
609
610         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
611
612         * mini.c (setup_jit_tls_data): Handle case when this is called
613         multiple times for a thread.
614
615         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
616         is different from fbxx_un. Fixes #54303. Also use constants instead of
617         magic numbers in a lot of places.
618
619 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
620
621         * exceptions.cs: Fix cctor test when --regression is used.
622
623 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
624
625         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
626         for Linux/ppc.
627
628 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
629
630         * inssel-ppc.brg: fixed register assignments for some rules.
631
632 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
633
634         * exceptions.cs: Add test for exceptions in static constructors.
635
636         * mini.c (mono_jit_compile_method_with_out): Move the calling of
637         static constructors outside the domain lock. Fixes #55720.
638
639 2004-03-17  Martin Baulig  <martin@ximian.com>
640
641         * mini.c (get_generic_field_inst): Removed, this'll never happen.
642         (inflate_generic_field): Take the `MonoMethod *' instead of the
643         `MonoClass *' and added support for generic method.
644         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
645         have a `field->parent->gen_params', only inflate the field if it's
646         an open constructed type.
647
648 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
649
650         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
651         exception object instead of the preconstructed ones.
652
653 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
654
655         * mini.c: reverted changed to sigsegv_signal_handler commited
656         accidentally in the previous patch.
657
658 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
659
660         * mini.c:
661         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
662         running --aot with an old assembly.
663
664 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
665
666         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
667         point values.
668
669         * mini-sparc.c: Add support for v9 branches with prediction.
670
671 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
672
673         * mini.c (mini_init): #warning is GNUC only
674
675         * mini-sparc.h: implement __builtin_frame_address
676         and __builtin_return_address for Sun C compiler
677
678 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
679
680         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
681
682 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
683
684         * basic-calls.cs: Add test for unaligned byref long argument passing.
685
686         * mini-ops.h: Add sparcv9 compare and branch instructions.
687
688         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
689         v9 instructions if we have a v9 cpu.
690
691         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
692         registers for global allocation.
693
694         * exceptions-sparc.c: Fixes.
695         
696 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
697
698         * liveness.c (mono_analyze_liveness): Optimized version.
699
700         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
701
702         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
703         sparc work.
704
705         * basic-float.cs basic-calls.cs: New regression tests.
706
707 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
708
709         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
710         sigaltstack implementation.
711
712         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
713         
714         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
715         stuff if SIGSEGV_ON_ALTSTACK is not defined.
716
717 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
718
719         * mini.c: Fix warnings.
720         
721         * mini.c (mono_resolve_patch_target): New function which contains the
722         arch independent part of the patching process.
723
724         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
725         patching code to a separate function.
726
727 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
728
729         * mini.c (add_signal_handler): ifdef out on Windows
730
731 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
732
733         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
734         cpu-sparc.md: Add exception handling support + other fixes.
735
736         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
737         typed GC detection in --version.
738
739         * basic.cs exceptions.cs: New regression tests.
740
741         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
742         the arch specific code can store data during a compilation.
743
744         * mini-ops.h: Add OP_SETFRET.
745
746         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
747         function, register a separate icall for each arity, so the icalls can
748         get a wrapper.
749         
750         * mini.c (mono_print_tree): Print negative offsets in a more readable
751         form.
752         
753         * mini.c: Make signal handling work on sparc.
754         
755         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
756
757         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
758
759         * jit-icalls.c: Emulate truncl by aintl on solaris.
760
761         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
762
763 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
764
765         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
766
767 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
768
769         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
770         a MarshalByRef type, inline a method that performs the check, taking into
771         account that the object can be a proxy. Also implemented tow new opcodes:
772         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
773         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
774         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
775
776 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
777
778         * mini-ppc.c: if a relative branch displacement is too big
779         but it points to and area reachable with an absolute branch, 
780         avoid the thunks.
781
782 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
783
784         * mini.c: optimize small copies in cpblk.
785
786 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
787
788         * basic-calls.cs basic-float.cs: New regression tests.
789
790         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
791         negative offsets from %fp. Implement localloc. Fix local register 
792         allocation. Fix the case when the this argument needs to be saved to
793         the stack. Implement some missing opcodes.
794
795 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
796
797         * mini.c (mini_method_compile): Reenable global regalloc in methods
798         with exception handlers.
799
800         * linear-scan.c (mono_varlist_sort): Fix warning.
801
802         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
803
804         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
805         regalloc costs.
806
807         * liveness.c: Make all variables uses in exception clauses volatile, to
808         prevent them from being allocated to registers. Fixes #42136.
809
810 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
811
812         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
813         causes regressions.
814
815         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
816         argument to mono_arch_regalloc_cost.
817
818         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
819         precisely.
820
821 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
822
823         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
824         Make the cost of allocating a variable to a register arch dependent.
825
826         * basic-calls.cs: Fix compilation of tests.
827         
828         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
829         helper function to cut back on the number of #ifdefs needed.
830
831         * mini-ppc.c: Fix compilation.
832
833         * basic-calls.cs: New regression tests.
834
835         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
836
837         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
838         of l0 since that is callee saved.
839
840         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
841         to virtual calls.
842
843         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
844         of delay instruction.
845
846         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
847
848         * mini.h (MonoCallInst): Add 'virtual' flag.
849
850         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
851
852 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
853
854         * *.cs: New regression tests.
855
856         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
857         work.
858
859         * mini.c (mono_runtime_install_handlers): Fix build.
860
861         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
862         'signal_stack_size' members.
863
864         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
865         alternate signal stack.
866
867         * exceptions-x86.c: Add stack overflow handling.
868
869         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
870         functions to arch independent code.
871
872         * mini.c (mono_print_tree): Print more detailed info for load_membase
873         opcodes.
874         
875 2004-02-23  Martin Baulig  <martin@ximian.com>
876
877         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
878
879 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
880
881         * mini-x86.c: fixed reg allocation for div/rem.
882
883 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
884
885         * driver.c (mono_main): Report some configuratio options on --version.
886
887 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
888
889         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
890         low in the address space. Correctly flush memory in thunks where we
891         output native code.
892
893 2004-02-20  Martin Baulig  <martin@ximian.com>
894
895         * mini.c (mini_get_method): New static method; inflate all generic
896         methods and methods in open generic instances.
897         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
898         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
899
900 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
901
902         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
903
904         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
905
906 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
907
908         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
909
910         * mini-sparc.c (flushi mono_arch_output_basic_block): make
911         it compile using Sun's compiler.
912
913 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
914
915         * 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.
916
917         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
918
919 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
920
921         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
922         code.
923         * mini-ppc.c: handle calls outside of the allowed range with thunks
924         allocated using the code manager.
925         * tramp-ppc.c: use the code manager to hold generated native code.
926         Fixed the magic trampoline to just patch vtable entries.
927
928 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
929
930         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
931         independent file.
932
933 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
934
935         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
936         PPC.
937
938         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
939         if we have a working __thread implementation.
940
941         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
942         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
943
944 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
945
946         * mini-x86.c: Fix compilation under gcc 2.
947         
948 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
949
950         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
951         contains a call to the wrapped function.
952
953         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
954         OP_<CALL>_IMM opcodes, and use them under X86.
955         
956         * mini.c (mono_jit_find_compiled_method): Fix warning.
957
958         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
959
960         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
961
962         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
963         functionality to mini.c.
964
965         * mini.c (mono_create_jump_trampoline): New function to create a jump
966         trampoline. Return a compiled method instead of a trampoline if it
967         exists. Add a cache for jump trampolines.
968
969         * mini.c (mono_jit_find_compiled_method): New function to return a
970         compiled method if it exists.
971
972         * mini-x86.c: Call mono_create_jump_trampoline instead of 
973         mono_arch_create_jit_trampoline.
974
975         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
976         a jump trampoline. Fixes #52092.
977         
978 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
979
980         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
981         which is not up-to-date. Add check_corlib_version () instead.
982
983         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
984         have to call it.
985         
986         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
987         since newer valgrind versions do not need it.
988
989         * mini.c (mono_jit_compile_method_with_opt): New helper function to
990         compile a method with a given set of optimizations.
991
992         * mini.c: Compile icall wrappers on-demand instead of at startup.
993
994         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
995         wrapper for an icall.
996
997 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
998
999         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
1000         #54063.
1001
1002         * iltests.il: Add test for non-empty stack before switch instruction.
1003
1004 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
1005
1006         * mini.c: Add support for new stringbuilder marshalling conventions.
1007
1008         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
1009
1010 2004-02-01  Martin Baulig  <martin@ximian.com>
1011
1012         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
1013         in `ginst->mtype_argv'.
1014
1015 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
1016
1017         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
1018         facilitate grepping.
1019
1020 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
1021
1022         * mini.c: fixed buglet in initobj generic implementation for references.
1023
1024 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
1025
1026         * Makefile.am: make the version script conditional.
1027         * jit-icalls.c: handle missing truncl().
1028
1029 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
1030
1031         * exceptions.cs: Add more tests for double->int conversion.
1032
1033         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
1034         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
1035
1036 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
1037
1038         * driver.c: make --verbose --version emit an error
1039         if the loaded corlib doesn't match the runtime version.
1040
1041 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
1042
1043         * mini-ppc.h: export ppc_patch().
1044         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
1045         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
1046         on par or better than on MacOSX.
1047
1048 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
1049
1050         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
1051         mono_lookup_pinvoke_call.
1052
1053         * mini-x86.c: Under windows, the default pinvoke calling convention is
1054         stdcall. Fixes #52834.
1055
1056         * mini.c (optimize_branches): Add an upper bound to the number of
1057         iterations to prevent infinite loops on strange loops. Fixes #53003.
1058
1059 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
1060
1061         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
1062         and ISINST. Fixes #52093.
1063
1064         * objects.cs (test_0_vector_array_cast): New tests.
1065         
1066 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
1067
1068         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
1069         checking in Array.Set ().
1070
1071         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
1072         #52590.
1073
1074         * object.cs (test_0_multi_array_cast): New regression test.
1075
1076 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
1077
1078         * exceptions-ppc.c: fix build on Linux/PPC.
1079
1080 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
1081
1082         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
1083         running under valgrind.
1084         (x86_magic_trampoline): Fix build bustage.
1085
1086         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
1087         negative values as well. This is needed for the encoding of the line number
1088         info, since sometimes the line numbers are not in increasing order.
1089
1090 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
1091
1092         * cpu-pentium.md (localloc): Increase the size of the localloc 
1093         instruction since it is a loop under Win32.
1094
1095         * debug-mini.c (record_line_number): Get rid of unneccesary memory
1096         allocation.
1097
1098 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
1099
1100         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
1101         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
1102         Max Horn (max@quendi.de). Fix file names in comments.
1103
1104 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
1105
1106         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
1107         avoid stack overflow.
1108         (replace_usage): Avoid uninitialized variable warnings.
1109
1110         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
1111         and taking the address of valuetype variables.
1112
1113 2004-01-03  Patrik Torstensson
1114
1115         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
1116         for other purposes than FP later on.
1117
1118 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
1119
1120         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
1121         of tail calls.
1122
1123 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
1124
1125         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
1126
1127 2003-12-30  Patrik Torstensson <p@rxc.se>
1128
1129         * mini-x86.h: Decreased number of availiable fp regs.
1130         Solves corner cases with FP spilling.
1131
1132 2003-12-23  Patrik Torstensson <p@rxc.se>
1133
1134         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
1135         for floating point stack tracking / spilling on x86. 
1136         Fixes bug #49012.
1137         
1138         * basic-float.cs: added float mul overflow test.
1139
1140 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
1141
1142         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
1143
1144 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
1145
1146         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
1147         supports for cond branches that overflow the immediate
1148         overflow offset. mcs can compile simple programs.
1149
1150 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
1151
1152         * exceptions-ppc.c: exception handling support wip:
1153         finally handlers get run on exception.
1154
1155 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
1156
1157         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
1158         profiling.
1159
1160 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
1161
1162         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
1163         initial support for stack walking and unwinding.
1164
1165 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
1166
1167         * driver.c (mono_main): Make corlib-out-of-sync message more 
1168         descriptive. Also remove verify_corlib call.
1169
1170 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
1171
1172         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
1173         not overlap with other call's arguments, too.
1174
1175 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
1176
1177         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
1178         move to arch-specific code the choice of arch-specific
1179         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
1180         * mini.c: ensure emulation calls will not interleave
1181         with other calls.
1182
1183 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
1184
1185         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
1186         the magic trampoline stack frame is dropped before executing
1187         the new method.
1188
1189 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
1190
1191         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
1192         and integer to fp conversions. Added support for overflowing
1193         arguments on the stack. Reserve a couple more registers as temps.
1194         Added support for aot compilation (as output still needs to be
1195         tweaked, though).
1196
1197 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
1198
1199         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
1200         Don't overwrite return register in some corner cases.
1201
1202 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
1203
1204         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
1205         static constructors when AOT compiling.
1206
1207         * driver.c (mono_main): Call mono_check_corlib_version.
1208
1209 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
1210
1211         * cpu-g4.md, basic.cs: fixed div target register.
1212
1213 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
1214
1215         * mini-ppc.c, basic.cs: shl_imm fix with test.
1216
1217 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
1218
1219         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
1220         structures by value. Misc fixes.
1221         * objects.cs: more tests.
1222
1223 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
1224
1225         * mini-ppc.c: lconv.ovf.i implemented.
1226
1227 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1228
1229         * mini.c:
1230         (mini_init): don't error out if someone already called g_thread_init.
1231
1232 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
1233
1234         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
1235         to be any type per the spec. Fix abnormal memory usage when
1236         the same object is repeatedly thrown.
1237
1238 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
1239
1240         * mini.c: check for overruns in IL code.
1241
1242 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
1243
1244         * TODO: Add/remove some todo entries.
1245
1246 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
1247
1248         * driver.c (mono_main): Call mono_verify_corlib.
1249
1250 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
1251
1252         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
1253         This has been moved to mini.c
1254         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
1255         type being casted is marshalbyref it could be a proxy, so instead of
1256         emitting the type check code, emit a call to a runtime method that will
1257         perform the check by calling CanCastTo if needed.
1258
1259 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
1260
1261         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
1262         methods with large stack frames under Win32.
1263
1264 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
1265
1266         * Makefile.am: Distribute regression tests.
1267
1268         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
1269         at the end instead of inserting each variable into the sorted list.
1270
1271         * linear-scan.c (mono_varlist_sort): New helper function.
1272         
1273 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
1274
1275         * mini.c: ensure arguments and locals are within bounds.
1276
1277 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
1278
1279         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
1280         related fixes.
1281
1282 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
1283
1284         * mini.c (mono_cprop_copy_values): Fix crash.
1285
1286         * aot.c: Set verbosity back to 0.
1287         
1288 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
1289
1290         * regalloc.c: complete memory leak fix by Laurent Morichetti
1291         (l_m@pacbell.net).
1292
1293 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
1294
1295         * driver.c (main_thread_handler): Revert the previous patch.
1296
1297         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
1298         under valgrind.
1299
1300         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
1301         memory from the memory pool.
1302
1303         * driver.c (main_thread_handler): Turn on all optimizations when
1304         --aot is used.
1305
1306         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
1307         an array for better performance.
1308
1309         * regalloc.c (mono_regstate_assign): Fix memory leak.
1310
1311         * debug-mini.c (mono_debug_serialize_debug_info): New function to
1312         serialize the debug info.
1313
1314         * debug-mini.c (mono_debug_add_aot_method): New function to load the
1315         debug info from the serialized representation.
1316
1317         * aot.c: Save debug info into the generated file and load it when 
1318         loading a method.
1319
1320         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
1321
1322 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
1323
1324         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
1325         More FP-related fixes.
1326
1327 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
1328
1329         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
1330         and register allocation buglet. Hello world now runs.
1331
1332 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
1333
1334         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
1335         * tramp-ppc.c: fixed class init trampoline.
1336         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
1337
1338 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
1339
1340         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
1341         mini.c: more ppc changes/fixes.
1342
1343 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
1344
1345         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
1346         Also optimize the case when the arguments are the same in the caller 
1347         and in the callee.
1348
1349         * iltests.il: Add tests for tail calls with valuetype arguments.
1350
1351 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
1352
1353         * mini-ppc.c: fixes for struct return type.
1354
1355 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
1356
1357         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
1358         mono_spillvar_offset() to arch-specific code.
1359
1360 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
1361
1362         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
1363
1364 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
1365
1366         * exceptions-x86.c: Fix stack space leaks.
1367         
1368         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
1369         registers from the lmf if the method has save_lmf set.
1370
1371 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
1372
1373         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
1374         of icall wrappers into InvokeInDomain, since these are now per-domain.
1375
1376 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
1377
1378         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
1379         make some opcode emulation and intrinsic ops enabled/disabled 
1380         according to the architecture. More fixes.
1381
1382 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
1383
1384         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
1385
1386 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
1387
1388         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
1389         arch-specific handling for 'this' and struct return type to
1390         arch-specific code.
1391
1392 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1393
1394         * aot.c: prevent divide by zero error when reporting (it happened with
1395         Accessibility.dll).
1396
1397 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
1398
1399         * mini.h (inst_switch): Remove unused macro.
1400
1401 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1402
1403         * aot.c:
1404         (load_aot_module): free 'info->methods' and 'info' properly. No more
1405         "free(): invalid pointer blah" messages when you have an old aot
1406         compiled assembly.
1407
1408 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
1409
1410         * jit-icalls.c, mini.c: Added support for context static fields.
1411
1412 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
1413
1414         * mini.c (mono_method_blittable): Methods which set LastError are not 
1415         blittable either. Fixes #51108.
1416         
1417 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
1418
1419         * mini.c: flush icache.
1420         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
1421
1422 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
1423
1424         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
1425
1426 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
1427
1428         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
1429         safe on IA32.
1430
1431         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
1432         vararg calls.
1433
1434         * inssel.brg (CEE_MKREFANY): Fix AOT case.
1435
1436 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
1437
1438         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
1439         instruction when the result is discarded.
1440
1441         * iltests.il (test_0_div_regalloc): New regression test.
1442
1443         * arrays.cs: Fix compilation error.
1444
1445 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
1446
1447         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
1448         float rules to inssel-x86.brg: sane architectures with FP registers
1449         don't need to implement these rules.
1450
1451 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
1452
1453         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
1454
1455 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
1456
1457         * mini.h, inssel-long32.brg: fixed endianess issues in int64
1458         implementation of 32 bit systems.
1459
1460 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
1461
1462         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
1463         (Jeroen Zwartepoorte).
1464
1465 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
1466
1467         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
1468         the caller and the callee matches.
1469         
1470         * mini.c (mono_method_to_ir): Add comment.
1471
1472         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
1473         signbit is missing on some platforms.
1474
1475 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
1476
1477         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
1478
1479         * mini.c (setup_jit_tls_data): Call the new function.
1480         
1481         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
1482
1483         * mini-x86.c: Add experimental support for fast access to the lmf
1484         structure under NPTL/Linux 2.6.x.
1485
1486 2003-11-06  Martin Baulig  <martin@ximian.com>
1487
1488         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
1489         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
1490         the debugger.
1491
1492 2003-11-02  Martin Baulig  <martin@ximian.com>
1493
1494         * mini.c (inflate_generic_field): New static method.
1495         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
1496         generic instance and the field is declared in a generic type, call
1497         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
1498
1499 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
1500
1501         * mini.h mini.c (mono_method_same_domain): New function to return
1502         whenever the caller and the callee are in the same domain.
1503
1504         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
1505
1506 2003-10-30  Martin Baulig  <martin@ximian.com>
1507
1508         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
1509         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
1510         method parameters.
1511         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
1512         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
1513
1514 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
1515
1516         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
1517         propagation.
1518
1519         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
1520         object here, so it is in the correct appdomain etc.
1521
1522 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
1523
1524         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
1525         already done.
1526         (mono_method_to_ir): Avoid freeing the type created returned from
1527         mono_type_create_from_typespec, since it is put into an internal cache
1528         by the function. Fixes pointer.exe.
1529
1530         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
1531         trampolines for icalls and pinvokes as well. Fixes #33569.
1532
1533 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
1534
1535         * mini.c: Update after appdomain changes.
1536
1537         * mini.c (mono_jit_compile_method_inner): Allways compile native
1538         method wrappers in the root domain, since there can only be one
1539         instance of them, whose address is stored in method->info.
1540
1541 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
1542
1543         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
1544         environment variable. Instead detect automatically whenever running
1545         under valgrind using the magic macro RUNNING_ON_VALGRIND from
1546         valgrind.h.
1547
1548 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
1549
1550         * trace.c, trace.h: New files that implement the new trace option
1551         parsing. 
1552
1553         * driver.c: Document new --trace options.
1554
1555         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
1556         mini-x86.c: Apply:
1557
1558         -       if (mono_jit_trace_calls)
1559         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
1560
1561         * mini.h: prototypes.
1562         
1563 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
1564
1565         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
1566
1567         * mini.c inssel.brg: Implement typedefbyref opcodes.
1568
1569         * mini.c (mono_jit_compile_method): Remove unused local variable.
1570
1571         * mini.c (mono_jit_compile_method_inner): Ditto.
1572         
1573 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
1574
1575         * tramp-x86.c (x86_class_init_trampoline): Fix build.
1576         
1577         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
1578
1579 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
1580
1581         * mini.c (mono_no_aot): Remove unused global variable.
1582
1583         * mini.c: Thread safety fixes.
1584
1585 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
1586
1587         * mini.c (mono_create_class_init_trampoline): Add a lock around
1588         class_init_hash_addr.
1589
1590         * arrays.cs (test_0_newarr_emulation): Add new regression test for
1591         #30073.
1592
1593         * mini.c: Decompose the NEWARR instruction before decomposing its
1594         arguments. Fixes #30073.
1595
1596 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
1597
1598         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
1599         convention.
1600
1601 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
1602
1603         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
1604
1605         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
1606
1607         * driver.c: Add support for compiling icall wrappers to --compile.
1608
1609 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
1610
1611         * inssel.brg: The empty value in class->interface_offsets is -1, not
1612         0. Fixes #49287.
1613
1614 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
1615
1616         * objects.cs: New test for 'is' operator on an array of interfaces.
1617
1618 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
1619
1620         * tramp-ppc.c: update trampoline code to support jumps
1621         and class initialization.
1622
1623 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
1624
1625         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
1626
1627         * inssel.brg (OP_UNBOXCAST): Fix #46027.
1628
1629         * inssel.brg (OP_UNBOX): Remove unused rule.
1630
1631         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
1632         region instead of one for each method. Fixes #47813.
1633
1634 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
1635
1636         * exceptions.cs (test_0_nested_finally): New regression test for
1637         nested exception handlers.
1638
1639         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
1640
1641         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
1642
1643         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
1644         inlining.
1645
1646         * mini.c (mono_method_check_inlining): Make the inlining limit 
1647         configurable by an environment variable.
1648         
1649         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
1650
1651         * mini.h: Bump AOT file version.
1652
1653         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
1654         token, store the image along with the token, since the token might not 
1655         refer to the same image as the method containing the relocation, 
1656         because of inlining.
1657
1658 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
1659
1660         * mini.c (mono_precompile_assemblies): New function to compile
1661         all methods in all loaded assemblies.
1662
1663         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
1664
1665         * regalloc.h regalloc.c (MonoRegState): Change the type of 
1666         iassign and fassign to int*, since they can contain large negative
1667         values if the register is spilled. Also added some comments. Fixes
1668         #45817.
1669
1670         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
1671         under Win32. Fixes #42964.
1672
1673 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
1674
1675         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
1676
1677         * aot.c: Added support for AOT compiling methods which contain calls
1678         to wrappers. Currently, only remoting-invoke-with-check wrappers are
1679         handled.
1680         
1681         * driver.c (compile_all_methods): Run the compilation in a thread
1682         managed by mono. Fixes #44023.
1683
1684         * mini.c (mono_codegen): Print full method name in verbose output.
1685
1686         * mini-x86.c (mono_arch_patch_code): Fix warning.
1687         
1688         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
1689         jumps, since the method we are jumping to might be domain-specific.
1690
1691         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
1692
1693 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
1694
1695         * inssel.brg: string chars are unsigned.
1696
1697 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
1698
1699         * TODO: New todo item.
1700
1701         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
1702         which calls mono_runtime_class_init and patches the call site to
1703         avoid further calls.
1704         (mono_arch_create_class_init_trampoline): New arch specific function 
1705         to create a class init trampoline.
1706         (create_trampoline_code): Generalized so it can create
1707         class init trampolines as well.
1708
1709         * mini.c (helper_sig_class_init_trampoline): New helper variable.
1710         (mono_create_class_init_trampoline): New function to create and cache
1711         class init trampolines.
1712         (mono_find_class_init_trampoline_by_addr): New function to lookup the
1713         vtable given the address of a class init trampoline. Used by the
1714         patching process.
1715         (mono_codegen): Generate a call to a trampoline instead of
1716         mono_runtime_class_init in LDSFLD[A].
1717         (mono_codegen): Add relocations for the new trampoline.
1718         
1719         * mini.h mini-x86.c aot.c: Added a new relocation type: 
1720         MONO_PATCH_INFO_CLASS_INIT.
1721
1722         * mini.h: Bump AOT version number.
1723
1724         * aot.c: Create a copy of the loaded code instead of using the original
1725         so methods which call each other will be close in memory, improving
1726         cache behaviour.
1727         
1728         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
1729         patch since it breaks the regression tests.
1730         
1731         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
1732         for the register saving instruction sequence since the 
1733         frame_state_for function in glibc 2.3.2 don't seem to detect it.
1734
1735 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
1736
1737         * TODO: Fix todo item && remove another.
1738
1739 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
1740
1741         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
1742         previous checkin.
1743
1744         * aot.c: Moved the check for MONO_LASTAOT into the initialization
1745         function of the module.
1746
1747         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
1748         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
1749         --no-aot command line option.
1750
1751 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
1752
1753         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
1754         by Bernie Solomon (bernard@ugsolutions.com).
1755
1756         * inssel.brg: Refactor the interface offset table related code into
1757         its separate functions and add support for the AOT case.
1758
1759 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
1760
1761         * aot.c (mono_aot_get_method_inner): Fix memory leak.
1762         
1763         * aot.c: Added mono_aot_verbose variable and made all debugging
1764         output depend on the value of this variable.
1765
1766         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
1767         method_label and info_label.
1768
1769         * mini.h mini-x86.c aot.c: Added a new relocation type 
1770         MONO_PATCH_INFO_IID for klass->interface_id.
1771
1772         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
1773         the MonoJitInfo structure.
1774
1775         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
1776         a non-root appdomain in shared mode.
1777
1778 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
1779
1780         * aot.c: make aot loader less verbose. Remove free of unused variable.
1781
1782 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
1783
1784         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
1785
1786         * .cvsignore: Added *.dll.
1787
1788         * mini.c (mono_print_tree_nl): New function callable while debugging.
1789
1790         * mini.c (mono_print_code): Export this.
1791
1792         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
1793         patched code.
1794
1795 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
1796
1797         * mini.h (MonoCompile): Added 'jit_info' field.
1798
1799         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
1800         the cfg structure, since it is needed by the AOT compiler.
1801
1802         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
1803
1804         * aot.c: A major rewrite. Changes include:
1805         - save exception tables for methods which have them.
1806         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
1807         to g_module_symbol.
1808         - reworked the file format so it is now much smaller and needs
1809         fewer relocation entries.
1810         
1811 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
1812
1813         * aot.c (load_aot_module): Fix build bustage on platforms without
1814         Boehm GC.
1815
1816 2003-09-04  Martin Baulig  <martin@ximian.com>
1817
1818         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
1819
1820 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
1821
1822         * TODO: Some new optimization ideas.
1823
1824         * aot.c: Move AOT module loading logic here from mono_assembly_open.
1825
1826         * aot.c: Save the optimization flags used to compile the code into
1827         the AOT module.
1828
1829         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
1830         support emitting domain specific code.
1831         
1832         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
1833         no longer domain neutral. It can be made domain neutral by compiling 
1834         with --optimize=shared.
1835
1836         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
1837         between appdomains.
1838
1839         * driver.c mini.h mini.c: New --no-aot debugging option which disables
1840         loading of AOT code.
1841
1842         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
1843         
1844         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
1845         if there is no domain neutrality information.
1846
1847 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
1848
1849         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
1850         format version into the generated library.
1851
1852         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
1853         callee method into the caller since one of them could be shared.
1854
1855         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
1856         system exceptions from AOT code now works.
1857
1858         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
1859         method if it is domain neutral and the callee is not.
1860
1861         * graph.c (cfg_emit_one_loop_level): Fix warning.
1862
1863 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
1864
1865         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
1866         last checkin.
1867
1868 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
1869
1870         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
1871         is needed  by code which is executed before mono_runtime_init ().
1872         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
1873         
1874         * mini.c (mono_thread_abort): Fix warning.
1875         (mono_jit_compile_method): Call static constructor in the AOT case too.
1876
1877         * aot.c (mono_compile_assembly): Fix warning.
1878
1879 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
1880
1881         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
1882
1883 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
1884
1885         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
1886
1887         * cpu-pentium.md: Fix the length of call opcodes so they include the
1888         ESP restoring instruction. Fixes #47968.
1889
1890 2003-08-28  Martin Baulig  <martin@ximian.com>
1891
1892         * mini-x86.c (mono_arch_call_opcode): Added support for
1893         MONO_TYPE_GENERICINST.
1894
1895         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
1896
1897 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
1898
1899         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
1900         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
1901
1902         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
1903         metadata_section.
1904
1905 2003-08-26  Martin Baulig  <martin@ximian.com>
1906
1907         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
1908         when reporting an error, set this to the actual error location.
1909         (mono_method_to_ir): Report the correct error location if
1910         get_basic_blocks() returned an error.
1911
1912 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
1913
1914         * mini.c (mono_type_blittable): OBJECT is not blittable.
1915         (mono_method_blittable): Methods which have marshalling descriptors
1916         are not blittable either. Fixes #47842.
1917
1918 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
1919
1920         * driver.c mini.c: Use an environment variable instead of a global 
1921         variable. Also fix the build.
1922
1923         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
1924         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
1925         reporting this. 
1926
1927         * driver.c mini.c: Added --with-valgrind option to turn off some
1928         code which prevents mono from running under valgrind.
1929
1930         * mini.c (mono_emit_call_args): Fixed warning.
1931
1932         * mini.c (mono_emulate_opcode): Fixed warning.
1933
1934 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
1935
1936         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
1937         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
1938         regalloc.c, regalloc.h: specify available registers in arch-specific
1939         code and support floats in the regallocator (patch by Laurent Morichetti 
1940         <l_m@pacbell.net>)
1941
1942 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
1943
1944         * mini.c: mono_thread_current() can be called only after
1945         mono_runtime_init(): rearrange code to not call it early on.
1946
1947 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
1948
1949         * mini.c: allocate jump tables in the code mempools.
1950
1951 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
1952
1953         * mini.c, mini.h: make sure per-thread data allocated by the jit is
1954         freed.
1955
1956 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
1957
1958         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
1959         12 to 16.  This fixes bug #47453.
1960
1961
1962 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
1963
1964         * mini-ppc.c: fixed indexed load and unsigned compares.
1965
1966 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
1967
1968         * mini.c: reenabled installation of handler for
1969           thread abort signal.
1970
1971 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
1972
1973         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
1974         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
1975         until it's fixed and actually useful.
1976
1977 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
1978
1979         * inssel-long32.brg: couple more opcodes implemented.
1980
1981 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
1982         
1983         * mini-sparc.c: Even more opcodes implemeted.
1984
1985 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
1986
1987         * mini-sparc.c: More opcodes implemented.
1988
1989 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
1990
1991         * mini-sparc.c: More opcodes implemented.
1992
1993 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
1994
1995         * inssel-sparc.brg: Add some needed rules.  Direct
1996         copy from PPC.
1997         * Makefile.am: Use inssel-sparc.brg
1998         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
1999         an assert happy for now.
2000
2001 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
2002
2003         * mini-sparc.c: Fixed compile errors.
2004         * exceptions-sparc.c: Same.  We now produce a mono binary 
2005         on sparc-linux.  Yea.
2006
2007 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
2008
2009         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
2010         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
2011         They compile, but do not work.
2012
2013 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2014
2015         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
2016         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
2017         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
2018         (ct@gentoo.org).
2019
2020 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
2021
2022         * mini.c: more opcodes implemented and better support for generics.
2023
2024 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
2025
2026         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
2027         * mini.c, mini.h: first cut at generics support: some new instructions 
2028         added and changed the behaviour of some of the existing ones.
2029
2030 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
2031
2032         * mini.c: Removed definition of metadata_shared mutex here.
2033
2034 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
2035
2036         * mini-x86.c: make vararg calls work for instance methods.
2037
2038 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
2039
2040         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
2041         returns the arguments in a separte list, now.
2042
2043 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
2044
2045         * aot.c, mini.c: updates for array type representation changes.
2046
2047 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
2048
2049         * mini.c: register function to perform jit shutdown.
2050
2051 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2052
2053         * mini.c: use a faster allocator if possible.
2054
2055 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
2056
2057         * aot.c: some cleanups and portability changes.
2058
2059 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
2060
2061         * mini.c: use faster allocation for CEE_BOX if possible.
2062
2063 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
2064
2065         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
2066         Moved inlined mempcy code to its own function so that is can be
2067         reused. Added an inline memset function as well (optimized initobj).
2068         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
2069
2070 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
2071
2072         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
2073
2074 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
2075
2076         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
2077         arch code can setup the cpu for CLR execution, if needed.
2078         We use it on x86 to set the precision of FP operations.
2079
2080 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
2081
2082         * mini.c: disable some optimizations if we can guess they'll cost too
2083         much for a given method.
2084
2085 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
2086
2087         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
2088         
2089 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
2090         * mini.h mini.c mini-x86.c: Added instruction level coverage 
2091         info collection support.
2092
2093 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2094
2095         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
2096         is now implemented in the profiling API. Get rid of a couple of
2097         unnecessary global variables.
2098
2099 2003-06-15  Nick Drochak <ndrochak@gol.com>
2100
2101         * basic-long.cs: tests for negative values for bigmul, and unsigned.
2102         * cpu-g4.md: add op_bigmul and op_bigmul_un
2103         * cpu_pentium.md: add op_bigmul_un
2104         * inssel-long32.brg: add rule for unsigned bigmul
2105         * mini-ops.h: define OP_BIGMUL_UN
2106         * mini-x86.c: THE BUG: handle (un)signed properly
2107         * mini.c: choose unsigned opcode if needed.
2108         This set of patches fixes bug #44291
2109
2110 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
2111
2112         * mini.c (optimize_branches): improved to handle all kinds of
2113         conditional branches.
2114
2115 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
2116
2117         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
2118         don't raise exceptions.
2119
2120 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
2121
2122         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
2123         to arch-specific files.
2124
2125 2003-06-09  Martin Baulig  <martin@ximian.com>
2126
2127         * Makefile.am (libs): Added $(LIBGC_LIBS).
2128
2129 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
2130
2131         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
2132         and OP_ATAN (fixes bug#44293).
2133
2134 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
2135
2136         * Makefile.am, mini-x86.c: rename cpu description array to
2137         pentium_desc, since some compilers define the 'pentium' preprocessor
2138         symbol.
2139
2140 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
2141
2142         * mini.c (mini_select_instructions): add explicit branch if the
2143         following block is not the false target of a conditional branch -
2144         we need this with any optimization that reorder or remove bblocks
2145
2146         * mini.c (optimize_branches): bug fixes
2147
2148 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
2149
2150         * mini.c (mono_method_to_ir): inline static readonly fields
2151
2152         * ssa.c (fold_tree): start cfold support for long (very simple
2153         cases only)
2154
2155         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
2156
2157 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
2158
2159         * inssel.brg: fixed memcpy (bug #44219).
2160
2161 2003-06-05  Dick Porter  <dick@ximian.com>
2162
2163         * driver.c: Set the glib log levels to not abort if g_message
2164         recurses.
2165
2166         g_set_prgname() has to happen before mini_init() so that the
2167         process handle gets the info.
2168         
2169 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2170
2171         * driver.c: add intrins to the default optimizations to get wider
2172         exposure.
2173
2174 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
2175
2176         * mini.h: some large basic blocks will overflow a 16-bit
2177         integers for symbolic registers.
2178
2179 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
2180
2181         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
2182         (mono_arch_output_basic_block): fix bug 43499 
2183
2184 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
2185
2186         * mini.c: kill duplicated definition of mono_debug_format.
2187
2188 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
2189
2190         * mini-x86.c, arrays.cs: fixed register allocation bug.
2191
2192 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
2193
2194         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
2195
2196         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
2197
2198 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2199
2200         * mini.c:
2201         (print_method_from_ip): also print source location information if
2202         available.
2203
2204 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
2205
2206         * mini.c (mono_find_block_region): bug fix in region code
2207         (mini_method_compile): enable removing unreachable code again, but
2208         only in methods without exception clauses.
2209
2210 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
2211
2212         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
2213         Implemented arglist opcode and handling of TypedReference type.
2214         Fixed x86 call convention when a structure is returned.
2215         Minimal support for calling static vararg methods.
2216
2217 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
2218
2219         * mini.c (mini_method_compile):  always remove unreachable code,
2220         because the code in them may be inconsistent  (access to dead
2221         variables for example).
2222
2223 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
2224
2225         * driver.c, debug-mini.c: warning fixes.
2226
2227 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
2228
2229         * Makefile.am, jit.h, mini.h: install header for embedding mono.
2230
2231 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
2232
2233         * mini.c: thread-static fields are registered in mono_class_vtable(),
2234         so ensure the function is called before checking for them.
2235
2236 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
2237
2238         * mini.c (optimize_branches): fix for bug 43586
2239
2240         * jit-icalls.c (mono_llmult_ovf): added an additional check for
2241         overflow (fixes Bug #43639)
2242
2243 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
2244
2245         * mini.c, objects.cs: allow the use of stobj for primitive types.
2246
2247 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
2248
2249         * mini.c: be less strict about argument checking until we support
2250         running the verifier.
2251
2252 2003-05-27  Nick Drochak <ndrochak@gol.com>
2253
2254         * basic-long.cs: tests for (ulong)int * (ulong)int also
2255         * mini.c: use the same trick for (ulong)int * (ulong)int
2256
2257 2003-05-27  Nick Drochak <ndrochak@gol.com>
2258
2259         * basic-long.cs: add regression test for (long)int * (long)int
2260         * cpu-pentium.md: add op_bigmul specification
2261         * inssel-long32.brg: add OP_BIGMUL rule
2262         * mini-ops.h: add OP_BIGMUL
2263         * mini-x86.c: register allocator: handle case where src1 needs to be
2264         in EAX.
2265         * mini.c: substitute special BIGMUL opcode in the tree for 
2266         (long)int * (long)int
2267
2268 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
2269
2270         * jit-icalls.c: call the type ctor on field access if needed.
2271
2272 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
2273
2274         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
2275         to a method (including results of ldelema, bug#43207).
2276
2277 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
2278
2279         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
2280         colors to show exception handler blocks.
2281
2282         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
2283         (fix for pinvoke7.cs).
2284
2285 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
2286
2287         * mini.h, mini.c: ensure correct initialization order for types that
2288         require it. Prepare for lazy compilation of jit icall wrappers.
2289         Provide a name for opcode emulation to reduce unneeded mallocing.
2290
2291 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
2292
2293         * mini-x86.c: better register restoring code and profiling
2294         support for tail calls.
2295
2296 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
2297
2298         * mini.h, driver.c: prepare for leaf methods optimization.
2299
2300 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
2301
2302         * mini.c: get targets of branches before converting a method.
2303
2304 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
2305
2306         * mini.c (optimize_branches): added some experimental code (disbaled) 
2307
2308 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
2309
2310         * mini.c (optimize_branches): fix branch to branch optimization 
2311
2312         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
2313
2314         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
2315
2316         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
2317
2318         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
2319         if needed.
2320
2321 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
2322
2323         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
2324         enable use of interface variables again.
2325
2326         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
2327         I1 to registers because there is no simply way to sign extend 8bit
2328         quantities in caller saved registers on x86.
2329
2330         * inssel-float.brg: set costs of some rules to 2 so
2331         that monobure always select the arch. specific ones if supplied,
2332         regardless of the order we pass the files to monoburg.
2333
2334 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
2335
2336         * mini.c, mini-x86.c: since the magic trampoline for jumps
2337         can't patch the code directly, we do it as soon as the
2338         method gets compiled.
2339
2340 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
2341
2342         * mini-x86.c, mini.h: introduce a new patching method
2343         to support CEE_JMP and tail calls.
2344         * mini.c: obey tail.call. Don't precompile methods target
2345         of CEE_JMP.
2346         * tramp-x86.c: new trampoline code to handle methods
2347         reached through a jump.
2348
2349 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
2350
2351         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
2352         bit values to registers
2353
2354 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
2355
2356         * mini.c (mono_compile_get_interface_var): share interface
2357         variables if possible.
2358
2359 2003-05-16  Martin Baulig  <martin@ximian.com>
2360
2361         * debug-mini.c (mono_init_debugger): New function to initialize
2362         the debugger.  This is not in the debugger since it needs to
2363         access some of mini's internals.
2364
2365 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
2366
2367         * mini.c (mono_method_to_ir): inlining fixes/cleanups
2368
2369 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
2370
2371         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
2372         for value type handling.
2373
2374 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
2375
2376         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
2377         (mono_method_check_inlining): enable inlining of all kinds of wrappers
2378
2379 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
2380
2381         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
2382           the constructor through a proxy.
2383
2384 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
2385
2386         * jit-icalls.c, inssel.brg: fixes to array element address
2387         calculations.
2388
2389 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
2390
2391         * mini-x86.c (is_regsize_var): allocate pointer to registers
2392
2393 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
2394
2395         * driver.c: fixed typo, added intrins to the set of optimizations
2396         tested with regressions.
2397
2398 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
2399
2400         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
2401         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
2402         test case.
2403
2404 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
2405
2406         * inssel.brg: remove some common pop instructions without side effects
2407
2408 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
2409
2410         * inssel-x86.brg: fixed thinko in int to double conversions.
2411
2412 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
2413
2414         * mini.c, jit-icalls.c: added runtime thread-static variable support.
2415
2416 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
2417
2418         * inssel-long32.brg: two more missing instructions.
2419
2420 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
2421
2422         * mini.c (mono_emit_call_args): set the cil_code for all arguments
2423         if not already set.
2424
2425 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
2426
2427         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
2428         correctly.
2429
2430         * basic-float.cs: Added tests for negative zero.
2431
2432 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
2433
2434         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
2435         a couple of missing operations for long casts, with test cases.
2436
2437 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2438
2439         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
2440
2441 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
2442
2443         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
2444         code size estimation.
2445
2446 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
2447
2448         * mini.c (mono_jit_create_remoting_trampoline): make it work with
2449         abstract methods (fix bug 42542)
2450
2451         * aot.c: add ability to handle array types
2452         
2453 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
2454
2455         * mini.c: Call the _specific versions of the object allocation
2456         functions if possible.
2457
2458 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
2459
2460         * driver.c: call setlocale ().
2461
2462 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
2463
2464         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
2465         windows build.
2466
2467 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
2468
2469         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
2470
2471         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
2472         wrappers (fix bug 42122)
2473
2474 2003-05-04  Martin Baulig  <martin@ximian.com>
2475
2476         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
2477
2478         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
2479         s/mini_set_defaults/mono_set_defaults/g.
2480
2481 2003-05-04  Martin Baulig  <martin@ximian.com>
2482
2483         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
2484
2485 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
2486
2487         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
2488         (reported by Don Roberts).
2489
2490 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
2491
2492         * mini.c: temporarily work around two bugs for this release.
2493
2494 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
2495
2496         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
2497         that contains -export-dynamic and it makes using the ld script
2498         useless.
2499         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
2500
2501 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
2502
2503         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
2504         specific cpu.
2505
2506 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
2507
2508         * mini.c: make sure leave calls all the needed finally blocks,
2509         even when the target jumps out of multiple exception clauses.
2510
2511 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
2512
2513         * ldscript, Makefile.am: add linker script to reduce the number of
2514         exported symbols (should also fix the issues with libwine defining
2515         some of the same symbols in io-layer).
2516
2517 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
2518
2519         * driver.c (mini_main): Avoid assertion when no file name is given on 
2520         the command line.
2521
2522 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
2523
2524         * driver.c: added --version/-V command line option.
2525         Added the inline optimization in the regression tests.
2526
2527 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
2528
2529         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
2530         to the type in the method signature (fixes bug#42134).
2531
2532 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
2533
2534         * mini.c: when inlining, check this is not null only when needed (bug #42135).
2535
2536 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
2537
2538         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
2539
2540 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2541
2542         * driver.c: fixed bug #42100.
2543
2544 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
2545
2546         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
2547
2548 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
2549
2550         * mini.c: moved most of the code required to do inlining to its own
2551         function so it can be reused. Inline also ctors if appropriate.
2552
2553 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
2554
2555         * Makefile.am: Link with -export-dynamic so shared libs loaded by
2556         the runtime can call mono API functions.
2557
2558 2003-04-27  Martin Baulig  <martin@ximian.com>
2559
2560         * debug-mini.c (mono_debug_init_method): Added
2561         `guint32 breakpoint_id' argument; if the method has a breakpoint,
2562         send a notification to the debugger.
2563
2564         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
2565         running in the Mono Debugger, just pass the breakpoint number to
2566         mono_debug_init_method().
2567
2568         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
2569
2570 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
2571
2572         * mini.c: allow some more unsafe compares.
2573
2574 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2575
2576         * mini-x86.c, Makefile.am: make distcheck works (partially from
2577         a patch by Richard Lee <r.h.lee@attbi.com>).
2578         * regset.c, regset.h: removed, they are unused.
2579
2580 2003-04-25  Dick Porter  <dick@ximian.com>
2581
2582         * driver.c: Usage reports the name as 'mono' not 'mini'
2583         * exceptions-x86.c: Build and run on freebsd
2584
2585 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
2586
2587         * Makefile.am: install the program with the 'mono' name and
2588         the library as libmono instead of mini and libmini.
2589
2590 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
2591
2592         * driver.c: provide the APIs for the embedding interface of the old jit.
2593
2594 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
2595
2596         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
2597
2598 2003-04-23  Martin Baulig  <martin@ximian.com>
2599
2600         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
2601
2602         * driver.c: Added `--debug' command line argument to enable
2603         debugging support.
2604
2605 2003-04-23  Martin Baulig  <martin@ximian.com>
2606
2607         * debug.[ch]: Removed.  The code is now in
2608         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
2609
2610         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
2611         last six months.
2612
2613 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
2614
2615         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
2616
2617 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2618
2619         * mini.c:
2620         (mini_cleanup): moved mono_runtime_cleanup call after the call to
2621         mono_domain_finalize.
2622         (mini_method_compile): use mono_method_profile* if the the option is
2623         enabled.
2624
2625 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
2626
2627         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
2628         methods with their wrapper.
2629
2630         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
2631         methods with their wrapper.
2632
2633         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
2634         their wrapper.
2635
2636         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
2637         wrapper.
2638
2639         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
2640         methods.
2641
2642 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
2643
2644         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
2645
2646 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
2647
2648         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
2649         of the mempool. This is slightly faster and uses less memory
2650
2651 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
2652
2653         * mini.c: avoid O(n) allocation for variables.
2654
2655 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
2656
2657         * mini.c: handle items on the stack after inlining methods.
2658
2659 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
2660
2661         * mini.c: make the method->opcode optimization dependent
2662         on MONO_OPT_INSTRINS and do it lazily.
2663
2664 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
2665
2666         * driver.c: print overall results at the end of regression run.
2667
2668 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
2669
2670         * inssel.brg: don't overwrite symbolic registers.
2671
2672 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
2673
2674         * inssel-x86.brg: fix conversion from long to float.
2675
2676 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
2677
2678         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
2679
2680 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
2681
2682         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
2683
2684         * driver.c: Added --print-vtable option as in the old JIT.
2685
2686 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
2687
2688         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
2689
2690 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
2691
2692         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
2693
2694 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
2695
2696         * mini.c regalloc.c regalloc.h: Fix memory leak.
2697
2698 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
2699
2700         * aot.c (mono_aot_get_method): register all used strings
2701
2702 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
2703
2704         * mini.c: always intern strings references with ldstr at compile time.
2705
2706 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
2707
2708         * Makefile.am: add BUILT_SOURCES.
2709
2710 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
2711
2712         * driver.c: give a better error message when the assembly to execute
2713         doesn't have an entry point.
2714
2715 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
2716
2717         * Makefile.am: added hack for automake
2718
2719         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
2720         correct sematics.
2721
2722         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
2723
2724 22003-04-07  Martin Baulig  <martin@ximian.com>
2725
2726         * Makefile.am: Added Makefile.am.
2727
2728         * debugger-main.c: Removed, this is now in the debugger where it
2729         belongs.
2730
2731         * mini.pc.in: Call this package `mini' for the moment.
2732
2733
2734
2735