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