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