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