abcremoval.c: Fixed bug 71062.
[mono.git] / mono / mini / ChangeLog
1 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
2
3         abcremoval.c: Fixed bug 71062.
4         abcremoval.h: Likewise.
5
6 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
7
8         * mini.c: Added a new functionality to optimize_branches, the removal
9         of useless basic blocks, and fixed some problem in the removal of
10         critical edges; some utility functions added for both purposes.
11         * ssapre.c: Added complex expression support, and fixed bug 70637.
12         * ssapre.h: Likewise.
13         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14         enabled in SSAPRE.
15         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16         * driver.c: Re-enabled SSAPRE.
17
18 2005-01-19  Martin Baulig  <martin@ximian.com>
19
20         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
21         the result of mono_get_method_constrained().
22
23 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
24
25         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
26         manager.
27
28 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
29
30         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
31         be detected.  Fixes #59296.
32
33 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
34
35         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
36         which can happen. Fixes #71361.
37
38 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
39
40         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
41         manager.
42
43 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
44
45         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
46         appdomain-unload.exe to fail.
47         
48         * mini.c: Fix some memory leaks.
49
50 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
51
52         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
53         Fixed bug and sped up some codepaths.
54
55 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
56
57         * mini.c: Fix some memory leaks.
58
59         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
60         conversion.
61
62         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
63
64         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
65         #71320.
66
67         * iltests.il: Add regression test for #71320.
68
69 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
70
71         * mini.c (mono_codegen): Fix installation of profiler hooks.
72
73         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
74
75 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
76
77         * mini.h, mini.c, cfold.c: optimize access to enum
78         readonly fields, too. Eval conditional branches if possible
79         to perform unreachable code removal in more cases.
80
81 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
82
83         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
84
85         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
86         code manager.
87
88         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
89         WinXP DEP. Fixes #71244.
90
91 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
92
93         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
94
95 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
96
97         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
98
99 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
100
101         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
102         changes.
103
104         * mini.h: Bump AOT version.
105
106         * mini.h (MonoCompile): Change exvar to a hash table.
107
108         * mini.c: Allocate a separate exvar for each handler block.
109
110         * mini.c: Get rid of the computation of filter_lengths, its not needed.
111
112         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
113         ex var with the pending exception and only throw if the two are equal.
114         Fixes #68552.
115         
116         * exceptions.cs: Add tests for rethrow and nested catch clauses.
117
118         * mini-x86.c: Fix warnings.
119
120         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
121         used by all the ports now.
122
123         * aot.c: Add write-symbols and save-temps options.
124
125 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
126
127         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
128
129 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
130
131         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
132         operations.
133
134         * tramp-s390.c: Check vtable slot belongs to the domain.
135
136         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
137         as per other platforms.
138
139         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
140
141 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
142
143         * driver.c: we don't run the Main() code in a subthread anymore.
144
145 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
146
147         * mini.c: added experimental rtc support in the statistical
148         profiler: if the user has the permission, more accurate statistics
149         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
150         The MONO_RTC value must be restricted to what the linux rtc allows:
151         power of two from 64 to 8192 Hz.
152
153 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
154
155         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
156
157 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
158
159         * mini-ppc.c: better icache flush for smp.
160
161 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
162
163         * mini-amd64.c (emit_move_return_value): Fix memory leak.
164
165         * mini-x86.c (get_call_info): Add the get_call_info () code from the
166         amd64 port, not yet used.
167
168 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
169
170         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
171         a struct type.
172
173 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
174
175         * driver.c: Added --security option to activate the security manager.
176         Right now this will allow code generation for declarative demands and
177         is disabled when AOT is specified.
178         * mini.c: Add code generation for declarative security demands.
179         * mini.h: Add mono_use_security_manager as an extern gboolean.
180
181 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
182
183         * aot.c (mono_compile_assembly): Speed up compilation a bit by
184         emitting more dense assembly code.
185
186         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
187         exception throwing stuff.
188
189 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
190
191         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
192         dead code.
193
194         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
195         left in by mistake.
196
197         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
198         fixed.
199
200         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
201
202         * tramp-*.c: Only patch vtable slots if the object is in the current
203         domain. Fixes appdomain-unload.exe.
204
205         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
206         
207         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
208         x86 branch.
209
210 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
211
212         * mini.c (reverse_branch_op): New helper function.
213
214         * mini.c (optimize_branches): Run the new optimization only on 
215         platforms which support it. Also reverse all kinds of branches.
216
217         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
218
219         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
220         a throw statement.
221
222         * mini.c (optimize_branches): Reverse not-equals branches if the false
223         bblock is a throw. This happens a lot of time with argument checking in
224         corlib.
225
226         * mini.c (mono_codegen): Add support for placing basic blocks after
227         the function epilogue.
228
229         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
230         function epilogue.
231         
232 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
233
234         * mini.c (setup_stat_profiler): Only set this up if the platform
235         supports ITIMER_PROF.
236
237 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
238
239         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
240         previous patch.
241
242         * inssel.brg: Fix a warning.
243
244 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
245
246         * mini.c: added support for statistical profiler 
247         (run with: --profile=default:stat).
248
249 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
250
251         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
252
253         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
254
255         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
256         related to global registers from the amd64 port.
257
258 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
259
260         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
261
262         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
263         with global registers.
264         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
265
266         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
267
268 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
269
270         * debug-mini.c (encode_value): Fix off-by-one.
271
272         * aot.c (encode_value): Likewise.
273
274         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
275
276 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
277
278         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
279         AOT.
280
281         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
282         
283         * aot.c (emit_method_info): Increase size of temp buffer.
284
285         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
286         the AOT case.
287
288 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
289
290         * aot.c (emit_method_info): Fix build.
291         
292         * aot.c: Further rework of the AOT file format to reduce the size of
293         the method info data.
294
295         * mini.h: Bump AOT file format version.
296
297 2004-12-27  Martin Baulig  <martin@ximian.com>
298
299         * mini.c (mini_get_method): New static method; call
300         mono_get_method_full() and mono_get_inflated_method().
301         (mono_method_to_ir): Use mini_get_method() instead of
302         mono_get_method_full(). 
303
304 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
305
306         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
307
308 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
309
310         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
311
312         * inssel-amd64.brg: Add some optimization rules.
313
314 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
315
316         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
317         standard not GC'd stuff is fine.
318
319 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
320
321         * aot.c: Rework the AOT file format to get rid of most of the global
322         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
323
324         * mini.h: Bump AOT file format version.
325         
326 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
327
328         * mini.h: Bump AOT file format version.
329
330         * aot.c (mono_aot_is_got_entry): New function to determine if an 
331         address is inside a GOT.
332
333         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
334
335         * cpu-pentium.md: Increase the maximum size of some instructions which
336         might involve a got access.
337         
338         * mini.c (get_method_from_ip): Another debug helper function.
339
340         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
341         when got var accesses are created during the decompose phase.
342
343         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
344
345         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
346         argument mini_compile_method and to MonoCompile, and use this to
347         determine whenever a given method is compiled for AOT. This allows the
348         other methods compiled during AOT compilation to be free of AOT stuff,
349         so the backends does not need to add special support for them by
350         creating a fake GOT etc.
351
352         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
353         longer needed.
354
355 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
356
357         * mini.c (mono_method_to_ir): It turns out that some of the
358         x-appdomain wrappers are lax with types, so just ignore this for
359         all wrappers.
360
361         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
362         at the vtable->klass. If it is non-shared code we can just use the
363         vtable.
364
365 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
366
367         * mini-ppc.c: access MonoDomain from tls, too.
368
369 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
370
371         * declsec.c: Removed unused variable (and related warning ;-)
372
373 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
374
375         * iltests.il: New test for LDELEMA on an array of ref types.
376
377         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
378         all ldelema's on reftypes.
379         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
380         it was the wrong place to put it.
381
382         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
383         register to pop to make this cleaner, at the request of Paolo.
384
385 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
386
387         * mini-ops.h (OP_GETHASHCODE): New op.
388
389         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
390
391         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
392         operation.
393
394         For a microbenchmark, this reduces the cost of Hashtable.get_Item
395         by 25%.
396         
397         * mini-x86.c (mono_arch_output_basic_block): Rather than
398
399         add ebp, 4
400
401         Emit
402
403         pop edx
404
405         The first is 3 bytes while the second is 1. This saves 36 kb on
406         mscorlib, quite a big saving. When bootstraping mcs, I was able to
407         see a small boost because of icache locality.
408
409         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
410
411 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
412
413         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
414         started code sharing with the generic code.
415
416 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
417
418         * mini-ppc.c, cpu-g4.md: added code for direct access to
419         tls data slots.
420
421 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
422
423         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
424          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
425         to OP_TLS_GET.
426
427 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
428
429         * declsec.c|h: Added functions to cache the declarative stack modifiers
430         in MonoJitInfo and to create a security frame from a MonoJitInfo 
431         structure.
432         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
433         created. Register internal calls for System.Security.SecurityFrame::
434         _GetSecurityFrame and _GetSecurityStack.
435         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
436         the definitions for the new stack walk/callback mechanism.
437         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
438         first security frame for LinkDemands and InheritanceDemands) and
439         GetSecurityStack for Demands. Both use the new mono_walk_stack code
440         from lupus.
441         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
442         walk initialization (lupus).
443
444 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
445
446         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
447         idiom.
448         (handle_loaded_temps): Do not create a temporary variable for
449         things that we know are temps. They will never be modified.
450         (mono_spill_call): Set MONO_INST_IS_TEMP
451         (mono_emulate_opcode): ditto
452         (emit_tree): ditto
453         (mono_method_to_ir.CEE_DUP): ditto
454
455 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
456
457         * mini.c (type_to_eval_stack_type): Make this handle the void type
458         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
459         (emit_tree): use ip_in_bb to special case some common idioms
460         Update all callers to pass in the IP.
461         (mono_method_to_ir): Make CEE_CALL* do the above as well.
462
463         This gives us a nice 2% speedup in mcs bootstrap.
464
465         * mini-x86.c (peephole_pass): Peephole pass to make
466         mov  [foo], eax
467         push [foo]
468
469         into
470
471         mov [foo], eax
472         push eax
473
474         * mini.c (ip_in_bb): new method.
475         (mono_method_to_ir): use this method rather than doing the hash
476         lookup ourselves.
477
478         * linear-scan.c (mono_linear_scan): When expiring actives, you
479         don't need to keep around variables that expire on this
480         instruction. This makes it so that:
481              a = b + 1
482         will turn into:
483              store (ebx add (ebx, 1))
484         which will become
485              add ebx, 1
486
487 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
488
489         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
490         combination to avoid doing two copies. Fix up problems with previous
491         patch.
492
493         * mini.c: Fix 64 bit warnings.
494
495         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
496
497 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
498
499         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
500         changes from the x86 code.
501
502         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
503
504 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
505
506         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
507         throwing code to reduce its size, unify the AOT and non-aot code and 
508         get rid of relocations in the AOT case.
509
510         * mini-x86.h mini.c exceptions-x86.c 
511         (mono_arch_get_throw_corlib_exception): New arch specific function to 
512         raise corlib exceptions which doesn't require relocations in the 
513         caller.
514
515         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
516
517 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
518
519         * mini.c (mono_emit_method_call): Only allocate the got var when it is
520         needed.
521
522         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
523         in the AOT case.
524
525 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
526
527         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
528         with add function when used from Inc/dec atomic 
529         functions. Re-enabled optimization on x86.
530         * mini-ops.h: renamed atomic_add functions to
531         allow _add to match the Interlocked::Add and
532         _add_next to match Interlocked::Inc/Dec.
533
534 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
535
536         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
537         linking of BBs to the end BB, and enabled SSAPRE also with
538         consprop and copyprop (which was prevented by that bug).
539
540 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
541
542         * mini-x86.c: disabling the Interlocked optimizing code. 
543
544 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
545
546         * aot.c (load_aot_module): Move reading of got_addr after the AOT
547         file version check.
548         
549 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
550
551         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
552         interlocked optimization due lack of support on x86, rewrote 
553         exchange to take into account that base may be in eax.
554         
555         xsp works again; activated Interlocked optimizing code.
556         
557 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
558
559         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
560
561 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
562
563         * mini-ops.h: Add new opcodes.
564
565         * mini.h: Add new patch types. Add got_var to MonoCompile.
566
567         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
568         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
569         make it work with all kinds of patchable code.
570
571         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
572         address of the GOT, and referencing entries in the GOT.
573
574         * mini.c: Add code to load the GOT address if needed by an opcode.
575
576         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
577         independent AOT code on the x86 using an elf-style Global Offset Table.
578
579 2004-12-14  Raja R Harinath  <rharinath@novell.com>
580
581         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
582
583 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
584
585         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
586         when running xsp.
587
588 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
589
590         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
591         of Interlocked:Increment/Decrement/Add as inline ops.
592         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
593
594 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
595
596         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
597         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
598
599 2004-12-12  Duncan Mak  <duncan@ximian.com>
600
601         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
602         again. `patch_info->table_size' is no longer valid after Zoltan's
603         commit #37636.
604
605 2004-12-12  Martin Baulig  <martin@ximian.com>
606
607         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
608         if we are the "real" method, ie. not an inlined method inside it.
609
610 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
611
612         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
613         before we look in the special fields table. This fixes
614         ../tests/thread-static-init.cs.
615
616 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
617
618         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
619         for Array get_Rank and get_Length. Fixes bug #70465.
620
621 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
622
623         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
624         separate structure to reduce the size of MonoJumpInfo.
625
626 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
627
628         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
629
630 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
631
632         * mini.c (mini_get_inst_for_method): Changed to allow ports
633         to return a MonoInst instead of opcode 
634         (renamed mini_get_opcode_for_method to better reflect the new functionality)
635         
636         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
637         Allow ports to return a created MonoInst instead of op-code, will enable
638         new optimizations.
639         (renamed mini_get_opcode_for_method to better reflected the functionality)
640
641 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
642
643         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
644
645 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
646
647         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
648         Fixes #69985.
649
650 2004-12-08  Martin Baulig  <martin@ximian.com>
651
652         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
653         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
654
655 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
656
657         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
658         correctly.
659
660         * exceptions.cs: Disable some tests which depend on properties of x86 fp
661         arithmetic.
662
663 2004-12-08  Raja R Harinath  <rharinath@novell.com>
664
665         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
666
667 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
668
669         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
670         bug introduced by the previous patch.
671
672 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
673
674         * mini-ppc.c, objectc.cs: handle large structs passed by value
675         (fixes bug #69972).
676
677 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
678
679         * mini-ppc.c: OP_ARGLIST implementation from
680         Geoff Norton  <gnorton@customerdna.com>.
681
682 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
683
684         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
685         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
686
687 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
688
689         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
690
691 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
692
693         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
694         support.
695
696 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
697
698         * mini-sparc.c: Zero out localled-ed memory.
699
700         * iltests.il: Add tests for zeroing out localloc-ed memory.
701
702 2004-12-04  Martin Baulig  <martin@ximian.com>
703
704         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
705         mono_method_get_signature_full().       
706
707 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
708
709         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
710         and some utility functions (always for SSAPRE), integrated SSAPRE.
711         * mini.h: Likewise.
712         * driver.c: Added ssapre option.
713         * ssa.c: Small fix on OP_ARG handling.
714         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
715         * Makefile.am: Likewise.
716
717 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
718
719         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
720         now in the xp code.
721
722         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
723         icall.
724
725 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
726
727         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
728         
729         * cpu-s390.md : Increase instruction length of oparglist.
730
731         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
732
733 2004-11-30  Martin Baulig  <martin@ximian.com>
734
735         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
736         virtual generic methods.  We call a special helper_compile_generic_method()
737         icall to retrieve the method from the vtable, inflate and compile
738         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
739
740         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
741
742 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
743
744         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
745
746 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
747
748         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
749         Fixes #69929.
750
751 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
752
753         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
754         platforms with PIC aot.
755
756 2004-11-28  Martin Baulig  <martin@ximian.com>
757
758         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
759         Fixes gen-112.cs.
760
761 2004-11-28  Martin Baulig  <martin@ximian.com>
762
763         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
764         the result of mono_type_get_underlying_type() to check whether
765         we're byref.
766
767 2004-11-26  Martin Baulig  <martin@ximian.com>
768
769         * mini.c
770         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
771         in the g_assert().
772
773 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
774
775         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
776         the same way as the other arguments so they won't get clobbered.
777
778         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
779         calls through R11 since it is clobbered by the trampoline code.
780
781 2004-11-26  Raja R Harinath  <rharinath@novell.com>
782
783         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
784         pick up in-tree mscorlib.dll.
785
786 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
787
788         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
789
790         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
791         runtime data/code are now stored in a table similar to the GOT in ELF. 
792         This allows the code itself to be position independent.
793
794         * aot.c: Fix loading of referenced assemblies after the lazy assembly
795         loading changes.
796
797         * aot.c: Attach ELF type (object/function) directives to all global
798         symbols.
799
800         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
801
802         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
803
804         * mini-amd64.h: Turn on PIC AOT code.
805
806         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
807         returning the offset within an OP_AOTCONST instruction where the GOT
808         offset needs to be added.
809
810         * mini.h: Bump AOT file format version.
811
812 2004-11-25  Martin Baulig  <martin@ximian.com>
813
814         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
815         uninflated generic methods.
816
817 2004-11-25  Martin Baulig  <martin@ximian.com>
818
819         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
820
821 2004-11-24  Martin Baulig  <martin@ximian.com>
822
823         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
824         original klass (this only applies for generic instances).
825
826 2004-11-24  Martin Baulig  <martin@ximian.com>
827
828         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
829         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
830         that array).
831
832 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
833
834         * mini.c (mono_method_to_ir): Disable inlining for methods containing
835         localloc. Fixes #69678.
836
837         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
838         
839 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
840
841         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
842         used SSE registers on pinvoke calls. Fixes #69774.
843
844 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
845
846         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
847         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
848
849 2004-11-23  Raja R Harinath  <rharinath@novell.com>
850
851         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
852         Refer directly to the mcs/ tree.
853
854 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
855
856         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
857         Check if a trampoline for a synchronized method is required. 
858
859 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
860
861         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
862         with localloc if needed. Throe arithmetric exception in
863         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
864         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
865
866 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
867
868         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
869         types before switching on type.  Fixes #69622.
870
871 2004-11-19  Raja R Harinath  <rharinath@novell.com>
872
873         * Makefile.am (check-local): New.  Integrate into 'make check'.
874         (MCS,RUNTIME): Define using in-tree mono and mcs.
875         (ILASM): New.
876         (%.exe): Use $(ILASM).
877
878 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
879
880         * mini-ppc.c: adjust initial prolog size (bug #69691).
881
882 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
883
884         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
885         #69664.
886
887 2004-11-17  Raja R Harinath  <rharinath@novell.com>
888
889         * Makefile.am (clean-local): Rename from 'clean'.
890
891 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
892
893         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
894         to mono_arch_is_int_overflow. 
895         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
896         SIGFPE events.
897
898 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
899
900         * declsec.c|h: New files to support declarative security attributes.
901         Added function to check if a method has (applicable) security.
902         * mini.c|h: Add check for declarative security attributes in
903         mono_method_check_inlining.
904         * Makefile.am: Added declsec.c and declsec.h to the build.
905
906 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
907
908         * mini.c, mini.h: update to keep dynamic code info per-domain.
909
910 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
911
912         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
913         (mini_init): Get rid of it from here too.
914
915 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
916
917         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
918         implemented OP_RETHROW (patch by Geoff Norton
919         <gnorton@customerdna.com>).
920
921 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
922
923         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
924         between appdomains.  Fixes appdomain-unload on PPC.
925
926 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
927
928         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
929         mini-exceptions.c: handle the new wrapper types.
930         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
931         token value as a MonoClass* when compiling a wrapper.
932         mono_jit_create_remoting_trampoline now takes an additional
933         MonoRemotingTarget parameter.
934         
935 2004-11-10  Martin Baulig  <martin@localhost>
936
937         * mini.c (mono_method_to_ir): Use `generic_container->context'
938         rather than creating a new one.
939
940 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
941
942         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
943
944         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
945
946 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
947
948         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
949         the experimental aot cache stuff.
950
951 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
952
953         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
954         mini-exceptions.c: update to exception clause structure changes.
955
956 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
957
958         * exceptions-x86.c (throw_exception): Fix warnings.
959
960         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
961         for OP_RETHROW.
962
963 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
964
965         * exceptions-sparc.c (get_throw_exception): Really fix this.
966
967 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
968
969         * tramp-*.c: we no longer support icalls without wrappers, so
970         a bit of code can be removed here
971
972 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
973
974         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
975         patch.
976
977         * cpu-sparc.md: Add op_rethrow.
978
979         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
980
981         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
982
983         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
984         * mini-ops.h: Add OP_RETHROW.
985
986         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
987
988         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
989
990 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
991         
992         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
993         Makes the output much easier to read
994
995 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
996
997         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
998         prevents another huge leak when compiling with ssa. Secondly, the
999         performance of doing this rather than freeing the lists is much
1000         better. GList does a lock every time you allocate a list link,
1001         so that it can use a memory pool. So, it is better to just use
1002         a memory pool of our own.
1003         
1004         * ssa.c, linear-scan.c: replace g_list_remove_link with
1005         g_list_delete.  The remove one does not free the GList, so we were
1006         leaking memory. On -O=all --compile-all with corlib, this cut down
1007         3 MB of allocations.
1008
1009 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
1010
1011         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
1012
1013         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
1014
1015         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
1016         into a new function mono_create_jit_trampoline ().
1017
1018 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
1019
1020         * trace.c (get_spec): Allow tracing of classes without a namespace.
1021
1022 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
1023
1024         * mini.c: Fix pointer overwrite in mini_method_compile.
1025
1026 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
1027
1028         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
1029         The darwin ABI needs some special handling for 1 and 2 byte structs
1030         Lets use lbz/lhz instead of lwz everywhere.
1031         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
1032         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
1033         Use stb/sth for the former, and put the latter always on stack instead of in
1034         argument registers.
1035
1036 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
1037
1038         * trace.c (is_filenamechar): Add '_'.
1039
1040 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
1041
1042         * mini-s390.c: Fix prolog length to allow for large trace requirements.
1043
1044         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
1045
1046 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
1047
1048         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
1049         depends on libmonogc. Fixes #68805.
1050
1051 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
1052
1053         * mini.c (mono_jit_free_method): Provide extra information for
1054         this error.  Currently this leaks, but will be turned into a
1055         developer option in the future.
1056
1057 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
1058
1059         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
1060
1061 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
1062
1063         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
1064         boundary. Fixes reading of PATCH_INFO_R4 and R8.
1065         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
1066
1067 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
1068
1069         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
1070         trampolines for AOT code.
1071
1072 2004-10-22    <vargaz@freemail.hu>
1073
1074         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
1075         constructed types. Fixes #68136.
1076
1077 2004-10-21  Martin Baulig  <martin@ximian.com>
1078
1079         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
1080         if it returns true, unwind the stack to the call instruction.
1081
1082 2004-10-21    <vargaz@freemail.hu>
1083
1084         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
1085
1086         * mini.h: Bump AOT version number.
1087
1088         * objects.cs: Add another test for unbox trampolines.
1089
1090         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
1091         valuetype methods.
1092
1093 2004-10-20    <vargaz@freemail.hu>
1094
1095         * driver.c: Add SHARED to the set of optimizations tested.
1096
1097         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
1098
1099         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
1100         used by CEE_NEWARR.
1101
1102         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
1103
1104 2004-10-20  Martin Baulig  <martin@ximian.com>
1105
1106         * mini-exceptions.c (mono_handle_exception): Call
1107         mono_debugger_handle_exception() to tell the debugger about
1108         catch/finally clauses.
1109
1110 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
1111
1112         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
1113
1114         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
1115         #68447.
1116
1117 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
1118
1119         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
1120         methods as their native size, fixed bug #57543, #57545.
1121         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
1122         This saves a temporary register and mullw call down into 1 (minor perf
1123         increase for cases like sum = sum * 5;  This use to translate into:
1124             li r11,5
1125             mullw r28,r28,r11
1126         It now translates to
1127             mulli r28,r28,5
1128
1129 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
1130
1131         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
1132         #68388.
1133
1134 2004-10-11  Martin Baulig  <martin@ximian.com>
1135
1136         * mini.c (mono_method_to_ir): If we're a generic method, get the
1137         MonoGenericContainer from our MonoMethodNormal and create a
1138         MonoGenericContext from it.
1139
1140 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
1141
1142         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
1143
1144         * basic-long.cs: Add test for checked i8->i2 cast.
1145
1146 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
1147
1148         * inssel-ppc.brg: added a couple of speedup rules.
1149
1150 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
1151
1152         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
1153         to speed up rebuilds.
1154
1155 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1156
1157         * mini-s390.c: Minor fix to OP_OR_IMM.
1158
1159 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
1160
1161         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
1162         better. Fixes appdomain-unload.exe on sparc.
1163
1164 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
1165
1166         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
1167         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
1168         see bug 67324.
1169
1170 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
1171
1172         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
1173
1174 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
1175
1176         * mini.c: Always generate a field read/write wrapper for members
1177         of the class MarshalByRefObject since the actual instance could
1178         be a CBO.
1179
1180 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
1181
1182         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
1183
1184 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
1185
1186         * driver.c mini.h trace.c: Move the setting of the main assembly into
1187         a separate function called mono_trace_set_assembly () and call it after
1188         actually loading the main assembly. Fixes #66872.
1189
1190 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
1191
1192         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
1193         using the code manager.
1194
1195 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
1196
1197         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
1198
1199 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
1200
1201         * cpu-amd64.md: Fix bug in previous patch.
1202         
1203         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
1204         #66650.
1205
1206 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
1207
1208         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
1209         mini-exceptions.c: updates for changed stack walk interface.
1210
1211 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1212
1213         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
1214
1215 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
1216
1217         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
1218
1219 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
1220
1221         * driver.c (mini_regression_list): Do not call mono_assembly_close 
1222         since assemblies can't be unloaded.
1223         
1224 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
1225
1226         * cpu-amd64.md: Fix more instruction lengths.
1227
1228         * cpu-amd64.md: Fix lengths of some instructions.
1229
1230 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
1231
1232         * inssel.brg: Make the array ldelema check aot friendly.
1233
1234 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
1235
1236         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
1237
1238         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
1239
1240 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
1241
1242         * mini-x86.c: Fix build.
1243
1244         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
1245         mono_type_get_underlying_type () helper function to simplify code.
1246         
1247 2004-09-09  Martin Baulig  <martin@ximian.com>
1248
1249         * mini-amd64.c: Don't access `type->data.klass' directly, call
1250         mono_class_from_mono_type() instead since the type may be a
1251         generic instance.
1252
1253 2004-09-09  Martin Baulig  <martin@ximian.com>
1254
1255         * mini-amd64.c (get_call_info): Fix support for generic instances.
1256         (add_valuetype): Use mono_class_from_mono_type() to get the class
1257         since we can be a generic instance.
1258
1259 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
1260
1261         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
1262
1263 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
1264
1265         * liveness.c: reset spill costs on each scan: bug 62107
1266
1267 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
1268
1269         * exceptions-sparc.c (mono_arch_find_jit_info): remove
1270         unnecessary line that doesn't compile
1271
1272 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
1273
1274         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
1275         trampolines, make them call an error function so people can fix their
1276         code.
1277
1278 2004-09-06  Martin Baulig  <martin@ximian.com>
1279
1280         * mini.c (mono_method_to_ir): When initializing locals, handle a
1281         generic instances like a valuetype if it's a valuetype and like a
1282         class if it's a class.
1283
1284 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
1285
1286         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
1287         stack. Fixes #64674.
1288
1289         * exceptions.cs: Add test for unwinding of call arguments.
1290
1291 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
1292
1293         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
1294         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
1295         set the carry/borrow flag). The sparc and s390 implementations
1296         can now use optimized versions (and simplify the code). ppc bugfixes.
1297
1298 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
1299
1300         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
1301
1302 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
1303
1304         * inssel-amd64.brg: Remove leftover 32 bit rule.
1305
1306         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
1307
1308 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
1309
1310         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
1311         mono_arch_find_jit_info functions into a new function. Fix a memory
1312         leak.
1313
1314         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
1315         refactored code.
1316         
1317 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
1318
1319         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
1320         as well.
1321         
1322         * exceptions.cs: Add array size tests.
1323
1324         * mini.c: Allocate a separate icall wrapper for each arity of 
1325         mono_array_new_va. Fixes #59509.
1326
1327         * exceptions.cs: Add testcase for 64578.
1328
1329         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
1330
1331         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
1332         
1333 2004-09-02  Martin Baulig  <martin@ximian.com>
1334
1335         * mini.c (mono_method_to_ir): When initializing the locals, call
1336         handle_initobj() on the generic instance itself, not its
1337         underlying type.
1338
1339 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
1340
1341         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
1342         MonoJitInfo for dynamic methods.
1343
1344         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
1345
1346         * mini.c: Add support for freeing JIT data for dynamic methods.
1347         
1348 2004-09-01  Martin Baulig  <martin@ximian.com>
1349
1350         * mini-x86.c (is_regsize_var): Added support for generic
1351         instances.
1352         (mono_arch_emit_prolog): Make this compile again, use
1353         `x86_push_imm_template (code)'.
1354
1355 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
1356
1357         * mini-x86.c: make all push_imm instructions that get
1358         patched always emit the long form
1359
1360 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
1361
1362         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
1363         in a per-domain hash.
1364
1365         * mini-amd64.c (merge_argument_class_from_type): Handle generic
1366         types.
1367
1368 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
1369
1370         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
1371         work.
1372         
1373         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
1374         work.
1375
1376         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
1377         Beginnings of SSE2 support.
1378
1379         * exceptions.cs: Add more tests for checked int<->uint casts.
1380
1381 2004-08-28  Martin Baulig  <martin@ximian.com>
1382
1383         * mini-x86.c (mono_arch_instrument_epilog): Added support for
1384         generic instances.
1385
1386         * mini.c
1387         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
1388         Handle generic instances recursively.
1389
1390 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
1391
1392         * iltests.il: test for conv.u8 on a constant
1393
1394 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
1395
1396         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
1397         LCONV_x4 (shrun_32 (membase)).
1398
1399 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
1400
1401         * inssel-x86.brg: c&p rules for push/setret of long
1402
1403 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
1404
1405         * inssel-x86.brg: c&p rules for compare (base, regvar) and
1406         compare (regvar, base)
1407
1408         * inssel-x86.brg: more burg love
1409
1410         * inssel.brg: more cleanup
1411
1412         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
1413
1414 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
1415
1416         * basic-long.cs, basic-calls.cs: new tests for optimization.
1417
1418 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
1419
1420         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
1421         patch.
1422
1423 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
1424
1425         * mini-amd64.c (read_tls_offset_from_method): Add another case.
1426         
1427 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
1428
1429         * inssel.brg (mini_emit_memcpy): use 
1430         NO_UNALIGNED_ACCESS to disable memcpy optimization
1431
1432 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
1433
1434         * mini-amd64.c: Handle generic types in various places.
1435
1436         * mini.c (mono_method_to_ir): Handle generic types in init locals.
1437
1438 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
1439
1440         * mini.c (handle_box): Fix warning.
1441
1442         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
1443
1444         * mini-amd64.h: Enable the emit_state optimization.
1445
1446         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
1447
1448         * mini-amd64.c: Add some new 64 bit peephole opts.
1449
1450         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
1451
1452         * cpu-amd64.md: sreg1 of div instructions must be %rax.
1453
1454         * mini-amd64.c: Register allocator fixes.
1455
1456         * mini.c: Add an optimization to emit_state to avoid allocation of new
1457         registers on some platforms.
1458
1459 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
1460
1461         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
1462
1463         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
1464         allocation. Fixes #63085.
1465
1466         * basic-long.cs: Add new regression test.
1467
1468         * mini-amd64.c: Register allocator improvements.
1469
1470 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
1471
1472         * mini-amd64.c (read_tls_offset_from_method): Add another code
1473         sequence.
1474
1475         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
1476         instruction sequence for nullifying class init trampolines.
1477
1478         * objects.cs: Add new regalloc test.
1479
1480         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
1481
1482 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
1483
1484         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
1485         
1486         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
1487         arguments.
1488
1489         * driver.c: Fix profiling after TLS changes.
1490         
1491         * driver.c (mono_main): Set mono_stats.enabled if needed.
1492
1493         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
1494         CEE_BOX.
1495
1496 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
1497
1498         * mini-x86.c: use a 1 op rather than a 2 op tls access
1499         instruction -> faster.
1500
1501 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
1502
1503         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
1504         x86 backend.
1505
1506 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
1507
1508         * exceptions-sparc.c (throw_exception): fix typo
1509
1510 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
1511
1512         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
1513         set tree->dreg correctly with tls. Allow any
1514         register to be used.
1515
1516         * mini-x86.c (read_tls_offset_from_method): add new code
1517         generation pattern seen with GCC.
1518
1519
1520 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
1521
1522         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
1523         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
1524         exceptions-sparc.c: fix some performance issues in exception
1525         handling and setting of the stack trace for exceptions that were
1526         already thrown.
1527
1528 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
1529
1530         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
1531         x86 backend.
1532         
1533         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
1534         registers.
1535
1536 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
1537
1538         This patch inlines tls access, when possible.
1539         
1540         * mini.h: new arch functions for TLS intrinsics.
1541         All platforms updated with a stub.
1542
1543         * mini.c: use the new intrinsics
1544
1545         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
1546         arch specific intrinsic for tls variables
1547
1548 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
1549
1550         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
1551         under windows.
1552
1553 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
1554
1555         * mini.c: thread local allocation
1556
1557 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
1558
1559         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
1560
1561         * Makefile.am: Link against the static version of libmonogc.
1562         
1563         * Makefile.am: Link the static versions of the convenience libraries
1564         into the mono executable.
1565
1566         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
1567
1568 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
1569
1570         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
1571         on integer overflow.
1572
1573         * mini-amd64.c: Reorganize function call code.
1574
1575         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
1576
1577 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
1578
1579         * inssel-x86.brg: use xor eax,eax.
1580         
1581         * basic.cs: new tests
1582
1583 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
1584
1585         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
1586         in exception throwing code.
1587         
1588 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
1589
1590         * inssel-x86.brg: use xor esi,esi.
1591
1592 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
1593
1594         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
1595         can trace methods compiled during mini_init () too.
1596
1597         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
1598         CEE_CONV_U4.
1599
1600 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
1601
1602         * Makefile.am: static link on x86 (r=zoltan)
1603
1604 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
1605
1606         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
1607         code since it causes some programs to fail.
1608
1609 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
1610
1611         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
1612
1613 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
1614
1615         * mini.c: ovfops_op_map - add STACK_OBJ case for
1616         CONV_I 
1617         * basic.cs: add test_0_pin_string as test
1618         case for above.
1619
1620 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
1621
1622         * Makefile.am: build C# if srcdir != builddir
1623
1624 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
1625
1626         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
1627         fall-through blocks.
1628
1629 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
1630
1631         * driver.c: enable loop by default again and include abcrem in -O=all.
1632
1633 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
1634
1635         * iltests.il: Add some localloc tests.
1636
1637         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
1638
1639         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
1640         Fixes #62574.
1641
1642         * inssel-amd64.brg: Add some optimizations.
1643
1644         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
1645         for gcc-3.4.
1646
1647         * Makefile.am: Statically link mono against libmono on AMD64.
1648         
1649         * mini-amd64.c inssel-amd64.brg: Optimizations.
1650
1651 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
1652
1653         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
1654
1655         * tramp-amd64.c: Patch calling code in trampolines.
1656
1657 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
1658
1659         * mini-amd64.c: pinvoke struct passing fixes.
1660
1661 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
1662
1663         * mini-sparc.c: redo change, make mono_arch_cpu_init call
1664         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
1665
1666 2004-08-05  Duncan Mak  <duncan@ximian.com>
1667
1668         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
1669         CEE_LDELEM_ANY.
1670
1671 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
1672
1673         * mini-amd64.c (emit_move_return_value): Move return value for normal
1674         calls too.
1675
1676 2004-08-05  Martin Baulig  <martin@ximian.com>
1677
1678         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
1679         `type->type'; just modify `type' itself when dealing with enums
1680         and generic instances.
1681         (check_call_signature): Make `simple_type' a `MonoType *'.
1682
1683 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
1684
1685         * mini.c: Use OP_PADD to add offsets to addresses.
1686
1687         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
1688
1689 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
1690
1691         * mini-sparc.c (mono_arch_emit_epilog): fix check
1692         for folding last op into restore instruction
1693
1694 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
1695
1696         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
1697         helper methods using the code manager.
1698         
1699         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
1700
1701         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
1702
1703 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1704         
1705         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
1706           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
1707
1708         * mini-s390.c: fix tail processing
1709
1710 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
1711
1712         * mini-ppc.c: mul.ovf.un exception name fix.
1713
1714 2004-08-03  Martin Baulig  <martin@ximian.com>
1715
1716         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
1717         instances; before jumping to `handle_enum', also modify `ptype'.
1718
1719 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
1720
1721         * cpu-sparc.md: fcall maximal length too small.
1722
1723 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
1724
1725         * mini-amd64.c mini.h: Add initial support for passing/returning 
1726         structures to/from pinvoked methods.
1727
1728 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
1729
1730         * mini-ppc.c: reg allocator fix.
1731
1732 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
1733
1734         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
1735
1736         * inssel.brg: Optimize memset on 64 bit machines.
1737
1738         * mini-amd64.c: Fix some vararg cases.
1739
1740 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
1741
1742         * mini-s390.c: Corrected macro in emit_float_to_int
1743
1744         * s390-abi.cs: Tests to exercise the s390 ABI
1745
1746 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
1747
1748         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
1749         caller saved regs.
1750
1751         * basic.cs: Add a test for add.ovf.un.
1752
1753 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
1754
1755         * mini-sparc.c: add case for OP_IDIV_UN
1756
1757 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
1758
1759         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
1760         
1761         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
1762
1763 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
1764
1765         * basic.cs: regression tests.
1766
1767         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
1768         regressions.
1769
1770 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
1771
1772         * basic.cs: Add a new test.
1773
1774         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
1775         and AOT. Various fixes and optimizations.
1776
1777         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
1778
1779 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
1780
1781         * mini-ppc.c: make sure temp regs are not used for global reg
1782         allocation.
1783
1784 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
1785
1786         * cpu-sparc.md: conv_i8 fix for 64bits
1787
1788         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
1789
1790 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
1791         
1792         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
1793         add opcode for cmp BYTE PTR [eax], imm.
1794
1795         * inssel.brg: Make memcpy and memset takes bases.
1796
1797 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
1798
1799         * *-amd64.*: More AMD64 work.
1800         
1801 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
1802
1803         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
1804         add a compare-not-equal opcode.
1805         
1806 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
1807
1808         * mini.c: Use mono_init_from_assembly instead of mono_init.
1809         
1810 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
1811
1812         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
1813
1814         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
1815
1816         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
1817
1818         * inssel.brg: 64 bit fixes.
1819
1820         * mini.h (MonoCallInst): Add some AMD64 specific data.
1821
1822         * mini.h: Add some OP_P opcodes.
1823
1824 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
1825
1826         * basic.cs: tests for 61797 and 61740
1827
1828 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
1829
1830         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
1831         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
1832
1833 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
1834
1835         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
1836
1837         * *-amd64*.*: Ongoing AMD64 work.
1838
1839 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
1840
1841         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
1842
1843         * *-amd64*: Ongoing AMD64 work.
1844
1845         * mini-arch.h: Add AMD64 support.
1846
1847         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
1848
1849         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
1850
1851         * mini-ops.h: Add new opcodes.
1852
1853         * Makefile.am: Add AMD64 support.
1854
1855         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
1856         rules into the inssel-long*.brg files.
1857
1858         * *-amd64.*: Add beginnings of AMD64 backend.
1859
1860 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
1861
1862         * mini.c (print_dfn): commenting out the code that prints
1863         the cil. With -O=deadce, this makes -v -v crash.
1864         
1865         * cpu-pentium.md: make checkthis have a length of 2
1866
1867 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
1868
1869         * mini-sparc.h: fix implementations of __builtin
1870         functions for Sun compiler for V9.
1871
1872 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
1873
1874         * mini.c: use the new stelem.ref wrapper
1875         * exceptions.cs, arrays.cs: new stelem.ref tests
1876
1877 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
1878
1879         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
1880         new XSP should work with these changes).
1881
1882 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
1883         
1884         * inssel-{long32,x86,}.brg: trivial optimizations.
1885         
1886 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
1887
1888         * mini.c: load value when emitting box operation in
1889         constrained calls.
1890
1891 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
1892
1893         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
1894         is one byte shorter than cmp DWORD PTR [eax], 0.
1895
1896 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
1897
1898         * inssel-ppc.brg: arguments on the stack are always
1899         relative to the stack pointer (spotted by Neale Ferguson).
1900
1901 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1902
1903         * exceptions-x86.c: delay appending the method name to the trace until
1904         after mono_jit_info_table_find is called, as this gets the real
1905         MonoMethod.
1906
1907 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
1908
1909         * aot.c: register roots
1910
1911 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
1912
1913         * aot.c : I could just use PLATFORM_WIN32 flag.
1914
1915 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
1916
1917         * aot.c : Reverting the previous fix. This time it broke linux build.
1918
1919 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
1920
1921         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
1922
1923 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
1924
1925         * mini.c (handle_stack_args): Remove some more debugging code.
1926         
1927         * mini.c (handle_stack_args): Remove debug output left in by mistake.
1928
1929         * driver.c mini.h aot.c: Allow additional options to be specified with
1930         --aot and pass them to mono_compile_assembly.
1931
1932         * aot.c: Add experimental code to AOT compile all loaded assemblies
1933         on demand and save the code into a cache in the filesystem.
1934
1935         * aot.c: Add support for more wrapper methods.
1936         
1937         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
1938         58863.
1939
1940         * cpu-*.md: Remove removed opcodes.
1941
1942         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
1943         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
1944         related icalls to marshal.c.
1945
1946 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
1947
1948         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
1949
1950         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
1951
1952         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
1953
1954 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
1955         * liveness.c: If liveness is recomputated we need to reset the information
1956         for each variable. This way, if the liveness range has been narrowed
1957         by optimizations that happened after the last computation, we can return
1958         a smaller range.
1959         
1960         For example, if you have
1961         
1962         {
1963                 int i = 0;
1964                 
1965                 // Tons of code that does not affect i
1966                 
1967                 i = foo ();
1968                 ...
1969         }
1970         
1971         i = 0 is dead code and will be removed by SSA. However, when
1972         linear scan gets to the code, i will still appear to be live
1973         throughout the entire block. This prevents good register allocation.
1974
1975 2004-07-06  Martin Baulig  <martin@ximian.com>
1976
1977         * debug-mini.c (mono_debug_init_method): Allow
1978         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
1979         (mono_debug_add_icall_wrapper): New method.
1980
1981         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
1982
1983 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
1984
1985         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
1986         optimization.
1987
1988 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
1989
1990         * aot.c (mono_aot_load_method): Fix loading of debug info.
1991
1992 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
1993
1994         * aot.c: Add logging support.
1995
1996 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
1997
1998         * mini.h: Add prototype for mono_print_method_from_ip.
1999
2000         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
2001
2002         * inssel.brg: 64 bit fixes.
2003
2004         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
2005         inssel-long32.brg.
2006
2007         * Makefile.am: Add SPARC64 support.
2008
2009 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
2010
2011         * aot.c: Fix alignment problems on 32 bit platforms.
2012
2013 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
2014
2015         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
2016         SPARC64.
2017
2018         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
2019         problems.
2020
2021         * mini.h: Bump AOT file version. Some 64 bit fixes.
2022
2023 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
2024
2025         * inssel-sparc.brg: Add new rule to avoid register moves.
2026
2027         * inssel.brg: Add ldind_to_load_membase helper function.
2028
2029 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
2030
2031         * mini.c: OffsetToStringData intrinsic.
2032         
2033 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
2034
2035         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
2036
2037         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
2038         regression tests.
2039
2040         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
2041 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
2042
2043         * mini.c: reinstated mono_compile_get_interface_var()
2044         on x86, too, since the change breaks the Gtk# build there as well.
2045
2046 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2047
2048         * driver.c: remove loop from the default optimizations: it seems to
2049         interact badly with some of the other options (see bug #60613).
2050
2051 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
2052
2053         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
2054         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
2055
2056 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
2057
2058         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
2059         vararg-using methods.
2060
2061 2004-06-21  Martin Baulig  <martin@ximian.com>
2062
2063         * mini/mini-exceptions.c
2064         (mono_handle_exception): Added `gpointer original_ip' argument.
2065         After calling mono_unhandled_exception(), call
2066         mono_debugger_unhandled_exception() and if that returns true,
2067         restore the context and return.
2068
2069 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
2070
2071         * mini-ppc.c: prefer the use of relative branches so
2072         they won't need to be patched in aot code (patch from Patrick Beard).
2073
2074 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
2075
2076         * aot.c: patch from Patrick Beard to make the output assembly
2077         more correct for the MacOSX assembler. Small tweak to
2078         generate sane images on Linux/PPC, too.
2079
2080 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2081
2082         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
2083         case until bug #59509 is fixed (shows up in #60332).
2084
2085 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
2086
2087         * mini.c: make sure the needed wrappers are compiled, too, with
2088         precomp.
2089
2090 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
2091
2092         * driver.c: remove NPTL reference in --version output.
2093
2094 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2095
2096         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
2097         generate valid assembly for the Mach-O assembler.
2098
2099 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
2100
2101         * driver.c: don't include abcrem in the all optimization specifier
2102         since it slows down jit compilation too much for now.
2103
2104 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
2105
2106         * mini.c: use BIGMUL only if both operands have the same signage.
2107         * iltests.il: Test for bug 60056. (errors related to signage in
2108         BIGMUL).
2109
2110         r=lupus.
2111
2112 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
2113
2114         * mini.c, aot.c: memory leak fixes.
2115
2116 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
2117
2118         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
2119
2120 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
2121
2122         * Makefile.am: remove the -static hack completely, it links in
2123         statically glib as well.
2124
2125 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
2126
2127         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
2128         * exceptions.cs: make it compile with new mcs/csc.
2129
2130 2004-06-03 Massimiliano Mantione <massi@ximian.com>
2131         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
2132         and added relevant test case.
2133
2134 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
2135
2136         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
2137         regressions in gtk-sharp.
2138
2139 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
2140
2141         * exceptions.cs: New regression tests.
2142
2143         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
2144
2145 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
2146
2147         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
2148
2149 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
2150
2151         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
2152
2153         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
2154
2155 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
2156
2157         * mini.c (mono_jit_runtime_invoke): Init class in this
2158         method instead of trusting mono_jit_compile_method to
2159         do the work (because wrappers can be in object class)
2160
2161 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
2162
2163         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
2164
2165         * basic-long.cs: New regression test.
2166
2167 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
2168
2169         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
2170         and div/rem checks.
2171
2172 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
2173
2174         * Makefile.am: fix miguel's change to build mono statically against
2175         libmono (track build dependencies).
2176
2177 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
2178
2179         * cfold.c: Some glib versions do not have G_MININT32.
2180
2181 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
2182
2183         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
2184         with precision of tan, atan, sin and cos, and implemented related
2185         regressions tests (fixes bug 54467, but one new problem appeared and
2186         is not fixed yet).
2187
2188 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
2189
2190         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
2191
2192         * exceptions.cs: Add test for constant folding && division by zero.
2193
2194         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
2195         since driver.c is in libmono too, so the optimization was useless.
2196
2197         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
2198         variable to driver.c so the compiler can emit more efficient code to
2199         access them.
2200
2201 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2202
2203         * Makefile.am: don't distribute generated inssel.[ch] files.
2204
2205 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
2206
2207         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
2208         into the default appdomain. Fixes #58707.
2209
2210         * jit-icalls.c: Remove the broken approximation for truncl, doing
2211         no conversion is better.
2212
2213         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
2214         Fixes #58863.
2215
2216 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
2217
2218         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
2219         of the mcrxr instruction which is not available on some processors
2220         even if it's documented to be. Implement add and sub overflow correctly
2221         (still not complete for long unsigned). Speed up icalls a bit.
2222
2223 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
2224
2225         * mini.c (mono_jit_compile_method_with_opt): Make sure that
2226         we run .cctor in the current domain instead of target_domain.
2227         
2228         Fixes bug #58558, .cctor not being called in -O=shared.
2229
2230 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
2231
2232         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
2233
2234 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
2235
2236         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
2237         which can be done with an imm8, do it that way.
2238         (mono_arch_output_basic_block): ditto for a jmp
2239         (mono_arch_emit_prolog): Computate maximum offset of a label.
2240
2241 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
2242
2243         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
2244         now tries to allocate prefered physical reg's for virtual
2245         regs. This reduces the number of emited spills/loads with
2246         20-30% on our core assemblies.
2247
2248 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
2249
2250         * jit-icalls.c: truncl() is not needed and trunc() is
2251         the correct thing to do anyway (bug #58287).
2252
2253 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
2254
2255         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
2256         if available.
2257
2258 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
2259
2260         * driver.c: enable loop optimizations by default.
2261
2262 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
2263
2264         * mini-x86.c: fix calc of max loop size when aligning loops start.
2265
2266 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
2267
2268         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
2269         the stack.
2270
2271 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
2272
2273         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
2274         should set carry.
2275
2276         * basic-long.cs: Add tests for add/subtract of immediates with carry.
2277
2278         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
2279         
2280         * mini.c (inline_method): Allways inline some wrappers even if the cost
2281         is too large. Fixes #58785.
2282
2283         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
2284         
2285 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
2286
2287         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
2288         (crichton@gimp.org). Beginning of support for sparc/linux.
2289
2290         * mini-sparc.c: Optimize retrieval of LMF address.
2291
2292 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
2293
2294         * exceptions-ppc.c:  handle alloca in methods with clauses.
2295
2296 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
2297
2298         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
2299
2300 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
2301
2302         * mini.c: Delegate most of the abort signal work to 
2303           mono_thread_request_interruption, which also handles Stop and Suspend
2304           states.
2305
2306 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
2307
2308         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
2309         supports the save/restore lmf opcodes.
2310
2311 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
2312
2313         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
2314         by gcc-3.4 as well.
2315
2316         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
2317
2318 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
2319
2320         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
2321         methods which contain array accesses.
2322
2323         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
2324         boundaries. Fixes #58537.
2325
2326         * iltests.il: Add regression test for #58537.
2327
2328 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
2329
2330         * mini-x86.c (mono_arch_local_regalloc): Last part of
2331         fix for bug #58633 (releasing register to early).
2332
2333 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
2334
2335         * basic-long.cs: Add new regression test.
2336
2337 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
2338
2339         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
2340         register too early on the chain.
2341
2342 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
2343
2344         * mini.c (create_helper_signature): Use a helper function to reduce
2345         the code which needs to be written. Also set the calling convention of
2346         icalls on windows. Fixes #57840.
2347
2348 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
2349
2350         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
2351         exceptions-ppc.c: added helper function to get the instruction address
2352         from a signal handler context.
2353
2354 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
2355
2356         * helpers.c: use g_get_tmp_dir. Invokes happyness 
2357         from gonzalo.
2358
2359 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
2360
2361         * helpers.c: Add new env variable to pass args to objdump.
2362         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
2363
2364 2004-05-17  Radek Doulik  <rodo@ximian.com>
2365
2366         * Makefile.am (common_sources): added abcremoval.h so it get
2367         disted and daily mono packages on go-mono.com will build again
2368
2369 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
2370
2371         * abcremoval.c: Fixed coding style, added copyright header.
2372
2373         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
2374
2375         * mini.h: Added prototype for abc removal main function.
2376
2377         * build_relations_propagation_table.pl: Added copyright header.
2378
2379 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
2380
2381         * basic-long.cs: reg test for complex ceq_long bug.
2382
2383 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
2384
2385         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
2386         reg in long and clob case (bug #58343). Fixed/added comments.
2387
2388 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
2389
2390         * mini.c (mono_jit_runtime_invoke): Follow new convention
2391         of calling the invoke method with an function pointer.
2392
2393 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
2394
2395         * ChangeLog: Fix author of memory leak patch.
2396
2397 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
2398
2399         * Makefile.am: fix make dist as well...
2400
2401
2402 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
2403
2404         * cfold.c: Made so that conversions from pointer to int4 are no-ops
2405         on archs where pointers are 4 bytes long.
2406
2407         * Makefile.am: Added abcremoval.c source file.
2408
2409         * abcremoval.c: Added abcremoval.c.
2410
2411         * abcremoval.h: Added abcremoval.h.
2412
2413         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
2414
2415         * inssel.brg: Enabled bounds check removal.
2416
2417         * mini.c: Added support for abcrem optimization.
2418
2419         * mini.h: Added abcrem optimization label.
2420
2421         * driver.c: Added support for abcrem optimization.
2422
2423         * propagated_relations_table.def: Added propagated_relations_table.def.
2424
2425 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
2426
2427         * mini.c, cfold.c: fix style.
2428
2429 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
2430
2431         * mini.c: handle issue with the low-level implementation of
2432         some long opcodes (bug #54209).
2433
2434 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
2435
2436         * basic.cs: test for my new cmov stuff.
2437
2438 2004-05-13      Patrik Torstensson
2439
2440         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
2441         opt and added peephole documentation.
2442
2443 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
2444
2445         * tramp-ppc.c: rewrote the generic trampoline code.
2446
2447 2004-05-11      Patrik Torstensson
2448
2449         * mini-x86.c: optimize long shl/shr asm code (one less branch)
2450
2451 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
2452
2453         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
2454
2455         * mini.h mini.c dominators.c: Applied patch from Derek Woo
2456         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
2457
2458         * mini.c: Add new icalls for AsAny marshalling.
2459
2460 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
2461
2462         * tramp-ppc.c, mini-ppc.c: more cleanups.
2463
2464 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2465
2466         * mini.c: no warnings.
2467
2468 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2469
2470         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
2471
2472 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
2473
2474         * mini.c: In the thread abort signal handler, if the thread is in the
2475         process of being stoped, don't throw the Abort exception, just stop the
2476         thread.
2477
2478 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
2479
2480         * tramp-ppc.c: removed old code.
2481
2482 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2483
2484         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
2485         do some simple speed optimizations on ppc.
2486
2487 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
2488
2489         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
2490         and large offsets in load/store.
2491
2492 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
2493
2494         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
2495         it causes regressions.
2496
2497 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
2498
2499         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
2500         support.
2501
2502 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
2503
2504         * jit-icalls.c: remove warnings.
2505         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
2506         speedups for unsafe code.
2507
2508 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
2509
2510         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
2511
2512 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
2513
2514         * basic-calls.cs: Add new regression test.
2515
2516         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
2517         more portable.
2518
2519         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
2520
2521         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
2522         is no longer used.
2523
2524 2004-05-06      Patrik Torstensson
2525
2526         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
2527         long reg allocation in any reg (not only eax:edx) and implemented 
2528         long shl/shr ops in asm instead of helpers.
2529
2530 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
2531
2532         * mini-sparc.h: Fix warnings.
2533
2534         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
2535         stack.
2536
2537         * mini-exceptions.c (mono_handle_exception): Call the filter in a
2538         separate statement for clarity.
2539
2540         * mini-sparc.c: Update status.
2541
2542 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
2543
2544         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
2545         here.
2546
2547 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
2548
2549         * inssel-ppc.brg: another small pre-release workaround:
2550         we don't do overflow detection for long_sub_un.
2551
2552 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
2553
2554         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
2555         (also works around a weird ppc bug: 57957).
2556
2557 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
2558
2559         * tramp-ppc.c: trampoline fixes.
2560
2561 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
2562
2563         * mini-ppc.c: fixed typos.
2564
2565 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
2566
2567         * mini-ppc.c, exceptions-ppc.c: more code saves registers
2568         at the top of the stack. Fixed typos. Use a frame registers
2569         for all the methods with exception clauses.
2570
2571 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
2572
2573         * exceptions-ppc.c: restore fp registers.
2574
2575 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
2576
2577         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
2578         order from the stack top (moved the stack room to save the
2579         return value for trace after the param area). Fixed corruption
2580         in restoring registers on unwind.
2581
2582 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
2583
2584         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
2585
2586 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
2587
2588         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
2589         and prolog/epilog for methods that use it. Allow
2590         enough param area room for varargs methods. Fix miguel's
2591         breakage in exception handling.
2592
2593 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
2594
2595         * Makefile.am: run genmdesc only on current arch.
2596
2597 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2598
2599         * exceptions-x86.c:
2600         * mini-x86.h: fix the build on windows.
2601
2602 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
2603
2604         * 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.
2605
2606         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
2607
2608         * mini-exceptions.c: New file.
2609         
2610         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
2611         Move some parts of the x86 exception handling code to an 
2612         arch-independent file so it can be shared with other ports.
2613
2614 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
2615
2616         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
2617
2618 2004-04-26  David Waite  <mass@akuma.org>
2619
2620         * driver.c: remove comma from end of enumeration declaration
2621
2622 2004-04-26  Jackson Harper  <jackson@ximian.com>
2623
2624         * driver.c: parse config file before loading first assembly. This
2625         allows the user gac to be enabled/disabled. 
2626         
2627 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
2628
2629         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
2630         simpler mechanism: we do not care what is encoded initially
2631         (branch absolute or relative), we care about the code and its
2632         target.  I kept the old code for reference for now.
2633
2634         The new code tries first to determine if the jump is anywhere in
2635         the -/+32 absolute meg range, if it succeeds, it encodes using the
2636         absolute branch;  If not, it tried to find something in the
2637         relative range, if not, it uses the handle_thunk code. 
2638
2639 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
2640
2641         * exceptions-ppc.c: use the correct ip register on macosx.
2642
2643 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
2644
2645         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
2646
2647 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
2648
2649         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
2650         Raise exception on integer divide by zero by hand since the hw
2651         doesn't support it. Handle NaNs in FP compares.
2652
2653 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
2654
2655         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
2656         code reducing duplication between the platforms and enabled
2657         signal exception handling (on linux for now).
2658
2659 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
2660
2661         * exceptions-ppc.c: more macosx support.
2662
2663 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
2664
2665         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
2666
2667 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
2668
2669         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
2670
2671 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
2672
2673         * iltests.il: more tests.
2674
2675 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
2676
2677         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
2678         vars as well.
2679
2680 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
2681
2682         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
2683
2684 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
2685
2686         * liveness.c: Mark variables as volatile in all basic blocks reachable
2687         from exception clauses.
2688
2689 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
2690
2691         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
2692         inlining.
2693
2694 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
2695
2696         * iltests.il, basic.cs: more tests for regalloc.
2697
2698 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
2699
2700         * iltests.il: Some tests for register allocation modifications
2701         I have locally.
2702
2703 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
2704
2705         * exceptions.cs: Add regression test for bug #56782.
2706
2707         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
2708         original stack trace if an exception is rethrown. Fixes #56782. Oh,
2709         the beauty of fixing the same thing in 5 different files...
2710
2711 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
2712
2713         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
2714         methods.
2715
2716 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
2717
2718         * mini.c: Add support for STRWLPARRAY marshalling convention.
2719
2720 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
2721
2722         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
2723         to init the context to setup the regs pointer).
2724
2725 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
2726
2727         * exceptions-ppc.c: more exceptions work.
2728
2729 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
2730
2731         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
2732         not allowed.
2733
2734 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
2735
2736         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
2737         can use the memory directly.
2738
2739         * cpu-pentium.md: Update documentation from a post from Zoltan. 
2740
2741         add x86_add_membase, x86_sub_membase, x86_mul_membase
2742
2743 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
2744
2745         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
2746         GENERAL_REGS they were also hardcoded for all PPC ports.
2747
2748         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
2749
2750         Remove hard-coded limit for floating point registers, use
2751         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
2752
2753         Notice that in MacOS X calling conventions you can fit a lot more
2754         floating point values in registers, so I should update the PInvoke
2755         test to excercise the passing of floating point values on the
2756         stack (currently broken).
2757         
2758 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
2759
2760         * tramp-ppc.c (create_trampoline_code): Added
2761         JUMP_TRAMPOLINE_SIZE. 
2762         (ppc_magic_trampoline): Follow the pattern from
2763         x86_magic_trampoline: if code is set to zero, return. 
2764         (create_trampoline_code): Always pass MonoMethod to the jump
2765         trampoline, before it was passing a null.
2766         (mono_arch_create_jump_trampoline): Implement the jump stub, could
2767         share the code with mono_arch_create_jit_trampoline. 
2768
2769         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
2770         implemented.
2771         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
2772         implemented.  
2773
2774         * cpu-g4.md: Added length for jmp instruction, the worst case
2775         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
2776         for save_lmf).
2777
2778 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
2779
2780         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
2781
2782 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
2783
2784         * mini.c: Only set bblock->real_offset when adding a new bblock, and
2785         before each IL instruction.
2786
2787         * mini.c (CEE_BOX): Fix warnings.
2788
2789 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2790
2791         * mini.c: removed a few unused vars and extra whitespace.
2792
2793 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
2794
2795         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
2796         checks.
2797         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
2798         index.
2799         (OP_GETCHR): use the above
2800         (CEE_LDELEMA): use the above.
2801
2802         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
2803         version of the generic impl.
2804         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
2805         (CEE_LDELEMA): use the above.
2806
2807 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
2808
2809         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
2810         Fixes #56317.
2811
2812         * iltests.il: Added new regression test for #56317.
2813
2814 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
2815
2816         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
2817         under NetBSD. Fixes #56450.
2818
2819         * liveness.c (update_gen_kill_set): Fix previous patch.
2820
2821 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2822
2823         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
2824
2825 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
2826
2827         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
2828         ldsfld and ldsflda.
2829
2830         * inssel-sparc.brg: Add more optimizations.
2831
2832         * mini-sparc.c: Replace multiply/divide with shifts if possible.
2833
2834 2004-04-01  Martin Baulig  <martin@ximian.com>
2835
2836         * mini.c (handle_box): New static function; moved the
2837         implementation of CEE_BOX here.
2838         (mono_method_to_ir): Added `constrained_call' variable.
2839         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
2840         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
2841         mono_method_get_constrained() to get the method.
2842
2843 2004-04-01  Martin Baulig  <martin@ximian.com>
2844
2845         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
2846         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
2847         (mono_method_to_ir): We don't need these macros anymore since
2848         mono_class_get_full() already takes care of it. 
2849
2850 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2851
2852         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
2853         use @function (as doesn't accept #function here) and check the return
2854         value of system and stop if fails.
2855
2856 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
2857
2858         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
2859
2860 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
2861
2862         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
2863
2864         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
2865
2866         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
2867         #56223.
2868
2869         * basic-long.cs: Add test for negation of Int64.MinValue.
2870
2871 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
2872
2873         * mini-sparc.c: Update status.
2874
2875         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
2876
2877         * exceptions-sparc.c: Fix return value in filters.
2878
2879         * inssel-sparc.brg: Fix register allocation in some rules.
2880
2881 2004-03-28  Martin Baulig  <martin@ximian.com>
2882
2883         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
2884         if neccessary.  
2885
2886 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
2887
2888         * mini-x86.c (mono_arch_patch_code): Fix warnings.
2889         
2890         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
2891         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
2892         remove unused conv_u4 opcode.
2893
2894         * mini-x86.c: Remove valgrind workaround since it slows down things
2895         even when mono is not run under valgrind.
2896
2897 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
2898
2899         * mini-sparc.c: Update status.
2900
2901         * inssel-sparc.brg: Add some optimizations.
2902
2903         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
2904         future delay slot filling. Add support for varargs, tail calls and JMP.
2905
2906         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
2907         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
2908
2909         * inssel.brg: Fix register allocation in OP_ARGLIST.
2910
2911         * inssel.brg: Fix warnings.
2912
2913 2004-03-25  Martin Baulig  <martin@ximian.com>
2914
2915         * mini.c (inflate_generic_field): Removed.
2916         (mini_get_method): Removed, use mono_get_method_full(),
2917         (mini_get_class): Removed, use mono_class_get_full().
2918         (mono_method_to_ir): Pass our generic context to
2919         mono_field_from_token().        
2920
2921 2004-03-25  Martin Baulig  <martin@ximian.com>
2922
2923         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
2924         of a `MonoMethod *'.
2925         (mini_get_method): Take a `MonoGenericContext *' instead
2926         of a `MonoMethod *'.
2927         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
2928         a new local variable called `generic_context' which holds the
2929         current `MonoGenericContext *'; use it to lookup things.
2930
2931 2004-03-24  Martin Baulig  <martin@ximian.com>
2932
2933         * mini.c (mini_get_class): New static method; if we're inside a
2934         generic instance, inflate the class if neccessary.
2935         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
2936
2937 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
2938
2939         * iltests.il: New regression test for #55976.
2940
2941         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
2942         #55976.
2943
2944 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
2945
2946         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
2947         output.
2948
2949 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
2950
2951         * liveness.c: Consider SSA stores as well as loads when making vars
2952         volatile.
2953
2954         * exceptions.cs: New regression tests for register allocation.
2955         
2956 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
2957
2958         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
2959         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
2960           domain lock only to protect puntual access to data structures.
2961           Added access lock for sighash, jit_icall_hash_name, 
2962           jit_icall_hash_addr and domain->code_mp.
2963
2964 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
2965
2966         * driver.c: Print SIGSEGV handling method.
2967
2968         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
2969
2970         * mini.c (setup_jit_tls_data): Handle case when this is called
2971         multiple times for a thread.
2972
2973         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
2974         is different from fbxx_un. Fixes #54303. Also use constants instead of
2975         magic numbers in a lot of places.
2976
2977 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
2978
2979         * exceptions.cs: Fix cctor test when --regression is used.
2980
2981 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
2982
2983         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
2984         for Linux/ppc.
2985
2986 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
2987
2988         * inssel-ppc.brg: fixed register assignments for some rules.
2989
2990 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
2991
2992         * exceptions.cs: Add test for exceptions in static constructors.
2993
2994         * mini.c (mono_jit_compile_method_with_out): Move the calling of
2995         static constructors outside the domain lock. Fixes #55720.
2996
2997 2004-03-17  Martin Baulig  <martin@ximian.com>
2998
2999         * mini.c (get_generic_field_inst): Removed, this'll never happen.
3000         (inflate_generic_field): Take the `MonoMethod *' instead of the
3001         `MonoClass *' and added support for generic method.
3002         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
3003         have a `field->parent->gen_params', only inflate the field if it's
3004         an open constructed type.
3005
3006 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
3007
3008         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
3009         exception object instead of the preconstructed ones.
3010
3011 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3012
3013         * mini.c: reverted changed to sigsegv_signal_handler commited
3014         accidentally in the previous patch.
3015
3016 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3017
3018         * mini.c:
3019         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
3020         running --aot with an old assembly.
3021
3022 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
3023
3024         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
3025         point values.
3026
3027         * mini-sparc.c: Add support for v9 branches with prediction.
3028
3029 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
3030
3031         * mini.c (mini_init): #warning is GNUC only
3032
3033         * mini-sparc.h: implement __builtin_frame_address
3034         and __builtin_return_address for Sun C compiler
3035
3036 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
3037
3038         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
3039
3040 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
3041
3042         * basic-calls.cs: Add test for unaligned byref long argument passing.
3043
3044         * mini-ops.h: Add sparcv9 compare and branch instructions.
3045
3046         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
3047         v9 instructions if we have a v9 cpu.
3048
3049         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
3050         registers for global allocation.
3051
3052         * exceptions-sparc.c: Fixes.
3053         
3054 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
3055
3056         * liveness.c (mono_analyze_liveness): Optimized version.
3057
3058         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
3059
3060         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
3061         sparc work.
3062
3063         * basic-float.cs basic-calls.cs: New regression tests.
3064
3065 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
3066
3067         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
3068         sigaltstack implementation.
3069
3070         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
3071         
3072         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
3073         stuff if SIGSEGV_ON_ALTSTACK is not defined.
3074
3075 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
3076
3077         * mini.c: Fix warnings.
3078         
3079         * mini.c (mono_resolve_patch_target): New function which contains the
3080         arch independent part of the patching process.
3081
3082         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
3083         patching code to a separate function.
3084
3085 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
3086
3087         * mini.c (add_signal_handler): ifdef out on Windows
3088
3089 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
3090
3091         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
3092         cpu-sparc.md: Add exception handling support + other fixes.
3093
3094         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
3095         typed GC detection in --version.
3096
3097         * basic.cs exceptions.cs: New regression tests.
3098
3099         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
3100         the arch specific code can store data during a compilation.
3101
3102         * mini-ops.h: Add OP_SETFRET.
3103
3104         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
3105         function, register a separate icall for each arity, so the icalls can
3106         get a wrapper.
3107         
3108         * mini.c (mono_print_tree): Print negative offsets in a more readable
3109         form.
3110         
3111         * mini.c: Make signal handling work on sparc.
3112         
3113         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
3114
3115         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
3116
3117         * jit-icalls.c: Emulate truncl by aintl on solaris.
3118
3119         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
3120
3121 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
3122
3123         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
3124
3125 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
3126
3127         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
3128         a MarshalByRef type, inline a method that performs the check, taking into
3129         account that the object can be a proxy. Also implemented tow new opcodes:
3130         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
3131         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
3132         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
3133
3134 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
3135
3136         * mini-ppc.c: if a relative branch displacement is too big
3137         but it points to and area reachable with an absolute branch, 
3138         avoid the thunks.
3139
3140 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
3141
3142         * mini.c: optimize small copies in cpblk.
3143
3144 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
3145
3146         * basic-calls.cs basic-float.cs: New regression tests.
3147
3148         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
3149         negative offsets from %fp. Implement localloc. Fix local register 
3150         allocation. Fix the case when the this argument needs to be saved to
3151         the stack. Implement some missing opcodes.
3152
3153 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
3154
3155         * mini.c (mini_method_compile): Reenable global regalloc in methods
3156         with exception handlers.
3157
3158         * linear-scan.c (mono_varlist_sort): Fix warning.
3159
3160         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
3161
3162         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
3163         regalloc costs.
3164
3165         * liveness.c: Make all variables uses in exception clauses volatile, to
3166         prevent them from being allocated to registers. Fixes #42136.
3167
3168 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
3169
3170         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
3171         causes regressions.
3172
3173         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
3174         argument to mono_arch_regalloc_cost.
3175
3176         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
3177         precisely.
3178
3179 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
3180
3181         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
3182         Make the cost of allocating a variable to a register arch dependent.
3183
3184         * basic-calls.cs: Fix compilation of tests.
3185         
3186         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
3187         helper function to cut back on the number of #ifdefs needed.
3188
3189         * mini-ppc.c: Fix compilation.
3190
3191         * basic-calls.cs: New regression tests.
3192
3193         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
3194
3195         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
3196         of l0 since that is callee saved.
3197
3198         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
3199         to virtual calls.
3200
3201         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
3202         of delay instruction.
3203
3204         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
3205
3206         * mini.h (MonoCallInst): Add 'virtual' flag.
3207
3208         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
3209
3210 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
3211
3212         * *.cs: New regression tests.
3213
3214         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
3215         work.
3216
3217         * mini.c (mono_runtime_install_handlers): Fix build.
3218
3219         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
3220         'signal_stack_size' members.
3221
3222         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
3223         alternate signal stack.
3224
3225         * exceptions-x86.c: Add stack overflow handling.
3226
3227         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
3228         functions to arch independent code.
3229
3230         * mini.c (mono_print_tree): Print more detailed info for load_membase
3231         opcodes.
3232         
3233 2004-02-23  Martin Baulig  <martin@ximian.com>
3234
3235         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
3236
3237 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
3238
3239         * mini-x86.c: fixed reg allocation for div/rem.
3240
3241 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
3242
3243         * driver.c (mono_main): Report some configuratio options on --version.
3244
3245 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
3246
3247         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
3248         low in the address space. Correctly flush memory in thunks where we
3249         output native code.
3250
3251 2004-02-20  Martin Baulig  <martin@ximian.com>
3252
3253         * mini.c (mini_get_method): New static method; inflate all generic
3254         methods and methods in open generic instances.
3255         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
3256         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
3257
3258 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
3259
3260         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
3261
3262         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
3263
3264 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
3265
3266         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
3267
3268         * mini-sparc.c (flushi mono_arch_output_basic_block): make
3269         it compile using Sun's compiler.
3270
3271 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
3272
3273         * 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.
3274
3275         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
3276
3277 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
3278
3279         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
3280         code.
3281         * mini-ppc.c: handle calls outside of the allowed range with thunks
3282         allocated using the code manager.
3283         * tramp-ppc.c: use the code manager to hold generated native code.
3284         Fixed the magic trampoline to just patch vtable entries.
3285
3286 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
3287
3288         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
3289         independent file.
3290
3291 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
3292
3293         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
3294         PPC.
3295
3296         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
3297         if we have a working __thread implementation.
3298
3299         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
3300         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
3301
3302 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
3303
3304         * mini-x86.c: Fix compilation under gcc 2.
3305         
3306 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
3307
3308         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
3309         contains a call to the wrapped function.
3310
3311         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
3312         OP_<CALL>_IMM opcodes, and use them under X86.
3313         
3314         * mini.c (mono_jit_find_compiled_method): Fix warning.
3315
3316         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
3317
3318         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
3319
3320         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
3321         functionality to mini.c.
3322
3323         * mini.c (mono_create_jump_trampoline): New function to create a jump
3324         trampoline. Return a compiled method instead of a trampoline if it
3325         exists. Add a cache for jump trampolines.
3326
3327         * mini.c (mono_jit_find_compiled_method): New function to return a
3328         compiled method if it exists.
3329
3330         * mini-x86.c: Call mono_create_jump_trampoline instead of 
3331         mono_arch_create_jit_trampoline.
3332
3333         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
3334         a jump trampoline. Fixes #52092.
3335         
3336 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
3337
3338         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
3339         which is not up-to-date. Add check_corlib_version () instead.
3340
3341         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
3342         have to call it.
3343         
3344         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
3345         since newer valgrind versions do not need it.
3346
3347         * mini.c (mono_jit_compile_method_with_opt): New helper function to
3348         compile a method with a given set of optimizations.
3349
3350         * mini.c: Compile icall wrappers on-demand instead of at startup.
3351
3352         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
3353         wrapper for an icall.
3354
3355 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
3356
3357         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
3358         #54063.
3359
3360         * iltests.il: Add test for non-empty stack before switch instruction.
3361
3362 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
3363
3364         * mini.c: Add support for new stringbuilder marshalling conventions.
3365
3366         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
3367
3368 2004-02-01  Martin Baulig  <martin@ximian.com>
3369
3370         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
3371         in `ginst->mtype_argv'.
3372
3373 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
3374
3375         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
3376         facilitate grepping.
3377
3378 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
3379
3380         * mini.c: fixed buglet in initobj generic implementation for references.
3381
3382 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
3383
3384         * Makefile.am: make the version script conditional.
3385         * jit-icalls.c: handle missing truncl().
3386
3387 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
3388
3389         * exceptions.cs: Add more tests for double->int conversion.
3390
3391         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
3392         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
3393
3394 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
3395
3396         * driver.c: make --verbose --version emit an error
3397         if the loaded corlib doesn't match the runtime version.
3398
3399 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
3400
3401         * mini-ppc.h: export ppc_patch().
3402         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
3403         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
3404         on par or better than on MacOSX.
3405
3406 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
3407
3408         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
3409         mono_lookup_pinvoke_call.
3410
3411         * mini-x86.c: Under windows, the default pinvoke calling convention is
3412         stdcall. Fixes #52834.
3413
3414         * mini.c (optimize_branches): Add an upper bound to the number of
3415         iterations to prevent infinite loops on strange loops. Fixes #53003.
3416
3417 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
3418
3419         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
3420         and ISINST. Fixes #52093.
3421
3422         * objects.cs (test_0_vector_array_cast): New tests.
3423         
3424 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
3425
3426         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
3427         checking in Array.Set ().
3428
3429         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
3430         #52590.
3431
3432         * object.cs (test_0_multi_array_cast): New regression test.
3433
3434 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
3435
3436         * exceptions-ppc.c: fix build on Linux/PPC.
3437
3438 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
3439
3440         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
3441         running under valgrind.
3442         (x86_magic_trampoline): Fix build bustage.
3443
3444         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
3445         negative values as well. This is needed for the encoding of the line number
3446         info, since sometimes the line numbers are not in increasing order.
3447
3448 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
3449
3450         * cpu-pentium.md (localloc): Increase the size of the localloc 
3451         instruction since it is a loop under Win32.
3452
3453         * debug-mini.c (record_line_number): Get rid of unneccesary memory
3454         allocation.
3455
3456 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
3457
3458         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
3459         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
3460         Max Horn (max@quendi.de). Fix file names in comments.
3461
3462 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
3463
3464         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
3465         avoid stack overflow.
3466         (replace_usage): Avoid uninitialized variable warnings.
3467
3468         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
3469         and taking the address of valuetype variables.
3470
3471 2004-01-03  Patrik Torstensson
3472
3473         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
3474         for other purposes than FP later on.
3475
3476 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
3477
3478         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
3479         of tail calls.
3480
3481 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
3482
3483         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
3484
3485 2003-12-30  Patrik Torstensson <p@rxc.se>
3486
3487         * mini-x86.h: Decreased number of availiable fp regs.
3488         Solves corner cases with FP spilling.
3489
3490 2003-12-23  Patrik Torstensson <p@rxc.se>
3491
3492         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
3493         for floating point stack tracking / spilling on x86. 
3494         Fixes bug #49012.
3495         
3496         * basic-float.cs: added float mul overflow test.
3497
3498 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
3499
3500         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
3501
3502 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
3503
3504         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
3505         supports for cond branches that overflow the immediate
3506         overflow offset. mcs can compile simple programs.
3507
3508 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
3509
3510         * exceptions-ppc.c: exception handling support wip:
3511         finally handlers get run on exception.
3512
3513 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
3514
3515         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
3516         profiling.
3517
3518 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
3519
3520         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
3521         initial support for stack walking and unwinding.
3522
3523 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
3524
3525         * driver.c (mono_main): Make corlib-out-of-sync message more 
3526         descriptive. Also remove verify_corlib call.
3527
3528 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
3529
3530         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
3531         not overlap with other call's arguments, too.
3532
3533 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
3534
3535         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
3536         move to arch-specific code the choice of arch-specific
3537         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
3538         * mini.c: ensure emulation calls will not interleave
3539         with other calls.
3540
3541 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
3542
3543         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
3544         the magic trampoline stack frame is dropped before executing
3545         the new method.
3546
3547 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
3548
3549         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
3550         and integer to fp conversions. Added support for overflowing
3551         arguments on the stack. Reserve a couple more registers as temps.
3552         Added support for aot compilation (as output still needs to be
3553         tweaked, though).
3554
3555 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
3556
3557         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
3558         Don't overwrite return register in some corner cases.
3559
3560 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
3561
3562         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
3563         static constructors when AOT compiling.
3564
3565         * driver.c (mono_main): Call mono_check_corlib_version.
3566
3567 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
3568
3569         * cpu-g4.md, basic.cs: fixed div target register.
3570
3571 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
3572
3573         * mini-ppc.c, basic.cs: shl_imm fix with test.
3574
3575 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
3576
3577         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
3578         structures by value. Misc fixes.
3579         * objects.cs: more tests.
3580
3581 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
3582
3583         * mini-ppc.c: lconv.ovf.i implemented.
3584
3585 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3586
3587         * mini.c:
3588         (mini_init): don't error out if someone already called g_thread_init.
3589
3590 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
3591
3592         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
3593         to be any type per the spec. Fix abnormal memory usage when
3594         the same object is repeatedly thrown.
3595
3596 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
3597
3598         * mini.c: check for overruns in IL code.
3599
3600 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
3601
3602         * TODO: Add/remove some todo entries.
3603
3604 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
3605
3606         * driver.c (mono_main): Call mono_verify_corlib.
3607
3608 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
3609
3610         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
3611         This has been moved to mini.c
3612         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
3613         type being casted is marshalbyref it could be a proxy, so instead of
3614         emitting the type check code, emit a call to a runtime method that will
3615         perform the check by calling CanCastTo if needed.
3616
3617 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
3618
3619         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
3620         methods with large stack frames under Win32.
3621
3622 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
3623
3624         * Makefile.am: Distribute regression tests.
3625
3626         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
3627         at the end instead of inserting each variable into the sorted list.
3628
3629         * linear-scan.c (mono_varlist_sort): New helper function.
3630         
3631 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
3632
3633         * mini.c: ensure arguments and locals are within bounds.
3634
3635 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
3636
3637         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
3638         related fixes.
3639
3640 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
3641
3642         * mini.c (mono_cprop_copy_values): Fix crash.
3643
3644         * aot.c: Set verbosity back to 0.
3645         
3646 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
3647
3648         * regalloc.c: complete memory leak fix by Laurent Morichetti
3649         (l_m@pacbell.net).
3650
3651 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
3652
3653         * driver.c (main_thread_handler): Revert the previous patch.
3654
3655         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
3656         under valgrind.
3657
3658         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
3659         memory from the memory pool.
3660
3661         * driver.c (main_thread_handler): Turn on all optimizations when
3662         --aot is used.
3663
3664         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
3665         an array for better performance.
3666
3667         * regalloc.c (mono_regstate_assign): Fix memory leak.
3668
3669         * debug-mini.c (mono_debug_serialize_debug_info): New function to
3670         serialize the debug info.
3671
3672         * debug-mini.c (mono_debug_add_aot_method): New function to load the
3673         debug info from the serialized representation.
3674
3675         * aot.c: Save debug info into the generated file and load it when 
3676         loading a method.
3677
3678         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
3679
3680 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
3681
3682         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
3683         More FP-related fixes.
3684
3685 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
3686
3687         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
3688         and register allocation buglet. Hello world now runs.
3689
3690 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
3691
3692         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
3693         * tramp-ppc.c: fixed class init trampoline.
3694         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
3695
3696 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
3697
3698         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
3699         mini.c: more ppc changes/fixes.
3700
3701 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
3702
3703         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
3704         Also optimize the case when the arguments are the same in the caller 
3705         and in the callee.
3706
3707         * iltests.il: Add tests for tail calls with valuetype arguments.
3708
3709 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
3710
3711         * mini-ppc.c: fixes for struct return type.
3712
3713 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
3714
3715         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
3716         mono_spillvar_offset() to arch-specific code.
3717
3718 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
3719
3720         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
3721
3722 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
3723
3724         * exceptions-x86.c: Fix stack space leaks.
3725         
3726         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
3727         registers from the lmf if the method has save_lmf set.
3728
3729 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
3730
3731         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
3732         of icall wrappers into InvokeInDomain, since these are now per-domain.
3733
3734 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
3735
3736         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
3737         make some opcode emulation and intrinsic ops enabled/disabled 
3738         according to the architecture. More fixes.
3739
3740 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
3741
3742         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
3743
3744 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
3745
3746         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
3747         arch-specific handling for 'this' and struct return type to
3748         arch-specific code.
3749
3750 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3751
3752         * aot.c: prevent divide by zero error when reporting (it happened with
3753         Accessibility.dll).
3754
3755 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
3756
3757         * mini.h (inst_switch): Remove unused macro.
3758
3759 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
3760
3761         * aot.c:
3762         (load_aot_module): free 'info->methods' and 'info' properly. No more
3763         "free(): invalid pointer blah" messages when you have an old aot
3764         compiled assembly.
3765
3766 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
3767
3768         * jit-icalls.c, mini.c: Added support for context static fields.
3769
3770 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
3771
3772         * mini.c (mono_method_blittable): Methods which set LastError are not 
3773         blittable either. Fixes #51108.
3774         
3775 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
3776
3777         * mini.c: flush icache.
3778         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
3779
3780 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
3781
3782         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
3783
3784 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
3785
3786         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
3787         safe on IA32.
3788
3789         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
3790         vararg calls.
3791
3792         * inssel.brg (CEE_MKREFANY): Fix AOT case.
3793
3794 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
3795
3796         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
3797         instruction when the result is discarded.
3798
3799         * iltests.il (test_0_div_regalloc): New regression test.
3800
3801         * arrays.cs: Fix compilation error.
3802
3803 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
3804
3805         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
3806         float rules to inssel-x86.brg: sane architectures with FP registers
3807         don't need to implement these rules.
3808
3809 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
3810
3811         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
3812
3813 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
3814
3815         * mini.h, inssel-long32.brg: fixed endianess issues in int64
3816         implementation of 32 bit systems.
3817
3818 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
3819
3820         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
3821         (Jeroen Zwartepoorte).
3822
3823 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
3824
3825         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
3826         the caller and the callee matches.
3827         
3828         * mini.c (mono_method_to_ir): Add comment.
3829
3830         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
3831         signbit is missing on some platforms.
3832
3833 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
3834
3835         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
3836
3837         * mini.c (setup_jit_tls_data): Call the new function.
3838         
3839         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
3840
3841         * mini-x86.c: Add experimental support for fast access to the lmf
3842         structure under NPTL/Linux 2.6.x.
3843
3844 2003-11-06  Martin Baulig  <martin@ximian.com>
3845
3846         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
3847         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
3848         the debugger.
3849
3850 2003-11-02  Martin Baulig  <martin@ximian.com>
3851
3852         * mini.c (inflate_generic_field): New static method.
3853         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
3854         generic instance and the field is declared in a generic type, call
3855         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
3856
3857 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
3858
3859         * mini.h mini.c (mono_method_same_domain): New function to return
3860         whenever the caller and the callee are in the same domain.
3861
3862         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
3863
3864 2003-10-30  Martin Baulig  <martin@ximian.com>
3865
3866         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
3867         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
3868         method parameters.
3869         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
3870         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
3871
3872 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
3873
3874         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
3875         propagation.
3876
3877         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
3878         object here, so it is in the correct appdomain etc.
3879
3880 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
3881
3882         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
3883         already done.
3884         (mono_method_to_ir): Avoid freeing the type created returned from
3885         mono_type_create_from_typespec, since it is put into an internal cache
3886         by the function. Fixes pointer.exe.
3887
3888         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
3889         trampolines for icalls and pinvokes as well. Fixes #33569.
3890
3891 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
3892
3893         * mini.c: Update after appdomain changes.
3894
3895         * mini.c (mono_jit_compile_method_inner): Allways compile native
3896         method wrappers in the root domain, since there can only be one
3897         instance of them, whose address is stored in method->info.
3898
3899 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
3900
3901         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
3902         environment variable. Instead detect automatically whenever running
3903         under valgrind using the magic macro RUNNING_ON_VALGRIND from
3904         valgrind.h.
3905
3906 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
3907
3908         * trace.c, trace.h: New files that implement the new trace option
3909         parsing. 
3910
3911         * driver.c: Document new --trace options.
3912
3913         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
3914         mini-x86.c: Apply:
3915
3916         -       if (mono_jit_trace_calls)
3917         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
3918
3919         * mini.h: prototypes.
3920         
3921 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
3922
3923         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
3924
3925         * mini.c inssel.brg: Implement typedefbyref opcodes.
3926
3927         * mini.c (mono_jit_compile_method): Remove unused local variable.
3928
3929         * mini.c (mono_jit_compile_method_inner): Ditto.
3930         
3931 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
3932
3933         * tramp-x86.c (x86_class_init_trampoline): Fix build.
3934         
3935         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
3936
3937 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
3938
3939         * mini.c (mono_no_aot): Remove unused global variable.
3940
3941         * mini.c: Thread safety fixes.
3942
3943 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
3944
3945         * mini.c (mono_create_class_init_trampoline): Add a lock around
3946         class_init_hash_addr.
3947
3948         * arrays.cs (test_0_newarr_emulation): Add new regression test for
3949         #30073.
3950
3951         * mini.c: Decompose the NEWARR instruction before decomposing its
3952         arguments. Fixes #30073.
3953
3954 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
3955
3956         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
3957         convention.
3958
3959 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
3960
3961         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
3962
3963         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
3964
3965         * driver.c: Add support for compiling icall wrappers to --compile.
3966
3967 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
3968
3969         * inssel.brg: The empty value in class->interface_offsets is -1, not
3970         0. Fixes #49287.
3971
3972 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
3973
3974         * objects.cs: New test for 'is' operator on an array of interfaces.
3975
3976 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
3977
3978         * tramp-ppc.c: update trampoline code to support jumps
3979         and class initialization.
3980
3981 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
3982
3983         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
3984
3985         * inssel.brg (OP_UNBOXCAST): Fix #46027.
3986
3987         * inssel.brg (OP_UNBOX): Remove unused rule.
3988
3989         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
3990         region instead of one for each method. Fixes #47813.
3991
3992 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
3993
3994         * exceptions.cs (test_0_nested_finally): New regression test for
3995         nested exception handlers.
3996
3997         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
3998
3999         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
4000
4001         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
4002         inlining.
4003
4004         * mini.c (mono_method_check_inlining): Make the inlining limit 
4005         configurable by an environment variable.
4006         
4007         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
4008
4009         * mini.h: Bump AOT file version.
4010
4011         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
4012         token, store the image along with the token, since the token might not 
4013         refer to the same image as the method containing the relocation, 
4014         because of inlining.
4015
4016 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
4017
4018         * mini.c (mono_precompile_assemblies): New function to compile
4019         all methods in all loaded assemblies.
4020
4021         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
4022
4023         * regalloc.h regalloc.c (MonoRegState): Change the type of 
4024         iassign and fassign to int*, since they can contain large negative
4025         values if the register is spilled. Also added some comments. Fixes
4026         #45817.
4027
4028         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
4029         under Win32. Fixes #42964.
4030
4031 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
4032
4033         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
4034
4035         * aot.c: Added support for AOT compiling methods which contain calls
4036         to wrappers. Currently, only remoting-invoke-with-check wrappers are
4037         handled.
4038         
4039         * driver.c (compile_all_methods): Run the compilation in a thread
4040         managed by mono. Fixes #44023.
4041
4042         * mini.c (mono_codegen): Print full method name in verbose output.
4043
4044         * mini-x86.c (mono_arch_patch_code): Fix warning.
4045         
4046         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
4047         jumps, since the method we are jumping to might be domain-specific.
4048
4049         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
4050
4051 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
4052
4053         * inssel.brg: string chars are unsigned.
4054
4055 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
4056
4057         * TODO: New todo item.
4058
4059         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
4060         which calls mono_runtime_class_init and patches the call site to
4061         avoid further calls.
4062         (mono_arch_create_class_init_trampoline): New arch specific function 
4063         to create a class init trampoline.
4064         (create_trampoline_code): Generalized so it can create
4065         class init trampolines as well.
4066
4067         * mini.c (helper_sig_class_init_trampoline): New helper variable.
4068         (mono_create_class_init_trampoline): New function to create and cache
4069         class init trampolines.
4070         (mono_find_class_init_trampoline_by_addr): New function to lookup the
4071         vtable given the address of a class init trampoline. Used by the
4072         patching process.
4073         (mono_codegen): Generate a call to a trampoline instead of
4074         mono_runtime_class_init in LDSFLD[A].
4075         (mono_codegen): Add relocations for the new trampoline.
4076         
4077         * mini.h mini-x86.c aot.c: Added a new relocation type: 
4078         MONO_PATCH_INFO_CLASS_INIT.
4079
4080         * mini.h: Bump AOT version number.
4081
4082         * aot.c: Create a copy of the loaded code instead of using the original
4083         so methods which call each other will be close in memory, improving
4084         cache behaviour.
4085         
4086         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
4087         patch since it breaks the regression tests.
4088         
4089         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
4090         for the register saving instruction sequence since the 
4091         frame_state_for function in glibc 2.3.2 don't seem to detect it.
4092
4093 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
4094
4095         * TODO: Fix todo item && remove another.
4096
4097 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
4098
4099         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
4100         previous checkin.
4101
4102         * aot.c: Moved the check for MONO_LASTAOT into the initialization
4103         function of the module.
4104
4105         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
4106         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
4107         --no-aot command line option.
4108
4109 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
4110
4111         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
4112         by Bernie Solomon (bernard@ugsolutions.com).
4113
4114         * inssel.brg: Refactor the interface offset table related code into
4115         its separate functions and add support for the AOT case.
4116
4117 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
4118
4119         * aot.c (mono_aot_get_method_inner): Fix memory leak.
4120         
4121         * aot.c: Added mono_aot_verbose variable and made all debugging
4122         output depend on the value of this variable.
4123
4124         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
4125         method_label and info_label.
4126
4127         * mini.h mini-x86.c aot.c: Added a new relocation type 
4128         MONO_PATCH_INFO_IID for klass->interface_id.
4129
4130         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
4131         the MonoJitInfo structure.
4132
4133         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
4134         a non-root appdomain in shared mode.
4135
4136 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
4137
4138         * aot.c: make aot loader less verbose. Remove free of unused variable.
4139
4140 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
4141
4142         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
4143
4144         * .cvsignore: Added *.dll.
4145
4146         * mini.c (mono_print_tree_nl): New function callable while debugging.
4147
4148         * mini.c (mono_print_code): Export this.
4149
4150         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
4151         patched code.
4152
4153 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
4154
4155         * mini.h (MonoCompile): Added 'jit_info' field.
4156
4157         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
4158         the cfg structure, since it is needed by the AOT compiler.
4159
4160         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
4161
4162         * aot.c: A major rewrite. Changes include:
4163         - save exception tables for methods which have them.
4164         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
4165         to g_module_symbol.
4166         - reworked the file format so it is now much smaller and needs
4167         fewer relocation entries.
4168         
4169 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
4170
4171         * aot.c (load_aot_module): Fix build bustage on platforms without
4172         Boehm GC.
4173
4174 2003-09-04  Martin Baulig  <martin@ximian.com>
4175
4176         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
4177
4178 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
4179
4180         * TODO: Some new optimization ideas.
4181
4182         * aot.c: Move AOT module loading logic here from mono_assembly_open.
4183
4184         * aot.c: Save the optimization flags used to compile the code into
4185         the AOT module.
4186
4187         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
4188         support emitting domain specific code.
4189         
4190         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
4191         no longer domain neutral. It can be made domain neutral by compiling 
4192         with --optimize=shared.
4193
4194         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
4195         between appdomains.
4196
4197         * driver.c mini.h mini.c: New --no-aot debugging option which disables
4198         loading of AOT code.
4199
4200         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
4201         
4202         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
4203         if there is no domain neutrality information.
4204
4205 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
4206
4207         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
4208         format version into the generated library.
4209
4210         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
4211         callee method into the caller since one of them could be shared.
4212
4213         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
4214         system exceptions from AOT code now works.
4215
4216         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
4217         method if it is domain neutral and the callee is not.
4218
4219         * graph.c (cfg_emit_one_loop_level): Fix warning.
4220
4221 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
4222
4223         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
4224         last checkin.
4225
4226 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
4227
4228         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
4229         is needed  by code which is executed before mono_runtime_init ().
4230         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
4231         
4232         * mini.c (mono_thread_abort): Fix warning.
4233         (mono_jit_compile_method): Call static constructor in the AOT case too.
4234
4235         * aot.c (mono_compile_assembly): Fix warning.
4236
4237 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4238
4239         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
4240
4241 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
4242
4243         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
4244
4245         * cpu-pentium.md: Fix the length of call opcodes so they include the
4246         ESP restoring instruction. Fixes #47968.
4247
4248 2003-08-28  Martin Baulig  <martin@ximian.com>
4249
4250         * mini-x86.c (mono_arch_call_opcode): Added support for
4251         MONO_TYPE_GENERICINST.
4252
4253         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
4254
4255 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
4256
4257         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
4258         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
4259
4260         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
4261         metadata_section.
4262
4263 2003-08-26  Martin Baulig  <martin@ximian.com>
4264
4265         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
4266         when reporting an error, set this to the actual error location.
4267         (mono_method_to_ir): Report the correct error location if
4268         get_basic_blocks() returned an error.
4269
4270 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
4271
4272         * mini.c (mono_type_blittable): OBJECT is not blittable.
4273         (mono_method_blittable): Methods which have marshalling descriptors
4274         are not blittable either. Fixes #47842.
4275
4276 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
4277
4278         * driver.c mini.c: Use an environment variable instead of a global 
4279         variable. Also fix the build.
4280
4281         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
4282         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
4283         reporting this. 
4284
4285         * driver.c mini.c: Added --with-valgrind option to turn off some
4286         code which prevents mono from running under valgrind.
4287
4288         * mini.c (mono_emit_call_args): Fixed warning.
4289
4290         * mini.c (mono_emulate_opcode): Fixed warning.
4291
4292 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
4293
4294         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
4295         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
4296         regalloc.c, regalloc.h: specify available registers in arch-specific
4297         code and support floats in the regallocator (patch by Laurent Morichetti 
4298         <l_m@pacbell.net>)
4299
4300 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
4301
4302         * mini.c: mono_thread_current() can be called only after
4303         mono_runtime_init(): rearrange code to not call it early on.
4304
4305 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
4306
4307         * mini.c: allocate jump tables in the code mempools.
4308
4309 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
4310
4311         * mini.c, mini.h: make sure per-thread data allocated by the jit is
4312         freed.
4313
4314 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
4315
4316         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
4317         12 to 16.  This fixes bug #47453.
4318
4319
4320 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
4321
4322         * mini-ppc.c: fixed indexed load and unsigned compares.
4323
4324 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
4325
4326         * mini.c: reenabled installation of handler for
4327           thread abort signal.
4328
4329 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
4330
4331         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
4332         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
4333         until it's fixed and actually useful.
4334
4335 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
4336
4337         * inssel-long32.brg: couple more opcodes implemented.
4338
4339 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
4340         
4341         * mini-sparc.c: Even more opcodes implemeted.
4342
4343 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
4344
4345         * mini-sparc.c: More opcodes implemented.
4346
4347 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
4348
4349         * mini-sparc.c: More opcodes implemented.
4350
4351 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
4352
4353         * inssel-sparc.brg: Add some needed rules.  Direct
4354         copy from PPC.
4355         * Makefile.am: Use inssel-sparc.brg
4356         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
4357         an assert happy for now.
4358
4359 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
4360
4361         * mini-sparc.c: Fixed compile errors.
4362         * exceptions-sparc.c: Same.  We now produce a mono binary 
4363         on sparc-linux.  Yea.
4364
4365 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
4366
4367         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
4368         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
4369         They compile, but do not work.
4370
4371 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
4372
4373         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
4374         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
4375         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
4376         (ct@gentoo.org).
4377
4378 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
4379
4380         * mini.c: more opcodes implemented and better support for generics.
4381
4382 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
4383
4384         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
4385         * mini.c, mini.h: first cut at generics support: some new instructions 
4386         added and changed the behaviour of some of the existing ones.
4387
4388 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
4389
4390         * mini.c: Removed definition of metadata_shared mutex here.
4391
4392 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
4393
4394         * mini-x86.c: make vararg calls work for instance methods.
4395
4396 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
4397
4398         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
4399         returns the arguments in a separte list, now.
4400
4401 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
4402
4403         * aot.c, mini.c: updates for array type representation changes.
4404
4405 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
4406
4407         * mini.c: register function to perform jit shutdown.
4408
4409 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
4410
4411         * mini.c: use a faster allocator if possible.
4412
4413 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
4414
4415         * aot.c: some cleanups and portability changes.
4416
4417 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
4418
4419         * mini.c: use faster allocation for CEE_BOX if possible.
4420
4421 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
4422
4423         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
4424         Moved inlined mempcy code to its own function so that is can be
4425         reused. Added an inline memset function as well (optimized initobj).
4426         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
4427
4428 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
4429
4430         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
4431
4432 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
4433
4434         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
4435         arch code can setup the cpu for CLR execution, if needed.
4436         We use it on x86 to set the precision of FP operations.
4437
4438 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
4439
4440         * mini.c: disable some optimizations if we can guess they'll cost too
4441         much for a given method.
4442
4443 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
4444
4445         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
4446         
4447 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
4448         * mini.h mini.c mini-x86.c: Added instruction level coverage 
4449         info collection support.
4450
4451 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
4452
4453         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
4454         is now implemented in the profiling API. Get rid of a couple of
4455         unnecessary global variables.
4456
4457 2003-06-15  Nick Drochak <ndrochak@gol.com>
4458
4459         * basic-long.cs: tests for negative values for bigmul, and unsigned.
4460         * cpu-g4.md: add op_bigmul and op_bigmul_un
4461         * cpu_pentium.md: add op_bigmul_un
4462         * inssel-long32.brg: add rule for unsigned bigmul
4463         * mini-ops.h: define OP_BIGMUL_UN
4464         * mini-x86.c: THE BUG: handle (un)signed properly
4465         * mini.c: choose unsigned opcode if needed.
4466         This set of patches fixes bug #44291
4467
4468 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
4469
4470         * mini.c (optimize_branches): improved to handle all kinds of
4471         conditional branches.
4472
4473 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
4474
4475         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
4476         don't raise exceptions.
4477
4478 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
4479
4480         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
4481         to arch-specific files.
4482
4483 2003-06-09  Martin Baulig  <martin@ximian.com>
4484
4485         * Makefile.am (libs): Added $(LIBGC_LIBS).
4486
4487 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
4488
4489         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
4490         and OP_ATAN (fixes bug#44293).
4491
4492 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
4493
4494         * Makefile.am, mini-x86.c: rename cpu description array to
4495         pentium_desc, since some compilers define the 'pentium' preprocessor
4496         symbol.
4497
4498 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
4499
4500         * mini.c (mini_select_instructions): add explicit branch if the
4501         following block is not the false target of a conditional branch -
4502         we need this with any optimization that reorder or remove bblocks
4503
4504         * mini.c (optimize_branches): bug fixes
4505
4506 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
4507
4508         * mini.c (mono_method_to_ir): inline static readonly fields
4509
4510         * ssa.c (fold_tree): start cfold support for long (very simple
4511         cases only)
4512
4513         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
4514
4515 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
4516
4517         * inssel.brg: fixed memcpy (bug #44219).
4518
4519 2003-06-05  Dick Porter  <dick@ximian.com>
4520
4521         * driver.c: Set the glib log levels to not abort if g_message
4522         recurses.
4523
4524         g_set_prgname() has to happen before mini_init() so that the
4525         process handle gets the info.
4526         
4527 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
4528
4529         * driver.c: add intrins to the default optimizations to get wider
4530         exposure.
4531
4532 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
4533
4534         * mini.h: some large basic blocks will overflow a 16-bit
4535         integers for symbolic registers.
4536
4537 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
4538
4539         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
4540         (mono_arch_output_basic_block): fix bug 43499 
4541
4542 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
4543
4544         * mini.c: kill duplicated definition of mono_debug_format.
4545
4546 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
4547
4548         * mini-x86.c, arrays.cs: fixed register allocation bug.
4549
4550 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
4551
4552         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
4553
4554         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
4555
4556 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4557
4558         * mini.c:
4559         (print_method_from_ip): also print source location information if
4560         available.
4561
4562 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
4563
4564         * mini.c (mono_find_block_region): bug fix in region code
4565         (mini_method_compile): enable removing unreachable code again, but
4566         only in methods without exception clauses.
4567
4568 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
4569
4570         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
4571         Implemented arglist opcode and handling of TypedReference type.
4572         Fixed x86 call convention when a structure is returned.
4573         Minimal support for calling static vararg methods.
4574
4575 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
4576
4577         * mini.c (mini_method_compile):  always remove unreachable code,
4578         because the code in them may be inconsistent  (access to dead
4579         variables for example).
4580
4581 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
4582
4583         * driver.c, debug-mini.c: warning fixes.
4584
4585 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
4586
4587         * Makefile.am, jit.h, mini.h: install header for embedding mono.
4588
4589 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
4590
4591         * mini.c: thread-static fields are registered in mono_class_vtable(),
4592         so ensure the function is called before checking for them.
4593
4594 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
4595
4596         * mini.c (optimize_branches): fix for bug 43586
4597
4598         * jit-icalls.c (mono_llmult_ovf): added an additional check for
4599         overflow (fixes Bug #43639)
4600
4601 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
4602
4603         * mini.c, objects.cs: allow the use of stobj for primitive types.
4604
4605 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
4606
4607         * mini.c: be less strict about argument checking until we support
4608         running the verifier.
4609
4610 2003-05-27  Nick Drochak <ndrochak@gol.com>
4611
4612         * basic-long.cs: tests for (ulong)int * (ulong)int also
4613         * mini.c: use the same trick for (ulong)int * (ulong)int
4614
4615 2003-05-27  Nick Drochak <ndrochak@gol.com>
4616
4617         * basic-long.cs: add regression test for (long)int * (long)int
4618         * cpu-pentium.md: add op_bigmul specification
4619         * inssel-long32.brg: add OP_BIGMUL rule
4620         * mini-ops.h: add OP_BIGMUL
4621         * mini-x86.c: register allocator: handle case where src1 needs to be
4622         in EAX.
4623         * mini.c: substitute special BIGMUL opcode in the tree for 
4624         (long)int * (long)int
4625
4626 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
4627
4628         * jit-icalls.c: call the type ctor on field access if needed.
4629
4630 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
4631
4632         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
4633         to a method (including results of ldelema, bug#43207).
4634
4635 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
4636
4637         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
4638         colors to show exception handler blocks.
4639
4640         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
4641         (fix for pinvoke7.cs).
4642
4643 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
4644
4645         * mini.h, mini.c: ensure correct initialization order for types that
4646         require it. Prepare for lazy compilation of jit icall wrappers.
4647         Provide a name for opcode emulation to reduce unneeded mallocing.
4648
4649 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
4650
4651         * mini-x86.c: better register restoring code and profiling
4652         support for tail calls.
4653
4654 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
4655
4656         * mini.h, driver.c: prepare for leaf methods optimization.
4657
4658 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
4659
4660         * mini.c: get targets of branches before converting a method.
4661
4662 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
4663
4664         * mini.c (optimize_branches): added some experimental code (disbaled) 
4665
4666 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
4667
4668         * mini.c (optimize_branches): fix branch to branch optimization 
4669
4670         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
4671
4672         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
4673
4674         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
4675
4676         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
4677         if needed.
4678
4679 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
4680
4681         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
4682         enable use of interface variables again.
4683
4684         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
4685         I1 to registers because there is no simply way to sign extend 8bit
4686         quantities in caller saved registers on x86.
4687
4688         * inssel-float.brg: set costs of some rules to 2 so
4689         that monobure always select the arch. specific ones if supplied,
4690         regardless of the order we pass the files to monoburg.
4691
4692 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
4693
4694         * mini.c, mini-x86.c: since the magic trampoline for jumps
4695         can't patch the code directly, we do it as soon as the
4696         method gets compiled.
4697
4698 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
4699
4700         * mini-x86.c, mini.h: introduce a new patching method
4701         to support CEE_JMP and tail calls.
4702         * mini.c: obey tail.call. Don't precompile methods target
4703         of CEE_JMP.
4704         * tramp-x86.c: new trampoline code to handle methods
4705         reached through a jump.
4706
4707 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
4708
4709         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
4710         bit values to registers
4711
4712 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
4713
4714         * mini.c (mono_compile_get_interface_var): share interface
4715         variables if possible.
4716
4717 2003-05-16  Martin Baulig  <martin@ximian.com>
4718
4719         * debug-mini.c (mono_init_debugger): New function to initialize
4720         the debugger.  This is not in the debugger since it needs to
4721         access some of mini's internals.
4722
4723 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
4724
4725         * mini.c (mono_method_to_ir): inlining fixes/cleanups
4726
4727 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
4728
4729         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
4730         for value type handling.
4731
4732 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
4733
4734         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
4735         (mono_method_check_inlining): enable inlining of all kinds of wrappers
4736
4737 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
4738
4739         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
4740           the constructor through a proxy.
4741
4742 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
4743
4744         * jit-icalls.c, inssel.brg: fixes to array element address
4745         calculations.
4746
4747 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
4748
4749         * mini-x86.c (is_regsize_var): allocate pointer to registers
4750
4751 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
4752
4753         * driver.c: fixed typo, added intrins to the set of optimizations
4754         tested with regressions.
4755
4756 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
4757
4758         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
4759         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
4760         test case.
4761
4762 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
4763
4764         * inssel.brg: remove some common pop instructions without side effects
4765
4766 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
4767
4768         * inssel-x86.brg: fixed thinko in int to double conversions.
4769
4770 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
4771
4772         * mini.c, jit-icalls.c: added runtime thread-static variable support.
4773
4774 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
4775
4776         * inssel-long32.brg: two more missing instructions.
4777
4778 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
4779
4780         * mini.c (mono_emit_call_args): set the cil_code for all arguments
4781         if not already set.
4782
4783 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
4784
4785         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
4786         correctly.
4787
4788         * basic-float.cs: Added tests for negative zero.
4789
4790 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
4791
4792         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
4793         a couple of missing operations for long casts, with test cases.
4794
4795 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4796
4797         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
4798
4799 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
4800
4801         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
4802         code size estimation.
4803
4804 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
4805
4806         * mini.c (mono_jit_create_remoting_trampoline): make it work with
4807         abstract methods (fix bug 42542)
4808
4809         * aot.c: add ability to handle array types
4810         
4811 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
4812
4813         * mini.c: Call the _specific versions of the object allocation
4814         functions if possible.
4815
4816 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
4817
4818         * driver.c: call setlocale ().
4819
4820 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
4821
4822         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
4823         windows build.
4824
4825 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
4826
4827         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
4828
4829         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
4830         wrappers (fix bug 42122)
4831
4832 2003-05-04  Martin Baulig  <martin@ximian.com>
4833
4834         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
4835
4836         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
4837         s/mini_set_defaults/mono_set_defaults/g.
4838
4839 2003-05-04  Martin Baulig  <martin@ximian.com>
4840
4841         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
4842
4843 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
4844
4845         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
4846         (reported by Don Roberts).
4847
4848 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
4849
4850         * mini.c: temporarily work around two bugs for this release.
4851
4852 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
4853
4854         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
4855         that contains -export-dynamic and it makes using the ld script
4856         useless.
4857         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
4858
4859 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
4860
4861         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
4862         specific cpu.
4863
4864 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
4865
4866         * mini.c: make sure leave calls all the needed finally blocks,
4867         even when the target jumps out of multiple exception clauses.
4868
4869 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
4870
4871         * ldscript, Makefile.am: add linker script to reduce the number of
4872         exported symbols (should also fix the issues with libwine defining
4873         some of the same symbols in io-layer).
4874
4875 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
4876
4877         * driver.c (mini_main): Avoid assertion when no file name is given on 
4878         the command line.
4879
4880 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
4881
4882         * driver.c: added --version/-V command line option.
4883         Added the inline optimization in the regression tests.
4884
4885 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
4886
4887         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
4888         to the type in the method signature (fixes bug#42134).
4889
4890 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
4891
4892         * mini.c: when inlining, check this is not null only when needed (bug #42135).
4893
4894 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
4895
4896         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
4897
4898 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4899
4900         * driver.c: fixed bug #42100.
4901
4902 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
4903
4904         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
4905
4906 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
4907
4908         * mini.c: moved most of the code required to do inlining to its own
4909         function so it can be reused. Inline also ctors if appropriate.
4910
4911 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
4912
4913         * Makefile.am: Link with -export-dynamic so shared libs loaded by
4914         the runtime can call mono API functions.
4915
4916 2003-04-27  Martin Baulig  <martin@ximian.com>
4917
4918         * debug-mini.c (mono_debug_init_method): Added
4919         `guint32 breakpoint_id' argument; if the method has a breakpoint,
4920         send a notification to the debugger.
4921
4922         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
4923         running in the Mono Debugger, just pass the breakpoint number to
4924         mono_debug_init_method().
4925
4926         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
4927
4928 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
4929
4930         * mini.c: allow some more unsafe compares.
4931
4932 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
4933
4934         * mini-x86.c, Makefile.am: make distcheck works (partially from
4935         a patch by Richard Lee <r.h.lee@attbi.com>).
4936         * regset.c, regset.h: removed, they are unused.
4937
4938 2003-04-25  Dick Porter  <dick@ximian.com>
4939
4940         * driver.c: Usage reports the name as 'mono' not 'mini'
4941         * exceptions-x86.c: Build and run on freebsd
4942
4943 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
4944
4945         * Makefile.am: install the program with the 'mono' name and
4946         the library as libmono instead of mini and libmini.
4947
4948 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
4949
4950         * driver.c: provide the APIs for the embedding interface of the old jit.
4951
4952 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
4953
4954         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
4955
4956 2003-04-23  Martin Baulig  <martin@ximian.com>
4957
4958         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
4959
4960         * driver.c: Added `--debug' command line argument to enable
4961         debugging support.
4962
4963 2003-04-23  Martin Baulig  <martin@ximian.com>
4964
4965         * debug.[ch]: Removed.  The code is now in
4966         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
4967
4968         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
4969         last six months.
4970
4971 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
4972
4973         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
4974
4975 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4976
4977         * mini.c:
4978         (mini_cleanup): moved mono_runtime_cleanup call after the call to
4979         mono_domain_finalize.
4980         (mini_method_compile): use mono_method_profile* if the the option is
4981         enabled.
4982
4983 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
4984
4985         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
4986         methods with their wrapper.
4987
4988         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
4989         methods with their wrapper.
4990
4991         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
4992         their wrapper.
4993
4994         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
4995         wrapper.
4996
4997         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
4998         methods.
4999
5000 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
5001
5002         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
5003
5004 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
5005
5006         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
5007         of the mempool. This is slightly faster and uses less memory
5008
5009 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
5010
5011         * mini.c: avoid O(n) allocation for variables.
5012
5013 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
5014
5015         * mini.c: handle items on the stack after inlining methods.
5016
5017 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
5018
5019         * mini.c: make the method->opcode optimization dependent
5020         on MONO_OPT_INSTRINS and do it lazily.
5021
5022 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
5023
5024         * driver.c: print overall results at the end of regression run.
5025
5026 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
5027
5028         * inssel.brg: don't overwrite symbolic registers.
5029
5030 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
5031
5032         * inssel-x86.brg: fix conversion from long to float.
5033
5034 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
5035
5036         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
5037
5038 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
5039
5040         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
5041
5042         * driver.c: Added --print-vtable option as in the old JIT.
5043
5044 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
5045
5046         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
5047
5048 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
5049
5050         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
5051
5052 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
5053
5054         * mini.c regalloc.c regalloc.h: Fix memory leak.
5055
5056 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
5057
5058         * aot.c (mono_aot_get_method): register all used strings
5059
5060 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
5061
5062         * mini.c: always intern strings references with ldstr at compile time.
5063
5064 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
5065
5066         * Makefile.am: add BUILT_SOURCES.
5067
5068 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
5069
5070         * driver.c: give a better error message when the assembly to execute
5071         doesn't have an entry point.
5072
5073 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
5074
5075         * Makefile.am: added hack for automake
5076
5077         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
5078         correct sematics.
5079
5080         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
5081
5082 22003-04-07  Martin Baulig  <martin@ximian.com>
5083
5084         * Makefile.am: Added Makefile.am.
5085
5086         * debugger-main.c: Removed, this is now in the debugger where it
5087         belongs.
5088
5089         * mini.pc.in: Call this package `mini' for the moment.
5090
5091
5092
5093
5094