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