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