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