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