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