2007-05-31 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
4         (mono_arch_get_this_arg_from_call): Ditto.
5
6         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7
8         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9         invoke_impl field.
10
11         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12         (mono_arch_get_this_arg_from_call): Ditto.
13
14         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15         
16         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
17         try to create optimized invoke code and use that for further invocations. 
18         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
19
20         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
21
22 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
23
24         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
25         sealed classes or methods.
26         *devirtualization.cs: tests for the new optimization
27
28 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
29
30         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
31         by the update_volatile () function.
32
33 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
34
35         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
36         require it.
37
38         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
39
40 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
41
42         * mini.c: Add configure checks for header files.
43         * mini-x86.c: Add configure checks for header files.
44         * trace.c: Add configure checks for header files.
45         * aot-runtime.c: Add configure checks for header files.
46         * aot-compiler.c: Add configure checks for header files.
47         * driver.c: Add configure checks for header files.
48         * mini-codegen.c: Add configure checks for header files.
49         
50         Code is contributed under MIT/X11 license.
51
52 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
53
54         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
55         icompare_imm -128 + op_iclt. Fixes #81703.
56
57 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
58
59         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
60
61 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
62
63         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
64         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
65         so that all isinst checks now use "interface_bitmap".
66
67 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
68
69         * cpu-amd64.md (jmp): Fix a warning.
70
71         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
72
73         * basic.cs: Add new regression test.
74
75         * basic.cs: Remove test which is now in basic-long.cs.
76
77         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
78
79         * basic-long.cs: Add new test.
80         
81 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
82
83         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
84
85 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
86
87         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
88
89         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
90         places.
91         
92         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
93         throwing code a bit.
94
95         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
96         the exception throwing code a bit.
97
98         * mini-x86.c (get_call_info): Allocate result from a mempool.
99
100 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
101
102         * aot-compiler.c (find_typespec_for_class): Fix the assert.
103
104         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
105
106         * mini.h (MonoCompile): Add 'token_info_hash' field.
107
108         * mini.c: Save token->method associations during compilation so the AOT 
109         compiler can use it.
110         
111         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
112         which reference generic classes and methods.
113
114 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
115
116         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
117
118         * aot-compiler.c (compile_method): Fix a typo in a comment.
119
120         * aot-runtime.c (decode_cached_class_info): Skip generic types.
121
122         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
123         everything generic.
124
125         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
126
127 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
128
129         * mini.h (MonoCompile): Add 'args' field.
130
131         * mini.c (mono_compile_create_vars): Store variables representing the arguments
132         into cfg->args.
133
134         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
135
136 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
137
138         * mini.c (mono_compile_get_interface_var): Remove this unused function.
139
140         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
141
142         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
143         opcodes for some opcodes.
144
145         * mini.h *.brg *.c: Use the new opcodes.
146
147 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
148
149         * mini.h: Bumped aot revision.
150
151         * inssel.brg: modified code generation of type checks for interfaces
152         to use the new "MonoClass.interface_bitmap" instead of the old
153         "MonoClass.interface_offsets".
154
155 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
156
157         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
158
159 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
160
161         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
162         64 bit platforms.
163
164 2007-04-27  Neale Ferguson <neale@sinenomine.net>
165
166         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
167
168 2007-04-27  Wade Berrier  <wberrier@novell.com>
169
170         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
171         mini.h) to fix build.
172
173 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
174
175         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
176         
177         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
178         causes the corlib unit tests to fail.
179
180 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
181
182         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
183
184         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
185
186         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
187         opcodes to the comparison relations.
188
189         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
190         opcodes to their types.
191         
192         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
193
194         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
195         it in cfg->arch.cinfo.
196
197         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
198
199         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
200         cfg->cil_offset_to_bb.
201
202 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
203
204         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
205         created becase of initlocals.
206
207 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
208
209         * mini-alpha.c cpu-alpha.md: More alpha port work from 
210         Sergey Tikhonov <tsv@solvo.ru>.
211
212 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
213
214         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
215
216 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
217
218         * cpu-s390.md (break): Correct the length of break instruction.
219
220 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
221
222         * mini.c: fix a couple of soft-float issues and comments.
223
224 2007-04-15  Miguel de Icaza  <miguel@novell.com>
225
226         * trace.c (is_filenamechar): - is also a filename char.
227
228 2007-04-15  Neale Ferguson <neale@sinenomine.net>
229
230         * mini-s390.c: Correct checking for enum type in return value processing.
231
232 2007-04-14  Raja R Harinath  <rharinath@novell.com>
233
234         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
235         (version.h): Makefile is in the build directory.
236
237 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
238
239         * mini-amd64.h: fix for assertion failure on Solaris/amd64
240
241 2007-04-11  Martin Baulig  <martin@ximian.com>
242
243         * mini.c (can_access_member): Fix handling of generic classes;
244         fixes #81259.
245
246 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
247
248         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
249
250 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
251
252         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
253
254 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
255
256         * mini-codegen.c: make sure the right spill amount is
257         used for fp or integer registers (fixes the float_sub_spill() on ppc).
258
259 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
260
261         * mini-ppc.c: fixes for the fp_branch_nan test.
262
263 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
264
265         * basic.cs: Comment out new test which still fails on ia64.
266
267 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
268
269         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
270
271 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
272
273         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
274
275 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
276
277         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
278         on 64 bit machines. Fixes part of #80738.
279
280         * basic.cs: Add regression test.
281
282 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
283
284         * inssel.brg basic.cs: Revert previous change to fix build.
285
286         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
287         platforms.
288         
289         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
290
291         * basic.cs: Add new regression test.
292
293 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
294
295         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
296         many arguments.
297
298 2007-03-16  Neale Ferguson <neale@sinenomine.net>
299
300         * cpu-s390x.md: Correct length of break instruction.
301
302 2007-03-16  Neale Ferguson <neale@sinenomine.net>
303
304         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
305         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
306
307 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
308
309         * *.c: Begin WIN64 port.
310         * mini.c:  Use correct register in profiler.
311         * mini-amd64.c: No inline assembly on Win64.
312         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
313         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
314         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
315         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
316         mono_arch_ip_from_context for Win64.
317         
318         Contributed under MIT/X11 license.
319
320 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
321
322         * exceptions-amd64.c (seh_handler): Ditto.
323
324         * exceptions-x86.c (seh_handler): Fix a memory leak.
325
326 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
327
328         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
329         mini-s390x.c: fixed peephole optimizations to deal
330         correctly with 1 and 2 byte reload avoidance.
331
332 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
333
334         * cpu-s390.md, cpu-s390x.md: update localloc length.
335
336 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
337
338         * cpu-g4.md: added missing descriptions.
339
340 2007-03-14  Miguel de Icaza  <miguel@novell.com>
341
342         *  Makefile.am: Add support so the tail tests are not executed on
343         PowerPC as that is a known limitation of the PowerPC port.
344
345 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
346
347         * runmdesc.bat:  Move to msvc directory.
348         
349 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
350
351         * runmdesc.bat:  Run executable that was produced by the current
352         target and sent via an argument.
353         
354 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
355
356         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
357         #81102.
358
359         * generics.2.cs: Add regression test.
360
361 2007-03-09  Wade berrier  <wberrier@novell.com>
362
363         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
364
365 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
366
367         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
368         AOT code depends on this.
369
370 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
371
372         * mini.c: more precise tracking of types in the eval stack
373         (part of fix for bug #81044).
374
375 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
376
377         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
378
379         * aot-compiler.c (encode_patch): Remove an obsolete comment.
380
381 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
382
383         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
384
385         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
386
387 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
388
389         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
390         a pointer on 64 bit systems. Fixes #80190.
391
392         * iltests.il: Add new regression test.
393
394 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
395
396         * mini.c: inline a constant for Environment.IsRunningOnWindows.
397
398 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
399
400         * trace.c: Remove an erroneous alignemnt check when tracing.
401           Fixes --trace on OSX86.
402
403 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
404
405         * mini-$(arch).h: initialize SP in context for all the archs.
406
407 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
408
409         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
410         regressions in the thread tests.
411
412 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
413
414         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
415         - fixed implementation of LOCALLOC opcode
416         - implemented non-un compare for floats
417         - code cleanup
418         - implementation of FDIV and CKFINITE opcodes
419         - fixes for latest mono updates
420         - additional arch opcodes
421
422 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
423
424         * Makefile.am: simplify and merge rules for cross-compilation.
425
426 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
427
428         * local-propagation.c: Actually *apply* the fix for bug 80591...
429
430 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
431
432         * mini-exceptions.c: backuot part of the last change
433         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
434
435 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
436         * inssel.brg: Fix bug 59286.
437
438
439 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
440
441         * mini-exceptions.c: patch from Zoltan to correctly check for
442         stack boundaries (using the stack register, not the frame register),
443         fixes bugs #80724, #79717.
444
445 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
448         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
449
450         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
451         presence of frame pointer elimination.
452
453 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
454         
455         * mini-x86.h: NetBSD UCONTEX_REG defines.
456
457 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
458
459         * inssel-amd64.brg: Fix amd64 build.
460
461 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
462
463         * mini.h: remove extern to workaround what looks likes gcc bug 26905
464         on amd64.
465
466 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
467
468         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
469         ends.
470
471         * mini-<ARCH>.c: Use mono_is_regsize_var ().
472
473 2007-01-30 Mark Mason <mason@broadcom.com>
474
475            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
476            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
477            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
478            beginning support for CEE_JMP [not quite working yet]
479            * tramp-mips.c: LMF handling now works
480         
481 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
482
483         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
484
485         * mini.h (NULLIFY_INS): New macro.
486
487 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
488
489         * mini.c: statistical profiler fix for windows, patch
490         from Tor Lillqvist (tml@novell.com).
491
492 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
493         * local-propagation.c: Fix bug 80591.
494
495 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
496
497         * Makefile.am: put back the --export-dynamic option as with
498         the previous gmodule flags (thanks to Robert Jordan).
499
500 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
501
502         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
503
504         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
505         simplify and speed up the local register allocator. Also rename some fields
506         like iassign->vassign.
507         
508         * regalloc.c: Remove some functions which are no longer used since their
509         inlined version is in mini-codegen.c.
510         
511         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
512
513         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
514
515 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
516
517         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
518         narrowing. Fixes #80622.
519
520         * iltests.il: Add new regresssion test. 
521
522 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
523
524         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
525         debug-debugger.c, debug-debugger.h: warning fixes.
526         * driver.c: updated copyright year and made it fit in one line.
527
528 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
529
530         * aot-runtime.c: updated to use mono-dl instead of gmodule.
531
532 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
533
534         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
535
536         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
537
538         * iltests.il: Add new test for bug #80507.
539
540 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
541
542         * mini-arm.h: use soft-float also on vfp for now.
543
544 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
545
546         * mini.c: fix some more soft-float issues.
547
548 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
549
550         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
551
552 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
553         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
554         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
555         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
556
557 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
558
559         * mini-arm.c: typo fix.
560
561 2007-01-23  Neale Ferguson <neale@sinenomine.net>
562
563         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
564
565 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
566
567         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
568         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
569
570         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
571
572         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
573
574         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
575         
576         * inssel.brg: Fix a warning.
577
578         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
579
580         * abcremoval.c ssa.c ssapre.c: Update after this change.
581         
582         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
583
584         * dominators.c (df_set): Use mono_bitset_union_fast.    
585
586 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
587
588         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
589         mini-codegen.c: reduce relocations and memory usage for the cpu
590         description.
591
592 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
593
594         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
595
596         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
597         to reduce their size.
598
599 2007-01-19 Mark Mason <mason@broadcom.com>
600
601         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
602         * mini-mips.c: more configuration macros, support long conditional branches, additional
603         asserts, fix epilog instrumentation.
604         * mini-mips.h: use standard stack walk
605         * cpu-mips.md: increase size of div, rem and conditional branches
606         
607 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
608
609         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
610         to cpu spec data.
611
612 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
613
614         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
615         (compile_method): Ditto.
616
617         * aot-runtime.c (decode_klass_info): Ditto.
618
619         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
620         needed by the code generated by inssel.brg. Also fix a warning.
621
622 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
623
624         * mini.c: deal with enums that become genericinsts by
625         being nested in a generic class (bug #79956).
626
627 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
628
629         * mini.c: match the generic definition to check for
630         private access with generic types (bug #78431).
631
632 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
633
634         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
635         to make life easier for people cross-compiling that insist on not
636         using scratchbox.
637
638 2007-01-17 Mark Mason <mason@broadcom.com>
639
640         * inssel-long.brg: patch to deal with mips missing flags
641         * inssel-long32-mips.brg: implement overflow checks
642         * insset-mips.brg: implement overflow checks
643         * mini-mips.h: implement conditional exception handling
644         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
645           Remove unused code, minor cleanups.
646         * exceptions-mips.c: minor cleanups
647         * mini-ops.h: add mips conditional exception ops
648         * cpu-mips.md: add mips conditional exception ops
649
650         
651 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
652
653         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
654         to deal with mips missing of flags.
655
656 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
657
658         * exceptions-ppc.c: execute fault handlers.
659
660 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
661
662         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
663
664 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
665
666         * mini.c: handle also floating point values in initialize_array.
667
668 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
669
670         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
671         array initialization and make it conditional on the intrins option.
672
673 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
674
675         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
676         relocations and put the patch info names close to the enum definition.
677
678 2007-01-15 Mark Mason <mason@broadcom.com>
679
680         * basic.cs, exceptions.cs: break up large tests to increase debugability.
681
682 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
683
684         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
685
686 2007-01-12  Raja R Harinath  <rharinath@novell.com>
687
688         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
689
690 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
691
692         * Makefile.am: distribute the mips sources.
693
694 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
695
696         * mini-codegen.h: handle bug #80489 here, by excluding ecx
697         directly.
698
699 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
700
701         * cpu-x86.md: back out for now as this triggers other regressions.
702
703 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
704
705         * cpu-x86.md: force src1 and dest regpair for long shift instructions
706         to eax:edx, so ecx can't get allocated to them (bug #80489).
707
708 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
709
710         * mini.c, mini-exceptions.c: enabled running fault handlers
711         (bug #80469).
712
713 2007-01-03  Miguel de Icaza  <miguel@novell.com>
714
715         * driver.c: If nothing fail, do not use the string "failed",
716         because it makes it very annoying to view test result logs on the
717         web. 
718
719 2006-12-30  Miguel de Icaza  <miguel@novell.com>
720
721         * debug-debugger.c (mono_debugger_main): Rename "main" to
722         "main_method" to prevent a warning.
723
724         Remove a warning for unused field.
725
726 2006-12-28  Martin Baulig  <martin@ximian.com>
727
728         * debug-debugger.c
729         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
730
731 2006-12-22  Martin Baulig  <martin@ximian.com>
732
733         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
734         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
735         seperate `.mdb_debug_info' section, so we can access it from the
736         debugger even if the binary is stripped.
737
738         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
739         from the `.mdb_debug_info' here to prevent the linker from
740         removing that section.
741
742         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
743         mdb-debug-info64.s.
744
745 2006-12-19  Robert Jordan  <robertj@gmx.net>
746
747         * mini-x86: enable the code to return small structures in
748         registers for FreeBSD as well. Fixes bug #80278.
749         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
750
751 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
752
753         * mini-x86.c: align the stack when calling the profiler
754         function instrumenting the prolog (on OSX).
755
756 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
757
758         * mini.c: emit a break opcode where Debugger.Break () is called.
759
760 2006-12-13  Miguel de Icaza  <miguel@novell.com>
761
762         * mini.c (mono_method_to_ir): Provide useful information on this
763         assert, to prevent others from debugging like I did.
764
765 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
766
767         * mini.c: enable code which was incorrectly commented
768         (bug #80235).
769
770 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
771
772         * mini-x86.c: enable on OSX, too, the code to return small
773         structures in registers.
774
775 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
776
777         * mini-x86.c: remove the use of the dynamic code manager here, too.
778
779 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
780
781         * mini.h, debug-debugger.c, tramp-*.c: fixed 
782         mono_debugger_create_notification_function() to use
783         mono_global_codeman_reserve () instead of a dynamic code manager.
784
785 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
786
787         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
788         ves_array_element_address() jit icall and use a generated
789         managed method instead (which is about 4 times faster for a rank 3
790         array access).
791
792 2006-11-29  Mark Mason  <mason@broadcom.com>
793
794         * basic-calls.cs: additional tests for passing
795         structures as function arguments.
796
797 2006-11-29  Mark Mason  <mason@broadcom.com>
798
799         * mini-mips.h: disable custom exception handling
800         * mini-mips.c: throw/rethrow should use jalr to call
801         exception stubs.  Fixed bug with passing structures
802         by value. More support for tracing floating point
803         functions.
804
805 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
806
807         * mini.c: fixed typo in the soft-float ldind.r4 handling
808         (bug #80086).
809
810 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
811
812         * mini.c, mini.h, driver.c: added --runtime command line
813         option to select a different runtime than the autodetected one.
814         * jit.h: added API for embedders to initialize with a specific
815         runtime version.
816
817 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
818
819         * mini.c: handle also boxing of r4 values (bug #80024).
820
821 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
822
823         * mini-ppc.c: force indirect calls until we reserve
824         enough address space for all the generated code.
825
826 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
827
828         * exceptions-arm.c: workaround bugs in the libc definition
829         of struct ucontext.
830
831 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
832
833         * inssel.brg: fixes from me and Mark Mason.
834
835 2006-11-23  Dick Porter  <dick@ximian.com>
836
837         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
838         semaphore display now we've fixed the initial value
839
840 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
841
842         * inssel.brg: partially revert the last change to fix the build.
843
844 2006-11-21  Mark Mason  <mason@broadcom.com>
845
846         * inssel.brg: Add and use compare-and-branch macros to support
847         architectures that do not have condition code registers (ie. MIPS).
848         * *-mips.{c,brg,md}: Fix copyright statements
849
850 2006-11-20  Mark Mason  <mason@broadcom.com>
851
852         * Makefile.am: remove mini-codegen.c from list of MIPS sources
853         * mini.c: Allow GET_CONTEXT to be specified by the arch port
854         * mini.h: Added declaration for mono_print_ins()
855         * mini-codegen.c: added ins_spec initializer for MIPS
856         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
857         vreg to be virtual and hreg to be non-virtual.
858         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
859         is not yet working/implemented correctly.
860         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
861         non-static, fixup calls to print_ins() from other parts in the file.
862
863 2006-11-20  Mark Mason  <mason@broadcom.com>
864
865         * basic-calls.cs: added tests for passing structures as arguments
866         to calls.
867
868 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
869
870         * inssel-long32.brg: optimize signed division by power of two.
871
872 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
873
874         * mini-arm.c: added support for interworking with thumb code
875         (mono must be still be built using the ARM instruction encoding).
876
877 2006-11-19  Miguel de Icaza  <miguel@novell.com>
878
879         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
880         verifier has different rules for it.   Fixes a few verifier issues
881         in the test suite.
882
883         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
884         at the end, so people know what happened.
885
886 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
887
888         * brach-opts.c: in optimize_exception_target() make sure we
889         are in a catch clause (fixes bug #79871).
890
891 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
892
893         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
894         more soft-float support fixes.
895
896 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
897
898         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
899         that are passed half on the stack and half in registers.
900
901 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
902
903         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
904         more mips integration work from Mark E Mason 
905         <mark.e.mason@broadcom.com>.
906
907 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
908
909         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
910         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
911         tramp-mips.c: added sources for the mips port, not
912         integrated in the build yet. Contributed by
913         Mark E Mason <mark.e.mason@broadcom.com>.
914
915 2006-11-14  Neale Ferguson <neale@sinenomine.net>
916
917         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
918
919 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
920
921         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
922         put the soft-float rules in its own file since it seems to
923         break s390 compilation.
924
925 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
926
927         * mini-arm.c: fixed wrnings.
928
929 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
930
931         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
932         inssel-arm.brg: ARM support for soft-float.
933
934 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
935
936         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
937         loads and stores of 32 bit fp values.
938
939 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
940
941         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
942
943         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
944         works. Fixes #79852 and #79463.
945
946 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
947
948         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
949         more soft-float support WIP and fixes.
950
951 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
952
953         * mini-arm.c: some VFP updates.
954
955 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
956
957         * mini-exceptions.c: 0 is a valid local var offset in some
958         architectures, don't assert (bug #78508).
959
960 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
961
962         * exceptions-arm.c: fixed off by one error in stack walk code.
963
964 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
965
966         * mini.h, mini.c: more precise tracking of type load exceptions.
967
968 2006-11-03  Robert Jordan  <robertj@gmx.net>
969
970         * Makefile.am: [WIN32] Add monow.exe target.
971         * driver.c: [WIN32] Don't detach the console when debugging.
972         Fixes bug #79797.
973         
974 2006-10-30  Miguel de Icaza  <miguel@novell.com>
975
976         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
977
978 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
979
980         * aot-compiler.c (emit_method_info): Add a case missed earlier.
981
982         * driver.c (mini_regression): Fix --regression with AOT.
983
984         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
985
986 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
987
988         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
989
990         * mini-sparc.h: Don't use sigaction on sparc/linux.
991
992         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
993
994         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
995
996         * mini-exceptions.c: Add proper include files for getpid ().
997
998 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
999
1000         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
1001         address instead of a MonoJitInfo* to avoid decoding the exception info for the
1002         method.
1003
1004         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
1005         name cache to reduce its size.
1006
1007         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
1008
1009 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * mini-x86.c: Save/restore the current LMF structure more efficiently using
1012         the mono_lmf TLS variable.
1013
1014         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
1015         trampoline lmf frames.  
1016
1017         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
1018
1019 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
1022         the mono_lmf TLS variable.
1023
1024         * mini-exceptions.c: Access the LMF structure through accessors.
1025
1026         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
1027         variable instead of in jit_tls->lmf.
1028
1029         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
1030         
1031         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
1032         trampoline lmf frames.
1033
1034         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
1035
1036 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
1037
1038        * mini.c trace.c mini-x86.c: Revert these too.
1039         
1040        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
1041        signature change.
1042
1043 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
1044
1045         * genmdesc.c: removed now dead code.
1046
1047 2006-10-09  Robert Jordan <robertj@gmx.net>
1048
1049         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
1050
1051 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
1052
1053         * mini.h: do not leave gaps in the opcode values.
1054
1055 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
1056
1057         * jit-icalls.h: flag functions as internal here, too.
1058
1059 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
1060
1061         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
1062         functions with the internal attribute.
1063
1064 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
1065
1066         * aot-compiler.c: fclose the file descriptor in the profile read loop.
1067
1068 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
1069
1070         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
1071         for soft-float.
1072
1073 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
1076         tail calls as on other platforms.
1077
1078         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
1079
1080         * iltests.il: Add a few tailcall tests.
1081
1082 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1083
1084         * driver.c: fix loop for old compilers (bug #79521).
1085
1086 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
1087
1088         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
1089
1090         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
1091
1092         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
1093         metadata without any code.
1094
1095         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
1096         more precise debugging information using gdb.
1097
1098 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * inssel-ia64.brg: Make the helper methods static.
1101
1102 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1103
1104         * inssel-x86.brg: make the helper methods static.
1105
1106 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
1107
1108         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
1109
1110 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1111
1112         * mini.c: updates for monoburg changes.
1113         * inssel.brg: make a few helper functions static as they should.
1114
1115 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
1116
1117         * Makefile.am: Move mini-codegen.c to common_sources.
1118
1119 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1120
1121         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
1122         instructions.
1123         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
1124         mini-ppc.h: port to use the common local register allocator.
1125
1126 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * mini.h: Remove the comment too then.
1129
1130 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
1131
1132         * mini.h: put back backend.data which is to be used shortly and
1133         doesn't increase the size of MonoInst. If any 64 bit arch aligned
1134         pointers on 4 byte boundaries it'd have much bigger issues running
1135         and you can ifdef it out anyway.
1136
1137 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
1140         MonoInst size by 4 bytes on 64 bit machines.
1141
1142 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
1143
1144         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
1145         replacement with more meaningful field names. Arch maintainers, please
1146         check the assigned names are good enough for your arch.
1147
1148 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1149
1150         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
1151         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
1152
1153 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
1154
1155         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
1156         relocations and memory requirements, put the optimization flags
1157         definitions in their own file.
1158
1159 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
1162
1163         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
1164
1165 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
1168
1169 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
1170
1171         * inssel.brg: use the correct function to get the size of an item
1172         in an array, given an element class.
1173         * aot-compiler.c: do not access class->class_size directly.
1174
1175 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
1176
1177         * mini.h, debug-mini.c: added a debugging function to print
1178         info about local variables and arguments in a jitted method.
1179
1180 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1183
1184         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
1185
1186 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1187
1188         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
1189         inner and outer loops when passing vtypes.
1190
1191 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
1192
1193         * mini-ppc.c: take into account the cpu errata for cache flushing
1194         which caused some random errors (bug #79381).
1195
1196 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
1199         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
1200
1201 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
1204         loaded.
1205
1206         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
1207         freebsd ports tree.
1208
1209         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
1210         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
1211
1212         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
1213         displacement.
1214
1215 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
1218
1219 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
1222         macro does not have to be changed during debugging.
1223
1224         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1225
1226         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
1227
1228         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
1229         
1230         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
1231         MONO_ARCH_NO_EMULATE_MUL is defined.
1232
1233         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
1234
1235         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
1236
1237         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
1238
1239         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
1240         
1241 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
1244         stuff to mini-exceptions.c where it is used.
1245
1246         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
1247         setup code, the real one is in mini-exceptions.c.
1248
1249         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
1250         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
1251         some changes from the freebsd ports tree.
1252
1253         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
1254         constants.
1255         
1256         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
1257
1258 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
1259
1260         * mini.c: on Linux, check for /proc to be mounted
1261         (bug# 79351, novell bug#201204).
1262
1263 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
1264
1265         * mini.c: handle cases where pthread_attr_getstack() behaves
1266         incorrectly (bug #78096).
1267
1268 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
1269
1270         * mini-arm.c: support larger stack frames (bug #79272).
1271
1272 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
1275
1276         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
1277         tokens.
1278
1279         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
1280         mono_class_from_name () to find a class from its name.
1281
1282         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
1283
1284 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
1287
1288 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
1289
1290         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
1291
1292 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
1295         callinfo->trampoline.
1296
1297         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
1298         fixes #79271.
1299         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
1300         future.
1301
1302 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
1305
1306 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
1309         stats.method_trampolines, it is already done by the generic trampoline code.
1310
1311         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
1312         
1313 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
1316
1317         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
1318
1319         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
1320
1321         * mini.c (print_jit_stats): Print mscorlib mempool size too.
1322         
1323         * mini.c (print_jit_stats): Print new stats.
1324
1325         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1326
1327 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
1330         Address on two dimensional arrays. Fixes #78729.
1331
1332         * mini.h (MonoCompile): Add a 'skip_visibility' field.
1333
1334         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
1335         a method.
1336
1337         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
1338
1339         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
1340         #79130.
1341         
1342         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
1343         a race condition.
1344         (mini_get_ldelema_ins): Ditto.
1345
1346 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
1347
1348         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
1349         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
1350         Fixes #79213.
1351
1352 2006-08-29 Neale Ferguson <neale@sinenomine.net>
1353
1354         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
1355         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
1356
1357         * exceptions-s390x.c: Cosmetic change.
1358
1359         * tramp-s390.c: Fix warning.
1360
1361         * cpu-s390.md: Correct length of mul_imm.
1362
1363 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
1364
1365         * aot-compiler.c: added binary writer with ELF backend
1366         implementation (only on Linux/x86 for now).
1367
1368 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * Makefile.am: Don't run net 2.0 AOT tests.
1371
1372         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
1373         (mono_compile_assembly): Skip net 2.0 assemblies as well.
1374
1375         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
1376
1377 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
1378
1379         * aot-compiler.c: simplified and refactored the asm-writing code
1380         to allow different backends.
1381
1382 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
1383
1384         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1385
1386         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
1387         little. Share patches of type TYPE_FROM_HANDLE as well.
1388
1389         * mini.c (mono_patch_info_equal): New helper function.
1390         (mono_patch_info_hash): Ditto.
1391
1392         * aot-compiler.c (emit_method_code): Fix s390 build.
1393
1394         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
1395         is not handled because it is stored as a flag and not as a type ctor. Fixes
1396         #79016.
1397
1398 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * aot-compiler.c: Fix computation of GOT slot statistics.
1401         
1402         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
1403         Also remove support for not PIC AOT.
1404
1405         * mini.h: Bump AOT file format version.
1406
1407         * objects.cs: Add a test for #78990.
1408
1409         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
1410         (peter.dettman@iinet.net.au). Fixes #79087.
1411
1412         * basic-long.cs: Add a test for the above.
1413
1414 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
1417         
1418         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
1419         code somewhat.
1420
1421 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
1424         exceptions.
1425
1426 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
1427
1428         * mini.c: Don't verify COM proxy invoke calls
1429         
1430
1431 2006-08-10  Dick Porter  <dick@ximian.com>
1432
1433         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
1434         which process is holding semaphores locked.
1435
1436 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * mini-ia64.c mini-amd64.c: Fix #79027.
1439
1440         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
1441
1442         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
1443
1444         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
1445         implicit arguments in a vararg call. Fixes #79027.
1446
1447 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
1448
1449         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
1450         (mono_get_array_new_va_signature): Ditto.
1451
1452 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * aot-runtime.c: Call init_plt lazily.
1455
1456         * inssel-long.brg: Fix unsigned long->int conversion.
1457
1458         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
1459
1460         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
1461         that most data is now in the .rss/.data section.
1462
1463 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
1466
1467         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
1468
1469         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
1470
1471         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
1472
1473         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
1474         virtual call. Fixes #79010.
1475
1476         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
1477         and use the result as the this argument in the real call.
1478
1479         * generics.2.cs: Add a new test for #79010.
1480         
1481 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * mini-x86.c: Fix a warning.
1484
1485         * aot-compiler.c: Add a bunch of statistics.
1486
1487         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
1488
1489 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
1492
1493 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1496
1497 2006-07-13  Miguel de Icaza  <miguel@novell.com>
1498
1499         * mini.c (mono_method_to_ir): Obtain the original method in the
1500         CIL stream and use this to perform validation.
1501
1502         Fixed: #78816
1503
1504 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
1507         (mono_arch_call_opcode): Ditto.
1508
1509         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
1510         #78826.
1511
1512         * mini.c (mono_patch_info_dup_mp): New helper function.
1513         
1514         * aot-compiler.c (compile_method): Fix some of the memory allocated during
1515         compilation. Fixes #78827.
1516
1517 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
1518
1519         * declsec.c: Use original security informations for
1520           MONO_WRAPPER_MANAGED_TO_MANAGED.
1521
1522 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
1523
1524         * mini.c: Allow Com Interop methods/classes and
1525         don't verify COM wrapper calls
1526         
1527
1528 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * inssel-long32.brg: Fix long->i4 checked conversion.
1531
1532         * exceptions.cs: Add a test for the above.
1533
1534 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
1537
1538         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
1539         leaks.
1540
1541         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
1542         #78775.
1543
1544 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
1545
1546         * mini.c: Fix solaris/x86 exception handling.
1547
1548         * Makefile.am: Get rid of $(ICU_LIBS).
1549
1550 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
1553         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
1554         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
1555
1556         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
1557
1558         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
1559         this function causes a SIGSEGV.
1560
1561 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
1562
1563         * mini.c: Remove unused solaris/x86 includes.
1564
1565 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
1568
1569 2006-06-20  Jb Evain  <jbevain@gmail.com>
1570
1571         * cpu-g4.md: fix max length of start_handler instruction.
1572
1573 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
1574         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
1575
1576 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
1577         * ssa.c: Fixed bug 78653 for SSA based deadce.
1578         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
1579         MonoInst.flags, used in SSA based deadce.
1580         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
1581         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
1582
1583 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
1584
1585         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
1586         it can end up using non executable memory on ppc64 systems
1587         running ppc32 userspace (fix from Johannes Berg).
1588
1589 2006-06-14  Dick Porter  <dick@ximian.com>
1590
1591         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
1592         4.1.1
1593
1594 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
1595         * mini.c: Made so that inline is locally disabled if it would
1596         trigger a .cctor, because too many apps depend on this behavior
1597         (which seems to be also the one of the MS CLR).
1598
1599 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
1602         No idea why this worked before.
1603
1604         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
1605         which branch to outer exception clauses since they could skip the
1606         inner finally clauses. Fixes #78633.
1607
1608         * exceptions.cs: Add a test for the above.
1609
1610         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
1611         Fixes #78629.
1612
1613         * iltests.il: Add a test for the above.
1614
1615 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
1618         after the end of a try bblock, to prevent asserts in mini_method_compile ().
1619
1620         * iltests.il: Add a test for the above.
1621
1622 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
1623
1624         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
1625         
1626         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
1627         methods as instrinsics.
1628
1629 2006-06-09  Wade Berrier <wberrier@novell.com>
1630
1631         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
1632         (simple-cee-ops.h ssapre-mini-ops.h)
1633
1634 2006-06-09  Neale Ferguson <neale@sinenomine.net>
1635
1636         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
1637         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
1638         instruction).
1639         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
1640         * cpu-s390x.md: Fix max. length values for a couple of instructions.
1641
1642 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
1643
1644         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
1645
1646 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
1647
1648         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
1649         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
1650         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
1651         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
1652         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
1653         of opcodes, so that bug 78549 should not happen again.
1654         * ssapre.c: Updated to use the renamed files.
1655
1656 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
1659         in OP_ATOMIC_EXCHANGE_I4.
1660
1661 2006-06-07  Wade Berrier <wberrier@novell.com>
1662
1663         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
1664         in mono_debugger_create_notification_function)
1665
1666 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
1669         
1670         * mini.c (type_from_stack_type): Disable some changes which do not
1671         seem to work.
1672
1673         * driver.c: Reenable opts.
1674
1675         * mini.h (MonoStackSlot): New structure to keep track of the verification state
1676         of the evaluation stack.
1677         
1678         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
1679         evaluation stack trace at entry to the bblock.
1680
1681         * mini.c (merge_stacks): New function to perform verification of stack merges.
1682         Turned off by default.
1683
1684         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
1685         STACK_MP.
1686         
1687 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
1688
1689         * local-propagation.c: Fixed bug 78549.
1690
1691 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
1694
1695 2006-06-02  Miguel de Icaza  <miguel@novell.com>
1696
1697         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
1698         tramp-arm.c, tramp-ia64.c
1699         (mono_debugger_create_notification_function): Update signature to
1700         new signature and use new protocol for creating the notification
1701         function.  
1702
1703         Should fix the build.
1704
1705 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
1706
1707         * exceptions-ppc.c (mono_jit_walk_stack)
1708         (ves_icall_get_frame_info): Fix the build
1709
1710 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
1713
1714 2006-05-31  Raja R Harinath  <rharinath@novell.com>
1715
1716         * il2tests.2.il: New file for generics CIL tests.  Add test for
1717         #78019.
1718         * Makefile.am: Update.
1719
1720         Fix #78019
1721         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
1722         to nullable types.
1723
1724 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
1725
1726         * aliasing.c: Fixed bug 78311.
1727
1728 2006-05-29  Martin Baulig  <martin@ximian.com>
1729
1730         * mini-exceptions.c (mono_find_jit_info): When computing the
1731         native offset, check whether we're actually inside the method's
1732         code; call mono_debug_print_stack_frame() to format the frame.
1733         (ves_icall_System_Exception_get_trace): Call
1734         mono_debug_print_stack_frame() to format the stack frame.
1735         (ves_icall_get_trace): Update to the new debugging API.
1736         (mono_jit_walk_stack_from_ctx): Likewise.
1737         (ves_icall_get_frame_info): Likewise.
1738
1739         * mini.c (get_method_from_ip): Use the new debugging API.
1740         (mono_print_method_from_ip): Likewise.
1741
1742         * exceptions-ppc.c
1743         (mono_jit_walk_stack): Use the new debugging API.
1744         (ves_icall_get_frame_info): Likewise.   
1745
1746 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
1749
1750 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
1751
1752         * mini.c: Added "limitator" to inline for debugging.
1753
1754 2006-05-24  Martin Baulig  <martin@ximian.com>
1755
1756         * debug-debugger.c (mono_debugger_init): Create a private,
1757         malloc()-based code manager for the notification function and
1758         intentionally leak it on exit.  This fixes the crash-on-exit race
1759         condition.
1760
1761         * tramp-amd64.c
1762         (mono_debugger_create_notification_function): Added
1763         `MonoCodeManager *' argument.
1764
1765         * tramp-x86.c
1766         (mono_debugger_create_notification_function): Added
1767         `MonoCodeManager *' argument.
1768
1769 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
1770
1771         * aliasing.c: Fixed 64 bit issue.
1772         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
1773         default since all known bugs are fixed (one more time!).
1774
1775 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
1776
1777         * mini.c: write barrier support.
1778
1779 2006-05-23  Martin Baulig  <martin@ximian.com>
1780
1781         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
1782         check at the top of the file.
1783
1784 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
1785
1786         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
1787         reverting changes without reason and without changelog entries.
1788
1789 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
1792         to a few opcodes. Fixes #78439.
1793
1794         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
1795         consistency with other archs.
1796
1797         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
1798
1799 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
1800
1801         * debug-debugger.c: fix the build.
1802
1803 2006-05-17  Martin Baulig  <martin@ximian.com>
1804
1805         * debug-debugger.c
1806         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
1807         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
1808         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
1809         (debugger_attach): Call GC_mono_debugger_add_all_threads().
1810
1811 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
1814
1815 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
1818         MONO_TYPE_GENERICINST.
1819         
1820         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
1821         MONO_TYPE_GENERICINST.
1822
1823 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
1824
1825         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
1826         #78325.
1827
1828 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
1831         mempool.
1832         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
1833
1834 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
1837         mono_trace_cleanup ().
1838
1839         * iltests.il: Fix problem with the newly added test.
1840
1841         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
1842         due to register constraints, free up the previous hreg. Fixes #78314.
1843
1844         * iltests.il: Add new test for #78314.  
1845
1846         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
1847         Interlocked.Add. Fixes #78312.
1848
1849         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
1850         
1851 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * inssel.brg (mini_emit_virtual_call): Fix a warning.
1854
1855 2006-05-05  Martin Baulig  <martin@ximian.com>
1856
1857         * debug-mini.c (mono_debug_open_block): New method.
1858
1859         * mini-amd64.c
1860         (mono_arch_output_basic_block): Call mono_debug_open_block() at
1861         the beginning of each basic block.
1862
1863         * mini-x86.c
1864         (mono_arch_output_basic_block): Call mono_debug_open_block() at
1865         the beginning of each basic block.
1866
1867 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
1868
1869         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
1870         default until I understand why they break the build on amd64.
1871
1872 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * mini.c (mini_cleanup): Call mono_cleanup ().
1875
1876         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
1877         errors.
1878
1879 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
1880
1881         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
1882         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
1883         default since all known bugs are fixed, and I cannot reproduce bug
1884         77944... I'm asking Matt Hargett to test again after this commit.
1885
1886 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
1887
1888         * mini-codegen.c: Fixed typo that thrashed inline.
1889
1890 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * dominators.c (compute_dominators): Avoid using a worklist since
1893         it is not correct in some cases. Instead, iterate over all bblocks as
1894         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
1895
1896 2006-04-28  Miguel de Icaza  <miguel@novell.com>
1897
1898         * mini.c (mono_jit_compile_method_inner): Use
1899         mono_prepare_exception_from_error that resets the value
1900         internally.
1901
1902 2006-04-27  Miguel de Icaza  <miguel@novell.com>
1903
1904         * mini.c: Move the mini_loader_error_to_exception to metadata. 
1905         
1906 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
1907
1908         * aliasing.c: Fixed bug 78210.
1909
1910 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
1911
1912         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
1913         default until all their problems (or the ones they trigger) are fixed.
1914
1915 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
1918         
1919         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
1920         as loaded only after resolving patches since that could invoke the same method.
1921
1922         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
1923
1924         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
1925         functions.
1926
1927         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
1928         AOT loader.
1929
1930         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
1931         stack.
1932
1933         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
1934         made from AOT code through the PLT table.
1935
1936         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
1937         holding the plt offset when a call is made to the aot plt trampoline.
1938         
1939 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
1942         amd64 AOT support.
1943
1944         * Makefile.am (common_sources): Fix build breakage.
1945
1946         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
1947         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
1948         intra-assembly calls if possible.
1949         
1950         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
1951
1952         * mini-trampolines.c: Handle PLT entries.
1953
1954         * mini.c: Avoid creating a GOT var for calls.
1955
1956         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
1957         from mscorlib code.
1958
1959         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
1960         from mscorlib code.
1961
1962         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
1963         AOT code.       
1964
1965         * mini.h: Bump AOT file format version.
1966         
1967         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
1968         covers more cases.
1969
1970 2006-04-25  Martin Baulig  <martin@ximian.com>
1971
1972         * driver.c: Disable copyprop, consprop and inline when running
1973         inside the debugger.
1974
1975 2006-04-25  Martin Baulig  <martin@ximian.com>
1976
1977         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
1978         with `get_current_thread' and added `detach'.
1979         (MonoDebuggerMetadataInfo): Added `thread_size',
1980         `thread_tid_offset', `thread_stack_ptr_offset' and
1981         `thread_end_stack_offset'.
1982
1983 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
1986         aot-runtime.c.
1987
1988         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
1989         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
1990
1991         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
1992
1993         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
1994
1995         * aot.c: Add support for ADJUSTED_IID.  
1996
1997 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * aot.c (emit_method_order): Don't align method_order_end.
2000
2001         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
2002         the interface ID changes.
2003
2004 2006-04-21  Dick Porter  <dick@ximian.com>
2005
2006         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
2007         cleaning up a thread.  Fixes the new part of bug 77470.
2008
2009 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
2010
2011         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
2012         to managed wrapper.
2013                      
2014 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
2017         
2018         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
2019         SIGSEGV. Fixes #78072.
2020
2021         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
2022         unregister our SIGABRT handler.
2023
2024 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
2025
2026         * mini.c: Disabled inline where it can alter the call stack in a
2027         way visible from managed code.
2028         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
2029         default.
2030
2031 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
2034         on other platforms. Fixes #78089.
2035
2036 2006-04-13  Martin Baulig  <martin@ximian.com>
2037
2038         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
2039         determine whether we're inside the debugger.
2040
2041         * debug-debugger.h
2042         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
2043
2044 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
2047         handler clauses. Fixes #78024.
2048
2049         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
2050         in the CALL_MEMBASE opcodes. Fixes #78088.
2051         (mono_arch_get_vcall_slot_addr): Ditto.
2052
2053 2006-04-10  Martin Baulig  <martin@ximian.com>
2054
2055         * debug-debugger.c: The thread handling code has now been moved
2056         into ../metadata/threads.c.
2057
2058 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * driver.c (mono_main): Fix --with-gc=none build.
2061
2062         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
2063         (mono_spillvar_offset_float): Ditto.
2064         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
2065         hreg, not when its !global, since on ia64, there is a third category: stacked
2066         registers.      
2067
2068 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
2069
2070         * mini.c: set MonoInst->klass for load field address and a few other
2071         places.
2072
2073 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
2076
2077 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
2080         the branch opt changes.
2081
2082 2006-04-06  Dick Porter  <dick@ximian.com>
2083
2084         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
2085         
2086         * wapihandles.c (mini_wapi_seminfo): 
2087         * driver.c (mono_main): Add semaphore info option
2088
2089 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
2092         branch optimization changes. Fixes #78009.
2093
2094 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
2095
2096         * mini.c: ignore accessibility of methods in managed->native wrappers.
2097
2098 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
2101         
2102         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
2103
2104 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * mini.c: Modify the branch optimizations to preserve the invariant that
2107         the entries inside the in_bb and out_bb arrays are unique.
2108         (mono_unlink_bblock): Avoid creation of new arrays.
2109
2110 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * mini.c (mono_unlink_bblock): Fix regression caused by previous
2113         change (#77992).
2114
2115 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini.c (optimize_branches): Remove the "optimizations" in
2118         the cbranch1/cbranch2 -> branch cases which were causing several
2119         problems in the past. Fixes #77986.
2120
2121 2006-03-31  Chris Toshok  <toshok@ximian.com>
2122
2123         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
2124         default optimizations :(
2125
2126 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
2129         branch.
2130
2131 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
2132
2133         * local-propagation.c: Added comments to structs and removed
2134         "Mono" prefixes from local tree mover types.
2135
2136 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * Makefile.am (arch_sources): Define this for each architecture so 
2139         libmono_la_SOURCES is defined in one place.
2140
2141 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
2142
2143         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
2144         from handles/.
2145
2146 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
2147
2148         * driver.c: print the GC name supplied by configure.
2149
2150 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
2151
2152         * local-propagation.c: Added tree mover, and moved here all the
2153         local propagation code from mini.c
2154         * mini.c: Added support for treeprop, and moved all the local
2155         propagation code to local-propagation.c
2156         * mini.h: Added support for treeprop
2157         * driver.c: Added support for treeprop, enabled consprop, copyprop,
2158         treeprop, inline and deadce by default
2159         * Makefile.am: Added local-propagation.c
2160
2161 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
2162
2163         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
2164
2165 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
2166
2167         * debug-debugger.c: make it compile without the Boehm GC.
2168
2169 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2170
2171         * mini.c: fixed issue with mismatch when an icall is registered
2172         with multiple names but same address.
2173
2174 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
2175
2176         * declsec.c, mini-exceptions.c: use write barrier to set reference
2177         fields of managed objects.
2178
2179 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
2182         (can_access_internals): Fix a warning.
2183
2184         * mini.c (print_method_from_ip): Rename this to 
2185         mono_print_method_from_ip so it gets exported.
2186
2187         * trace.c: Deal with strings inside StringBuilder's containing garbage
2188         and fix memory leaks. Fixes #77848.
2189
2190 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
2193         fixes #77787.
2194
2195 2006-03-16 Neale Ferguson <neale@sinenomine.net>
2196         
2197         * mini-s390.c: Remove OP_X86_TEST_NULL.
2198
2199 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
2200
2201         * mini.c: use the correct GetHashCode() for the moving collector.
2202
2203 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
2204
2205         * liveness.c: Regalloc spill cost tuning.
2206
2207 2006-03-15 Neale Ferguson <neale@sinenomine.net>
2208         
2209         * mini-s390x.h: Correct S390_LONG macro.
2210
2211         * mini-s390x.c: Cleanup unused code.
2212
2213 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * jit-icalls.h: New file.
2216
2217         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
2218         icalls and include that instead of including jit-icalls.c.
2219
2220         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
2221         OP_X86 opcodes.
2222
2223 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
2224
2225         * mini.c: when checking for member accessibility, also check for
2226         friend assemblies and for explicit interface implementations.
2227
2228 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
2231
2232         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
2233
2234         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
2235         common cases are done first.    
2236
2237         * mini-ops.h: Only define platform specific opcodes on the given platform.
2238
2239         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
2240         branch.
2241         
2242 2006-03-14  Martin Baulig  <martin@ximian.com>
2243
2244         Revert Paolo's change from r57348:
2245
2246         * mini.h: don't use gboolean for bitfields.
2247         * mini.c: verifier changes for fields and methods accessibility.
2248
2249 2006-03-13  Neale Ferguson <neale@sinenomine.net>
2250
2251         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
2252
2253         * mini-s390x.c: Fix conv_r_un.
2254
2255         * cpu-s390, cpu-s390x.md: Fix lengths.
2256
2257 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
2258
2259         * mini.c: nested types have access to all the nesting
2260         levels, not just the enclosing types.
2261
2262 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
2263
2264         * mini.c: added a few more verification checks.
2265
2266 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
2267
2268         * liveness.c: Merge optimizations from the linear-il branch.
2269
2270 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
2271
2272         * mini-ia64.c (emit_call): Add a comment.
2273
2274         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
2275
2276         * tramp-ia64.c: Fix some warnings.
2277
2278 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
2279
2280         * mini.h: don't use gboolean for bitfields.
2281         * mini.c: verifier changes for fields and methods accessibility.
2282
2283 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
2286         lazy icall wrapper changes.
2287
2288         * dominators.c: Replace all the dominator algorithms with faster
2289         ones from the linear-il branch.
2290
2291         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
2292         the mempool.
2293
2294         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
2295         common cases are done first.
2296
2297         * mini-amd64.c: Fix some warnings.
2298
2299         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
2300         from the mempool.
2301
2302         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
2303         added code.
2304
2305         * mini.h: Add a missing prototype.
2306
2307 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * mini.c: Compile icall wrappers lazily.
2310
2311         * mini-codegen.c: Use printf instead of g_print since its much faster.
2312
2313         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
2314         function.
2315
2316         * mini.c (optimize_branches): Cache the negative result from 
2317         remove_block_if_useless ().
2318
2319         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
2320         Also fix some bblock linking issues.
2321
2322         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
2323         assembly files.
2324
2325         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
2326
2327         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
2328         accessed fields first, for better cache behavior.
2329         
2330 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
2331
2332         * mini.c: speedup IList<T> array accesses.
2333
2334 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
2335
2336         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
2337         inline_costs counter. Fixes #77190.
2338
2339 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
2342         trace messages. Fixes #77706.
2343
2344 2006-03-04  Martin Baulig  <martin@ximian.com>
2345
2346         * tramp-amd64.c, tramp-x86.c
2347         (mono_debugger_create_notification_function): Use
2348         mono_global_codeman_reserve() to allocate a buffer at runtime and
2349         return it.
2350
2351         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
2352
2353         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
2354         notification function at runtime and then call `initialize' in the
2355         `MONO_DEBUGGER__debugger_info' vtable.
2356
2357 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * iltests.il: Fix a visibility problem.
2360
2361 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
2362
2363         * driver.c, mini.c: add hooks for the counters API.
2364
2365 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
2366
2367         * driver.c: show disabled options.
2368
2369 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
2370
2371         * linear-scan.c: always use cost-driven selection.
2372
2373 2006-02-28  Raja R Harinath  <rharinath@novell.com>
2374
2375         * jit-icalls.c (helper_compile_generic_method): Revert change from
2376         2006-02-24.
2377
2378 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
2379
2380         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
2381
2382 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
2383
2384         * inssel.brg: style fixes, mostly to force the updated monoburg
2385         to run for people using svn.
2386
2387 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
2388
2389         * mini.c: match monoburg changes.
2390
2391 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
2392
2393         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
2394         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
2395         declaration in the header file.
2396
2397 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
2398
2399         * helpers.c: reduce relocations and mem usage.
2400
2401 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
2402
2403         * mini.h, mini-codegen.c: disable logging features if
2404         requested by configure.
2405
2406 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
2407
2408         * mini.c: tiny verifier changes.
2409
2410 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
2411
2412         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
2413         cpu-pentium.md: stack alignment changes for osx/x86,
2414         partially from Geoff Norton <gnorton@customerdna.com>.
2415
2416 2006-02-24  Raja R Harinath  <harinath@gmail.com>
2417
2418         * jit-icalls.c (helper_compile_generic_method): Update to changes
2419         in metadata/class.c.
2420
2421 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
2422         
2423         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
2424         
2425         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
2426         interface calls with large offsets.
2427
2428 2006-02-23  Raja R Harinath  <rharinath@novell.com>
2429
2430         * jit-icalls.c (helper_compile_generic_method): Document the
2431         special-case we depend on so that we can inflate the method twice
2432         with the same context with no bad side-effects.
2433
2434 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
2435
2436         * mini-x86.c, mini-amd64.c: fix for case when xen support
2437         is disabled.
2438
2439 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
2440
2441         * mini-x86.c, mini-amd64.c: generate code to access tls items
2442         in a faster way for Xen systems.
2443
2444 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
2445
2446         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
2447         updates and compilation fixes for the OSX/x86 port, mostly from
2448         Geoff Norton <gnorton@customerdna.com>.
2449
2450 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
2451
2452         * inssel.brg: faster interface call implementation
2453         to sync with the interface_offsets MonoVTable changes.
2454
2455 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
2456
2457         * mini.c: more verification checks.
2458
2459 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
2460
2461         * mini.c: added a few more verification checks.
2462
2463 2006-02-17      Neale Ferguson <neale@sinenomine.net>
2464
2465         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
2466         facility on the processor and use it if available.
2467
2468 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
2469
2470         * driver.c, aot.c, mini.c: throw exception if the IL code is
2471         invalid or unverifiable.
2472
2473 2006-02-17  Raja R Harinath  <rharinath@novell.com>
2474
2475         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
2476         m.StructField.
2477
2478 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
2481
2482 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2483
2484         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
2485         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
2486         handling of instantiated generic valuetypes.
2487
2488 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
2489
2490         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
2491         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
2492         instead.
2493
2494         * generics.2.cs: Revert the nullable reftypes tests.
2495
2496 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
2499         using __builtin_frame_address (1) as it doesn't work in the presence
2500         of optimizations. Hopefully fixes #77273.
2501
2502         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
2503         -> generics.cs change as it doesn't work with some automake versions.
2504
2505 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
2506
2507         * mini.c: handle systems that sue a different way to
2508         retrieve the stack address of the current thread.
2509
2510 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
2513         it specially in the makefile.
2514
2515         * generics.2.cs: Add tests for nullable reference types.
2516
2517 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2518
2519         * mini.c: always handle the case when mono_jit_init()
2520         is called in a thread different from the main thread,
2521         confusing libgc (bug #77309).
2522
2523 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
2524
2525         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
2526
2527 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
2528
2529         * mini.c: change optimize_branches () to use a single loop
2530         and introduce a new optimization to simplify some range checks.
2531
2532 2006-02-03  Martin Baulig  <martin@ximian.com>
2533
2534         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
2535         and merged with debugger_thread_manager_add_thread().
2536         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
2537         inform the debugger about the main thread.
2538
2539 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
2540
2541         * basic.cs: Add test for div.un/rem.un constant folding.
2542
2543 2006-02-03  Neale Ferguson <neale@sinenomine.net>
2544
2545         * cpu-s390x.md: correct int_xor_imm length
2546
2547 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * generics.2.cs: New test for #77442.
2550
2551         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
2552         #77442.
2553
2554 2006-02-02  Martin Baulig  <martin@ximian.com>
2555
2556         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
2557         <mono/metadata/mono-debug-debugger.h>   
2558
2559         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
2560
2561 2006-02-02  Martin Baulig  <martin@ximian.com>
2562
2563         * debug-debugger.h: New header file for debug-debugger.c.
2564
2565         * debug-debugger.c: Big API cleanup; don't run the managed Main()
2566         function is a separate thread anymore; add support for attaching.
2567
2568 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * tramp-x86.c: Fix a warning.
2571
2572 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
2575         on very large methods.
2576
2577         * aot.c (load_patch_info): Fix a warning.
2578
2579 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
2580
2581         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
2582         mini-ops.h: alu membase optimizations.
2583
2584 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
2585
2586         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
2587         to speedup StringBuilder.
2588
2589 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * dominators.c (mono_compute_natural_loops): Fix detection of
2592         loop body start blocks.
2593
2594         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
2595
2596 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
2597
2598         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
2599         #75145.
2600
2601 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
2602
2603         * aliasing.c: Fixed aliasing issue on 64 bit archs.
2604
2605 2006-01-25  Martin Baulig  <martin@ximian.com>
2606
2607         * debug-debugger.c: Moved the `MonoDebuggerManager' and
2608         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
2609         started to cleanup this file a little bit.
2610
2611 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
2612
2613         * mini.c: optimize a codepath frequently happening in generics code.
2614
2615 2006-01-23  Martin Baulig  <martin@ximian.com>
2616
2617         * Makefile.am: Only compile debug-debugger.c on supported platforms.
2618
2619         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
2620         functions directly.
2621
2622         * driver.c: debug-debugger.c is only available if
2623         `MONO_DEBUGGER_SUPPORTED' is defined.   
2624
2625 2006-01-23  Martin Baulig  <martin@ximian.com>
2626
2627         * debug-debugger.c: Only enable this on platforms where the Mono
2628         Debugger is working (x86 and x86_64).
2629
2630 2006-01-21  Martin Baulig  <martin@ximian.com>
2631
2632         The Mono Debugger is now using the normal `mono' instead of the
2633         `mono-debugger-mini-wrapper' when executing managed code.
2634
2635         * debug-debugger.c: New file; previously known as
2636         debugger/wrapper/wrapper.c.
2637
2638         * debug-mini.c (mono_init_debugger): Removed.
2639
2640         * driver.c (mono_main): Added new `--inside-mdb' command line
2641         argument which is used when running inside the debugger.
2642
2643 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
2644
2645         * liveness.c (mono_analyze_liveness): Remove some unused data
2646         structures.
2647
2648 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
2651
2652 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
2655         depends on implementation details of monobitset.
2656
2657         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
2658         Fixes #77271.
2659
2660 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * liveness.c: Update after monobitset changes.
2663
2664 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
2667
2668 2006-01-11 Neale Ferguson <neale@sinenomine.net>
2669
2670         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
2671
2672         * mini-s390x.c: Remove warning messages.
2673
2674 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
2675
2676         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
2677
2678 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
2679
2680         * generics.2.cs: Add ldelem/stelem_any test.
2681
2682 2006-01-10 Neale Ferguson <neale@sinenomine.net>
2683
2684         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
2685
2686 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
2689         
2690 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * generics.2.cs: Reenable vtype tests.
2693
2694         * inssel-x86.brg: Remove an icorrect valuetype rule.
2695
2696 2006-01-06 Neale Ferguson <neale@sinenomine.net>
2697
2698         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
2699         initial support for OP_ABS.
2700
2701 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2702
2703         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
2704
2705 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2706
2707         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
2708         conversion and implement LADD/LSUB.
2709
2710         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
2711         architectures.
2712
2713 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2714
2715         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
2716
2717         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
2718         architectures.
2719
2720 2006-01-05 Neale Ferguson <neale@sinenomine.net>
2721
2722         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
2723         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
2724         (stack walk problem).
2725
2726 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * aot.c (mono_aot_load_method): Fix a warning.
2729
2730 2006-01-03  Neale Ferguson <neale@sinenomine.net>
2731
2732         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
2733
2734 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * iltests.il: Add test for #77148.
2737
2738         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
2739         #77148.
2740
2741 2006-01-03  Neale Ferguson <neale@sinenomine.net>
2742
2743         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
2744
2745 2006-01-03  Neale Ferguson <neale@sinenomine.net>
2746
2747         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
2748         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
2749
2750         * basic-long.cs: Add lconv-to-r4/r8 tests.
2751
2752 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
2755
2756         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
2757         here as on other archs.
2758
2759 2005-12-29 Neale Ferguson <neale@sinenomine.net>
2760
2761         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
2762
2763 2005-12-29 Neale Ferguson <neale@sinenomine.net>
2764
2765         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
2766         
2767         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
2768
2769         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
2770         instrument_prolog; Add memory_barrier instruction.
2771
2772 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
2775
2776 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
2779
2780         * aliasing.c inssel.brg: Fix warnings.
2781
2782         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
2783         could skip initialization of some parts of memory.
2784
2785         * mini.c mini-ia64.c: Fix warnings.
2786
2787         * inssel-sparc.brg: Add an implementation of lneg which actually works.
2788
2789 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * aliasing.c (mono_build_aliasing_information): Add a workaround for
2792         a crash seen on sparc.
2793
2794         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
2795         
2796         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
2797
2798 2005-12-21 Neale Ferguson <neale@sinenomine.net>
2799
2800         * mini-ops.h: Add s390_backchain instruction
2801
2802         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
2803
2804         * cpu-s390.md: Add s390_backchain instruction
2805
2806         * mini-s390.c: Significant ABI changes
2807
2808         * mini-s390.h: Cater for zero length structures
2809
2810 2005-12-20 Neale Ferguson <neale@sinenomine.net>
2811
2812         * mini-s390.c: ABI fixes
2813
2814         * inssel-s390.brg: Remove debug statements
2815
2816         * cpu-s390.md: Fix length of ATOMIC_xx operations
2817
2818 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * basic-float.cs: Add float<->long conversion tests.
2821
2822 2005-12-16 Neale Ferguson <neale@sinenomine.net>
2823
2824         * mini-s390.c: Fix LOCALLOC processing.
2825
2826         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
2827
2828 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
2829
2830         * iltests.il: Add tests for some opcodes not covered by the other
2831         tests.
2832
2833 2005-12-15 Neale Ferguson <neale@sinenomine.net>
2834
2835         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
2836         register loading for Tail processing; Correct trace output.
2837
2838         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
2839
2840         * cpu-s390.md: Correct size of jmp instruction. 
2841
2842 2005-12-13 Neale Ferguson <neale@sinenomine.net>
2843
2844         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
2845
2846 2005-12-13 Neale Ferguson <neale@sinenomine.net>
2847
2848         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
2849           Bring s390 up to current level.
2850
2851 2005-12-12  Zltan Varga  <vargaz@gmail.com>
2852
2853         * generics.2.cs: Disable the newly added tests as they do not work yet.
2854         
2855         * generics.2.cs: Add valuetype tests.
2856
2857 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * basic-long.cs: Add i4->u8 test.
2860
2861         * objects.cs: Add tests for JIT intrinsic.
2862
2863         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
2864         optimizations lost by a mistake.
2865
2866 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * basic-long.cs: Remove a test moved to objects.cs.
2869
2870         * arrays.cs: Add more array tests.
2871
2872 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * arrays.cs: Add new tests for multi-dimensional arrays.
2875
2876 2005-12-06  Raja R Harinath  <rharinath@novell.com>
2877
2878         * Makefile.am (test_sources2): Add generics.2.cs.
2879         (EXTRA_DIST): Add test_sources2.
2880
2881 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
2882
2883         Support for boxing and unboxing nullable types as well as the
2884         isinst operation on nullables, per the CLI ammendment.
2885
2886         * inssel.brg (CEE_ISINST): Special case for nullable
2887
2888         * mini.c (handle_unbox_nullable): new method
2889         (handle_box): Special case for nullable types
2890         (mono_method_to_ir): Call handle_unbox_nullable in correct
2891         places.
2892
2893         * generics.2.cs: New test suite
2894
2895         * Makefile.am: Support for regression tests with generics.
2896
2897 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
2900         allocated to registers. Fixes #76800.
2901
2902 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
2903
2904         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
2905
2906 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
2909         of platforms.
2910
2911 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
2914         objects.cs.
2915
2916         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
2917         
2918         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
2919 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
2920
2921         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
2922         single precision before storing to a single precision location.
2923
2924 2005-11-28  Raja R Harinath  <rharinath@novell.com>
2925
2926         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
2927
2928 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
2931         correct files.
2932
2933         * basic.cs: Remove test_0_byte_compares test which was moved to
2934         objects.cs a long time ago.
2935
2936 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
2937
2938         * aliasing.c: Fixed aliasing issue on 64 bit archs.
2939
2940 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
2943         handlers are called.
2944
2945         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
2946         throwing code.
2947
2948          * mini-ia64.c: Add support for the throw->branch exception 
2949         optimization.   
2950
2951         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
2952
2953 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
2954
2955         * mini.c: Enabled "fastpath" deadce :-)
2956         
2957 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
2958
2959         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
2960         alias analysis pass to support it.
2961         * mini.h: Likewise.
2962         * ssa.c: Likewise.
2963         * liveness.c: Likewise (liveness computation can use aliasing
2964         information to be more accurate).
2965         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
2966         moreover made so that "--compile-all" uses the given optimization
2967         flags and not the default ones.
2968         * aliasing.c: Alias analysis (new file).
2969         * aliasing.h: Likewise.
2970         * Makefile.am: added "aliasing.c" and "aliasing.h".
2971         
2972 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
2975         OP_L opcodes.
2976
2977 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
2980         fp >= end_of_stack exit condition, as it is not needed, and it might
2981         become true for fp eliminated frames.
2982
2983 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
2986         coded offsets.
2987
2988 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
2989
2990         * mini-arm.c: fixed alignment of doubles/longs to match
2991         the C ABI (bug #76635).
2992
2993 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
2994
2995         * aot.c: fix compilation with --enable-minimal=aot.
2996
2997 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
2998
2999         * mini-arm.c: fixed compatibility with the new
3000         floating point emulator package for compares.
3001
3002 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
3003
3004         * mini.c : reverted sig->pinvoke changes (r51396-51397).
3005
3006 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
3007
3008         * mini-exceptions.c (print_stack_frame): Output to stderr.
3009         (mono_handle_native_sigsegv): Ditto.
3010
3011 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3012
3013         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
3014         OP_LCONV_TO_OVF_I implementation.
3015
3016         * mini-amd64.c: Add support for the throw->branch exception 
3017         optimization.
3018
3019         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
3020         when the catch clause catches a more general exception, i.e. Object.
3021
3022 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * cpu-ia64.md: Remove unused opcodes.
3025
3026         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
3027         specific defines for architectures defining USE_SIGACTION.
3028
3029         * mini-ia64.c: Fix some warnings.
3030
3031         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
3032         version seemed to skip a frame.
3033
3034 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3035
3036         * mini.c: Clean up the usage of sig->pinvoke flag. Now
3037         only calls which are made to native code use this flag.
3038
3039 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
3040
3041         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
3042         varargs methods as well.
3043         
3044         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
3045         which have save_lmf set. Reorganize methods prologs a bit.
3046
3047         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
3048         debugger to the proper place.
3049
3050 2005-10-29  Martin Baulig  <martin@ximian.com>
3051
3052         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
3053         when running inside the debugger until the debugger has support
3054         for it.
3055
3056 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * mini.h: Fix a warning.
3059
3060 2005-10-24  Miguel de Icaza  <miguel@novell.com>
3061
3062         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
3063         we expose publicly, this returns the string.
3064
3065 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
3066
3067         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
3068         with fp elimination.
3069
3070 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
3073         native stacktrace using the glibc 'backtrace' function if available.
3074
3075 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
3078
3079         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
3080         handle SIGSEGVs received while in native code.
3081
3082         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
3083         code, call mono_handle_native_sigsegv which will abort the runtime
3084         after printing some diagnostics, instead of converting it into a
3085         confusing NullReferenceException.
3086
3087 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * cpu-pentium.md: Remove unused opcodes.
3090
3091 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
3092
3093         * mini-amd64.h (MonoLMF): Add rsp field.
3094
3095         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
3096         the lmf too.
3097
3098 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * mini-codegen.c (get_register_spilling): Fix some warnings.
3101
3102 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
3103
3104         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
3105         elimination during exception handling. Enable fp elimination by
3106         default.
3107
3108         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
3109         elimination.
3110
3111 2005-10-16  Martin Baulig  <martin@ximian.com>
3112
3113         * mini-exceptions.c
3114         (mono_debugger_run_finally): New public method for the debugger.
3115
3116 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
3117
3118         * debug-mini.c (mono_debug_init_method): Fix warning.
3119
3120         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
3121         the 'exname' parameter const to fix some warnings.
3122
3123 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
3124
3125         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
3126         introduced by the previous patch.
3127
3128 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * basic-float.cs: Add test for precision of float arithmetic.
3131
3132         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
3133         when loading/storing single values from/to memory.
3134
3135         * mini.c (mono_jit_compile_method_with_opt): Create the function
3136         pointers in the correct domain.
3137
3138 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
3139
3140         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
3141         introduced by previous patch.
3142         
3143         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
3144         when out_filter_idx is NULL.
3145
3146         * mini-exceptions.c: Don't run filter clauses twice during exception
3147         handling. Fixes #75755.
3148
3149 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
3150
3151         * aot.c: Add support for ldflda wrappers.
3152
3153         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
3154         #75902.
3155
3156 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
3157
3158         * mini.c, mini.h: do not consider exception handlers blocks when
3159         setting up interface variables.
3160
3161 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
3162
3163         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
3164
3165 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
3168         causes a regression.
3169
3170         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
3171
3172 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
3173
3174         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
3175         of the OP_P definitions.
3176
3177         * TODO: Add a proposal for dealing with the CEE/OP mess.
3178
3179         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
3180         optimizations from the x86 port.
3181
3182         * cpu-amd64.md: Ditto.
3183
3184         * basic.cs basic-long.cs: Add tests.
3185
3186 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
3187
3188         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
3189         Patrik Torstensson's implementation of my exception-handling
3190         optimization idea, when the exception object is not used
3191         (bug #62150).
3192
3193 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
3194
3195         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
3196         of the mul_imm optimizations from the old jit.
3197
3198 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
3199
3200         * mini.c, liveness.c: patch by Patrik Torstensson and
3201         Zoltan Varga to improve performance in methods with
3202         exception clauses.
3203
3204 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * driver.c: Remove 'Globalization' entry from --version.
3207
3208 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
3211         there is a profiler interested in JIT events.
3212
3213         * aot.c: Load profile files produced by the AOT profiling module, and
3214         reorder methods based on the profiling info. Add a 'method_order' table
3215         to the AOT file to make mono_aot_find_jit_info work with the reordered
3216         methods.
3217
3218         * mini.h: Bump AOT file version info.
3219
3220 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
3221
3222         * mini-arm.h: work around what looks like a gcc bug when optimizations
3223         are enabled.
3224
3225 2005-09-28  Raja R Harinath  <rharinath@novell.com>
3226
3227         * Makefile.am (AM_CFLAGS): Don't use += to append inside
3228         conditionals.  Use ...
3229         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
3230
3231 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
3232
3233         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
3234         to determine the amount of memory to copy when passing valuetypes.
3235
3236         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
3237         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
3238
3239 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
3242         information about aot.
3243
3244 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
3245
3246         * *.c: Replace the use of {Enter,Leave}CriticalSection with
3247         macros. This will allow a deadlock debugger to easily be plugged
3248         in.
3249
3250 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
3251
3252         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
3253
3254 2005-09-27  Raja R Harinath  <rharinath@novell.com>
3255
3256         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
3257         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
3258         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
3259         ($(arch_built)) [CROSS_COMPILING]: Error out.
3260
3261 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
3262
3263         * aot.c: Add support for the no_special_static flag for classes.
3264
3265 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
3266
3267         * Reapply reverted patches.
3268
3269         * *: Revert r50174 as well.
3270
3271         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
3272
3273 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
3274
3275         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
3276
3277 2005-09-23  Miguel de Icaza  <miguel@novell.com>
3278
3279         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
3280         part of the SIG_HANDLER_SIGNATURE.  
3281
3282 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
3283
3284         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
3285         statistics.
3286
3287         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
3288         introduced by previous patch.
3289
3290 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
3291
3292         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
3293         saved registers too.
3294
3295         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
3296         upon the information returned by get_call_info ().
3297         
3298         * mini-x86.c (add_float): Fix stack size calculation.
3299         (mono_arch_call_opcode): Rewrite this so it works based up the
3300         information returned by get_call_info ().
3301         (mono_arch_get_this_vret_args): Ditto.
3302
3303 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
3304
3305         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
3306         in cinfo to determine the registers which need to be used.
3307
3308 2005-09-20  Miguel de Icaza  <miguel@novell.com>
3309
3310         * driver.c (mono_main): Add --server and --desktop flags. 
3311
3312 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
3315         registers as global registers.
3316
3317         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
3318         longer needed with the new register allocator.
3319
3320         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
3321
3322         * cpu-ia64.md: Remove unused opcodes.
3323         
3324         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
3325         
3326 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
3327
3328         * cpu-amd64.md: Remove unused opcodes.
3329
3330         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
3331         needed with the new register allocator.
3332
3333         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
3334         reg-reg moves.
3335
3336 2005-09-16  Raja R Harinath  <rharinath@novell.com>
3337
3338         * Makefile.am (check-local): Don't invoke semdel-wrapper.
3339
3340 2005-09-16  Martin Baulig  <martin@ximian.com>
3341
3342         * exceptions-amd64.c
3343         (throw_exception): Don't call mono_debugger_throw_exception() if
3344         we're a rethrow - see the FIXME in the code.
3345
3346 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
3347
3348         * mini.c (mono_init_exceptions): This only works on some architectures.
3349         
3350 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
3353         on ia64.
3354
3355         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
3356
3357         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
3358         now in mini-exceptions.c.
3359
3360 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
3361
3362         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
3363         now in mini-exceptions.c.
3364
3365 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * exceptions-x86.c: Applied patch from Patrik Torstensson 
3368         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
3369
3370         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
3371         code into mini-exceptions.c. Add some assertions to it.
3372
3373 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * aot.c (emit_section_change): Applied patch from "The Software Team" 
3376         (<software@solmersa.com>). Fix as errors on windows.
3377
3378 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
3379
3380         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
3381         method info into the LMF.
3382
3383 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
3384         
3385         * mini-ia64.c: Add proper unwind info for method epilogs.
3386
3387         * exceptions-ia64.c: Add some code to help debugging.
3388         
3389         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
3390
3391         * mini-exceptions.c: Fix warning.
3392
3393 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
3394
3395         * mini.c: Really fix build.
3396
3397         * mini-x86.c mini-amd64.c: Fix build.
3398
3399 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
3400
3401         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
3402
3403         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
3404         some Interlocked methods as intrinsics.
3405
3406         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
3407         for Thread methods as well.
3408
3409         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
3410
3411         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
3412
3413         * mini-ia64.c mini-x86.c mini-amd64.c 
3414         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
3415         OP_MEMORY_BARRIER.
3416         
3417         * mini.c (mono_init_exceptions): Fix build breakage.
3418
3419 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
3422         of instructions. Use the new ia64_unw_op macros for emitting unwind
3423         info.
3424
3425         * mini.c (mono_init_exceptions): Initialize exception handling
3426         related trampolines at startup.
3427
3428 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
3429
3430         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
3431
3432 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * mini.c: Handle type loading errors gracefully during compilation and
3435         throw the appropriate exception.
3436
3437 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
3438
3439         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
3440         for the mono binary.
3441
3442 2005-09-09  Martin Baulig  <martin@ximian.com>
3443
3444         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
3445         the release.
3446
3447 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
3448
3449         * mini-arm.h: use emulation for conv.r.un for the release.
3450
3451 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
3452
3453         * mini-arm.c, objects.cs: more fixes and tests for them.
3454
3455 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
3456
3457         * mini-arm.c: align structures to at least 4 bytes to be able
3458         to keep our current optimized memcpy.
3459
3460 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
3461
3462         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
3463
3464 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3465
3466         * mini.c: ignore SIGPIPE.
3467
3468 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
3471
3472         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
3473
3474 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * mini.h: Add prototype for mono_allocate_stack_slots_full.
3477
3478 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
3479
3480         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
3481         exception handling support.
3482         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
3483         patch by Brian Koropoff <briank@marakicorp.com>).
3484
3485 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
3486
3487         * mini.c: revert another 'optimization' which breaks when
3488         items on the eval stack need to be saved at a basic block end
3489         (bug #75940).
3490
3491 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
3492
3493         * jit-icalls.c: for arrays, ensure we always provide
3494         lower bounds.
3495
3496 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
3497
3498         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
3499         
3500         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
3501
3502 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
3505         arguments in their original register.
3506
3507 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
3508
3509         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
3510         memset/memcpy.
3511
3512         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
3513         when ssapre is enabled.
3514
3515         * inssel-long.brg: Fix bug in previous patch.
3516
3517         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
3518         multiplication by a constant.
3519
3520 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
3523         icc.
3524
3525         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
3526         saving registers.
3527
3528 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
3529
3530         * inssel-arm.brg: apply changes tested by Brian Koropoff
3531         <briank@marakicorp.com>.
3532
3533 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
3536         
3537 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
3540         to the same register if dreg is just a base register.
3541         (print_ins): Improve printing of membase opcodes.
3542
3543         * inssel-x86.brg: Add optimized ldind(reg) rules.
3544
3545         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
3546
3547 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
3548
3549         * mini.c: when running under valgrind, set the stack bottom for
3550         the GC at the actual approximate stack for the app (fixes running
3551         mono with valgrind).
3552
3553 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
3554
3555         * mini.c: do no break at the first valuetype to init found
3556         (fixes bug #75791).
3557
3558 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
3559
3560         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
3561
3562 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
3563
3564         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
3565
3566 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
3567
3568         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
3569
3570 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3571
3572         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
3573
3574         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
3575         code.
3576
3577         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
3578         code.
3579
3580         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
3581         methods.
3582
3583 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
3584
3585         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
3586
3587 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3588
3589         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
3590         in the tail recursion optimization.
3591
3592         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
3593         debug info into the assembly file.
3594
3595         * iltests.il: Add test for filter regions.
3596
3597         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
3598         initial stack of filter regions. Fixes #75755.
3599
3600 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
3601
3602         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
3603         stack requirements.
3604
3605 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
3606
3607         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
3608         the check for an already compiled method on non-ia64 platforms.
3609         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
3610         proper domain.
3611
3612         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
3613
3614         * inssel-x86.brg: Add some optimized call rules.
3615
3616 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
3617
3618         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
3619         method here.
3620
3621         * mini.h mini-trampolines.c: Pass the trampoline argument to 
3622         mono_arch_patch_delegate_trampoline.
3623
3624         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
3625
3626         * mini-trampolines.c: Fix build.
3627
3628         * mini-amd64.h: Add delegate trampolines.
3629
3630         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
3631
3632         * inssel-amd64.brg: Add optimized call rules.
3633         
3634         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
3635
3636         * inssel-ia64.brg: Add optimized ldind(reg) rules.
3637
3638 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
3639
3640         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
3641         change.
3642
3643         * mini-ia64.c: Remove LMF fixmes.
3644
3645         * mini-ia64.h: Remove most fields from LMF.
3646
3647         * inssel-ia64.brg (stmt): Fix unaligned access errors.
3648
3649         * mini-trampolines.c: Add support for IA64 function descriptors.
3650
3651         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
3652         for IA64 function descriptors.
3653
3654 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
3655
3656         * tramp-arm.c: patch the vtable for virtual calls. Added
3657         support code to register/unregister the LMF.
3658         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
3659         more LMF work.
3660
3661 2005-08-19  Dick Porter  <dick@ximian.com>
3662
3663         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
3664         bit value if needed.
3665
3666 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
3667
3668         * mini.c (mini_get_method): Move handling of wrapper data here.
3669
3670         * mini.c (mono_method_to_ir): Add support for dynamic methods.
3671
3672         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
3673         virtual.
3674
3675         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
3676         bblock->code does not remain empty.
3677
3678 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
3679
3680         * arrays.cs: Add regression test for #75832.
3681
3682         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
3683         rules. Fixes #75832.
3684
3685         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
3686         instruction scheduling.
3687
3688 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
3689
3690         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
3691
3692 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
3693
3694         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
3695
3696         * mini-codegen.c: Fix VC build.
3697
3698         * cpu-pentium.md: Increase length of atomic_exhange_i4.
3699
3700 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
3701
3702         * mini.h: fix signature for mono_register_opcode_emulation.
3703
3704 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
3705
3706         * mini.c: Get rid of most of the helper_sig_... constants using
3707         mono_create_icall_signature ().
3708
3709 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
3710
3711         * jit-icalls.c (helper_ldstr): New helper function.
3712
3713         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
3714
3715         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
3716         throw, load the string using a helper call instead of creating a string object.
3717
3718         * aot.c: Update after LDSTR changes.
3719
3720         * mini.h: Bump AOT file version.
3721         
3722         * aot.c: Save class size info into the AOT file. Print more statistics during
3723         compilation.
3724
3725         * mini.h: Bump AOT file version.
3726
3727         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
3728         ordering of disasm cases. Fixes #74957.
3729
3730 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
3731
3732         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
3733         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
3734         the generic code needed for the ARM port.
3735
3736 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
3737
3738         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
3739         inssel-arm.brg: more ARM features and fixes.
3740
3741 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
3742
3743         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
3744         ARM port work in progress.
3745
3746 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
3747
3748         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
3749
3750         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
3751
3752         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
3753
3754         * inssel.brg (mini_emit_memset): Add support for unaligned access.
3755
3756         * *-ia64.*: Ongoing IA64 work.
3757         
3758         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
3759
3760 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
3761
3762         * TODO: Remove out-of-data todo stuff.
3763
3764         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
3765         dead code.
3766
3767         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
3768
3769         * mini.h: Bump corlib version.
3770
3771 2005-07-27  Martin Baulig  <martin@ximian.com>
3772
3773         * mini-codegen.c
3774         (create_copy_ins): Added `const unsigned char *ip' argument; set
3775         `copy->cil_code' from it.
3776
3777 2005-07-27  Martin Baulig  <martin@ximian.com>
3778
3779         * mini-exceptions.c (mono_handle_exception): Don't call
3780         mono_debugger_handle_exception() for filters.
3781
3782 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
3783
3784         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
3785         as well.
3786
3787 2005-07-26  Martin Baulig  <martin@ximian.com>
3788
3789         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
3790
3791         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
3792         helper_compile_generic_method() if the method is actually virtual
3793         and non-final.
3794
3795 2005-07-26  Martin Baulig  <martin@ximian.com>
3796
3797         * mini.c
3798         (trampoline_code): Renamed to `mono_trampoline_code' and made it
3799         public; this is now accessed directly by the debugger.
3800         (mono_generic_trampoline_code): Removed.
3801
3802         * debug-mini.c
3803         (mono_debug_init_method): Also add interncalls and wrappers.
3804
3805 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
3806
3807         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
3808
3809 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
3810
3811         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
3812
3813 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
3814
3815         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
3816
3817 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
3818
3819         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
3820         getting TLS offsets on AMD64 too.
3821
3822 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
3823
3824         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
3825
3826 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
3827
3828         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
3829         inssel-arm.brg, mini-arm.h: ARM port work in progress.
3830
3831 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
3832
3833         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
3834
3835         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
3836         to mini.c.
3837
3838         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
3839         mono_sparc_is_virtual_call ().
3840         
3841         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
3842
3843         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
3844         trampoline parameters.
3845
3846         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
3847         
3848         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
3849         to mono_arch_get_vcall_slot_addr.
3850
3851         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
3852         trampoline code.
3853
3854         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
3855
3856 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
3857
3858         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
3859
3860 2005-07-19  Martin Baulig  <martin@ximian.com>
3861
3862         * exceptions-amd64.c (throw_exception): Call
3863         mono_debugger_throw_exception() here like we're doing it on i386.
3864
3865 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
3866
3867         * mini-ia64.c: Add optimized TLS access support.
3868
3869 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
3870
3871         * mini-exceptions.c: Ongoing IA64 work.
3872
3873         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
3874
3875         * mini.c: Use the default optimization set when embedding. Fixes
3876         #75194.
3877
3878 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
3879
3880         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
3881         of trampolines to a separate file.
3882
3883         * mini-trampolines.c: New file.
3884
3885         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
3886         separate file.
3887         
3888         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
3889         amd64/ia64 code.
3890
3891         * mini-codegen.c: Fix cygwin build.
3892
3893 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
3894
3895         * mini.c: Add some minor changes needed by the IA64 port.
3896
3897         * *-ia64.*: Ongoing IA64 work.
3898
3899 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
3900
3901         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
3902         trampolines into arch-independent and arch-dependent parts.
3903
3904         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
3905
3906 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
3907
3908         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
3909
3910         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
3911         the xp-regalloc-branch for amd64.
3912
3913         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
3914         xp-regalloc-branch for x86.
3915
3916 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
3917
3918         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
3919
3920 2005-07-06  Martin Baulig  <martin@ximian.com>
3921
3922         * mini.c
3923         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
3924         (mono_jit_runtime_invoke): Likewise.
3925
3926 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
3927
3928         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
3929         on x86 too.
3930         
3931         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
3932         without loading their metadata. Reorganize the file format so exception handling+
3933         debug info is kept separate from normal method info. Create MonoJitInfo 
3934         structures for methods lazily.
3935
3936         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
3937         loading metadata.
3938         (x86_class_init_trampoline): Patch AOT class init trampolines too.
3939
3940         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
3941
3942         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
3943         in AOT code.
3944
3945         * mini.h: Bump AOT file version.
3946
3947 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
3948
3949         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
3950
3951 2005-07-01  Raja R Harinath  <rharinath@novell.com>
3952
3953         * Makefile.am (check-local): Call semdel-wrapper.
3954
3955 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
3956
3957         * mini-x86.c: Revert the last change as it seems to break the build..
3958
3959 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
3960
3961         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
3962         
3963         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
3964
3965 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
3966
3967         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
3968         outside of the macro, so strange stuff doesn't happen with gcc4
3969         (NEW_AOTCONST_TOKEN): Likewise.
3970
3971 2005-06-28  Martin Baulig  <martin@ximian.com>
3972
3973         * mini.c (mini_class_is_system_array): New static method; use this
3974         instead of `klass->parent == mono_defaults.array_class' everywhere
3975         since this also works for the new generic array class.
3976
3977 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
3978
3979         * inssel.brg: Remove warnings.
3980
3981 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
3982
3983         * mini-ia64.c: Ongoing IA64 work.
3984
3985         * basic-float.cs: Add float->i1 conversion test.
3986
3987         * iltests.il: Add conv.u4 test.
3988
3989 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
3990
3991         * inssel-long.brg: Fix bug caused by last change.
3992
3993 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
3994
3995         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
3996         BSDs.  Allows the x86 JIT to work on OSX86
3997
3998 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
3999
4000         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
4001         u4->i8 conversion.
4002
4003         * mini-ia64.c: Ongoing IA64 work.
4004
4005 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
4006
4007         * mini-ia64.c: Ongoing IA64 work.
4008
4009         * driver.c: Clean up jit_code_hash as well when using --regression.
4010
4011         * inssel-long.brg: Fix long->i4/u4 conversion rules.
4012
4013         * basic-long.cs: Add tests for long->u4 conversion.
4014
4015 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
4016
4017         * mini.c: Take mono_get_domainvar out of macros. This makes sure
4018         that we do not depend on undefined C behavior: the order stuff
4019         gets evaluated within an expression. Fixes mono when compiled on
4020         GCC 4.
4021
4022 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
4023
4024         * *-ia64.*: Ongoing IA64 work.
4025
4026         * aot.c: Lower memory usage while loading AOT methods.
4027
4028         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
4029
4030         * mini.h: Bump AOT file format version.
4031
4032 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
4033
4034         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
4035
4036 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
4037
4038         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
4039         not on callee assembly). Fixed some comments.
4040
4041 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
4042
4043         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
4044         it gets proper disassembly.
4045         (emit_method_info): Remove some dead code.
4046
4047         * mini.c (mini_method_compile): Allways allocate the GOT var in
4048         mono_method_to_ir for emulating opcodes.
4049
4050 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
4051
4052         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
4053         before freeing the code memory. Fixes #74990.
4054
4055         * objects.cs: Add regression test for #74992.
4056
4057         * liveness.c: Extend live ranges of arguments to the beginning of the
4058         method. Fixes #74992.
4059
4060         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
4061         so it points into the faulting instruction.
4062
4063 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
4064
4065         * jit-icalls.c (mono_imul_ovf): Add exception handling.
4066
4067         * *-ia64.*: Ongoing IA64 work.
4068
4069         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
4070
4071 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
4072
4073         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
4074
4075         * *-ia64.*: Ongoing IA64 work.
4076
4077 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
4078
4079         * basic-long.cs: Add tests for add/sub.ovf.
4080
4081         * basic.cs: Add tests for sub.ovf.
4082
4083         * *-ia64.*: Ongoing IA64 work.
4084
4085 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
4086
4087         * *-ia64.*: Ongoing IA64 work.
4088
4089         * basic.cs: Add conv.ovf.i4.un test.
4090
4091 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
4092
4093         * mini.c: (remove_block_if_useless) Fixed bug 75061.
4094         
4095 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4096
4097         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
4098
4099 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
4100
4101         * *-ia64.*: Ongoing IA64 work.
4102
4103 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4104
4105         * trace.[ch]:
4106         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
4107
4108 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
4109
4110         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
4111
4112 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
4113
4114         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
4115
4116         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
4117         of a call is callable by a near call.
4118
4119 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
4120
4121         * mini-ia64.c: Ongoing IA64 work.
4122
4123 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
4124
4125         * genmdesc.c: Make the generated array non-static.
4126
4127         * inssel-long.brg: Fix LSHR_IMM rule.
4128
4129         * *-ia64.*: Ongoing IA64 work.
4130
4131         * *-ia64.*: Ongoing IA64 work.
4132
4133 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4134
4135         * *-ia64.*: Ongoing IA64 work.
4136
4137         * *-ia64.*: Ongoing IA64 work.
4138         
4139         * mini-ia64.c: Ongoing IA64 work.
4140
4141         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
4142
4143 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4144
4145         * objects.cs basic-calls.cs: Move some tests to objects.cs.
4146         
4147         * objects.cs basic-long.cs: Move some tests to objects.cs.
4148
4149 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
4150
4151         * *-ia64.*: Ongoing IA64 work.
4152
4153         * iltests.il: Add a new test.
4154
4155         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
4156         newobj. Fixes #75042.
4157
4158 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
4159
4160         * *-ia64.*: Ongoing IA64 work.
4161         
4162         * *-ia64.*: Ongoing IA64 work.
4163         
4164         * *-ia64.*: Ongoing IA64 work.
4165
4166         * basic.cs objects.cs: Move tests accessing static variables as well.
4167
4168         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
4169
4170 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
4171
4172         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
4173
4174         * driver.c: Always print failed tests.
4175
4176         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
4177         frame pointer.
4178
4179         * *ia64*: Ongoing IA64 work.
4180
4181 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
4182
4183         * basic.cs: Add tests for add.ovf. Fix warnings.
4184
4185 2005-05-18  Miguel de Icaza  <miguel@novell.com>
4186
4187         * driver.c (mono_main): Avoid crash if no argument is passed to
4188         --break;  Do not use g_error, but f_printf.   And fix all other
4189         ocurrences of the same crash.
4190
4191 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
4192
4193         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
4194         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
4195         Fixes #74742.
4196
4197 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
4198
4199         * *-ia64.*: Add beginnings of IA64 backend.
4200
4201         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
4202
4203 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
4204
4205         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
4206         Fixes #74925.
4207
4208         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
4209
4210         * mini-amd64.c: Fix a warning.
4211
4212 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
4213
4214         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
4215         in float_neg. Fixes #74897.
4216
4217         * mini-amd64.c (emit_call): Fix another near call bug.
4218
4219 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
4220
4221         * declsec.c: Keep the appdomain information in the structure. Added a 
4222         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
4223         value gets overwritten).
4224         * declsec.h: Set the default MonoArray for the the stack to 6. Added
4225         an MonoAppDomain member to MonoSecurityFrame.
4226         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
4227         used in the stack walk. Now use a MonoArray which grow (double) when
4228         it gets full.
4229
4230 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
4231
4232         * mini.c: Re-enabled runtime cleanup, since running threads should
4233         now properly stop when exiting.
4234
4235 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
4236
4237         * mini-codegen.c: New file contaning the arch-independent local
4238         register allocator. Not used by any architectures yet.
4239
4240         * mini.h linear-scan.c: Merge some changes from the 
4241         mini-xp-local-regalloc branch.
4242
4243 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
4244
4245         * mini-amd64.c (emit_call): Fix calls to native functions when the
4246         runtime is compiled as a shared library. Fixes #74756.
4247
4248         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
4249         on a literal field. Fixes #74751.
4250
4251 2005-04-25  Raja R Harinath  <rharinath@novell.com>
4252
4253         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
4254
4255 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
4256
4257         * objects.cs: Add missing null casting test.
4258
4259 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
4260
4261         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
4262         in wrapper methods. Also rename 'address' variable to 'offset'.
4263
4264 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
4265
4266         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
4267         warnings.
4268         
4269         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
4270
4271         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
4272         work on windows.
4273
4274 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
4275
4276         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
4277
4278 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
4279
4280         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
4281         just the last bytes.
4282
4283 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
4284
4285         * aot.c (mono_compile_assembly): Fix warning.
4286
4287         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
4288         by the _MSC_VER stuff.
4289
4290 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
4291
4292         * inssel-long.brg: Fix #74588.
4293
4294         * cpu-amd64.md: Fix #74591.
4295
4296         * iltests.il: Add new regression tests.
4297
4298 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
4299
4300         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
4301         valuetype.
4302
4303 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
4304
4305         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
4306
4307         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
4308         from Bill Middleton <flashdict@gmail.com>.
4309
4310 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
4311
4312         * arrays.cs: Add new regression test. Fix warnings.
4313
4314 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
4315
4316         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
4317         and leakage in CKFINITE.
4318
4319         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
4320         this to a null op since it is called on amd64 too.
4321
4322         * exceptions-amd64.c (get_throw_trampoline): Align stack.
4323
4324         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
4325         body since this is not used on amd64.
4326         
4327         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
4328
4329         * mini-amd64.c: Remove obsolete fixmes.
4330
4331         * mini.c (print_method_from_ip): Fix debugging support.
4332
4333 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4334
4335         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
4336         so that expressions that don't give much gain are not reduced.
4337         * ssapre.h: Likewise.
4338
4339 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
4340
4341         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
4342
4343         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
4344
4345         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
4346
4347 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
4348
4349         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
4350
4351         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
4352
4353 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
4354
4355         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
4356         stack touching.
4357
4358         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
4359
4360         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
4361
4362         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
4363
4364         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
4365         MONO_ARCH_USE_SIGACTION. Fixes #74252.
4366
4367         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
4368
4369         * mini-x86.c: Fix up stack overflow handling.   
4370
4371         * exceptions.cs: Add new regression test.
4372
4373 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
4374
4375         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
4376         mono_jit_thread_attach.
4377
4378         * mini.c (mono_method_to_ir): Verify called method is not abstract.
4379
4380 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
4381
4382         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
4383         avoid calling constructors using callvirt.
4384
4385         * inssel.brg: Fix #74073.
4386
4387 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
4388
4389         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
4390         compilation with non-GCC compilers.
4391         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
4392         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
4393
4394 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
4395
4396         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
4397         klass->interface_offsets (will likely fix bug#74073).
4398
4399 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
4400
4401         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
4402
4403 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
4404
4405         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
4406         to amd64_div_reg_size ().
4407         
4408         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
4409
4410 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
4411
4412         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
4413
4414 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
4415
4416         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
4417
4418 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
4419
4420         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
4421         
4422         * mini.c (mono_precompile_assembly): Load and precompile referenced
4423         assemblies as well. Fixes #74015.
4424
4425 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
4426
4427         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
4428
4429 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
4430
4431         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
4432         a lot of checks and (anyway) permissions cannot work until corlib is 
4433         loaded.
4434
4435 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
4436
4437         * mini-ppc.c: fixed ABI issue on sysv/ppc.
4438
4439 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
4440
4441         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
4442         calls (fixes bug#72824).
4443
4444 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
4445
4446         * mini.c: fix tail recursion elimination (see test in bug#73936).
4447
4448 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
4449
4450         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
4451         some fp functions in sse2 mode.
4452
4453 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
4454
4455         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
4456
4457 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
4458
4459         * mini.h mini.c: Add mono_get_jit_tls_key ().
4460
4461         * mini-x86.c: Enable fast TLS support on windows.
4462
4463 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4464
4465         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
4466         * mini.c: Check for p/invoke method when generating code. If a
4467         p/invoke method, or it's class, isn't decorated with [Suppress
4468         UnmanagedCodeSecurity] then generate code to call System.Security.
4469         UnmanagedDemand (only if the security manager is active).
4470
4471 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
4472
4473         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
4474         last change as it seems to cause strange crashes.
4475         
4476 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
4477
4478         * *.c: handle unsafe function pointers where needed.
4479
4480 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
4481
4482         * mini.c (mono_jit_free_method): Remove the fixme too.
4483
4484 2005-03-15  Miguel de Icaza  <miguel@novell.com>
4485
4486         * mini.c: As discussed, make the code actually free the delegate
4487         thunk now, to enable the debugging of delegate problems, use
4488         MONO_DEBUG=1 when running Mono. 
4489
4490         This takes also care of parts of the leaks as seen by Joe.
4491
4492 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
4493
4494         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
4495         thread_tls_offset calculation.
4496
4497 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
4498
4499         * declsec.c: Reworked linkdemand checks for icall. The previous code
4500         was using the declaration code (untrusted) and didn't work as expected
4501         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
4502         specific case.
4503
4504 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
4505
4506         * iltests.il: Add new localloc test.
4507
4508         * mini-amd64.c: Handle large stack allocations the same way as on
4509         windows if stack overflow handling is working.
4510         
4511         * mini-amd64.c: Allocate the signal stack using mmap.
4512
4513         * mini.c (sigsegv_signal_handler): Fix reading of context.
4514
4515         * mini-exceptions.c: Fix up stack overflow handling.
4516
4517         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
4518
4519         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
4520
4521         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
4522
4523         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
4524
4525         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
4526         tramp_init functions as they are no longer needed.
4527
4528 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
4529
4530         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
4531         
4532         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
4533
4534         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
4535         
4536         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
4537         support that now.
4538
4539         * mini-ops.h: Add OP_LMUL_IMM.
4540
4541         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
4542         long mul/div opcodes as intrinsic.
4543
4544         * mini-amd64.c (emit_call): Handle the case when the callee might be
4545         an AOT method.
4546
4547 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
4548
4549         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
4550         extra safe.
4551         
4552         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
4553
4554         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
4555
4556 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
4557
4558         * mini.c (mono_codegen): Don't leak here, to help people running
4559         monogrind.
4560
4561 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
4562
4563         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
4564         conversions in sse2 mode.
4565
4566         * basic-float.cs: Add regression test.
4567         
4568         * mini-amd64.c: Reenable sse2.
4569
4570 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
4571
4572         * mini-amd64.c: Disable sse2 until some regressions are fixed.
4573
4574 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
4575
4576         * driver.c: Copyright text should include 2005.
4577         
4578 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
4579
4580         * cpu-amd64.md (load_membase): Fix more max lengths.
4581
4582 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
4583
4584         * cpu-amd64.md (load_membase): Fix max length.
4585
4586         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
4587
4588         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
4589
4590         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
4591         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
4592
4593         * basic-float.cs: Add rounding regression test.
4594
4595         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
4596
4597 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
4598
4599         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
4600         structures in registers for pinvoke wrappers.
4601
4602 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
4603
4604         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
4605
4606 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
4607
4608         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
4609         wrapper to mono_jit_thread_attach.
4610
4611         * mini.c (mini_jit_thread_attach): New jit icall.
4612
4613         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
4614         native->managed wrappers.
4615
4616         * exceptions.cs: Add new regression test.
4617
4618         * mini.c (optimize_branches): Check regions in the cbranch to throw
4619         block case as well. Fixes #73242.
4620
4621 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
4622
4623         * mini.c: thread safety fixes.
4624
4625 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
4626
4627         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
4628         patching stuff, since delegates use jump trampolines so there is
4629         no caller.
4630
4631         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
4632         jump trampolines.
4633         
4634         * tramp-amd64.c: Fix build.
4635
4636         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
4637         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
4638
4639         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
4640         Rename this to mono_arch....
4641         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
4642
4643         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
4644
4645         * mini-amd64.c (emit_call): If both the caller and the callee is
4646         guaranteed to have 32 bit addresses, emit a normal call.
4647
4648         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
4649
4650         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
4651         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
4652         method_ptr inside delegates.
4653
4654 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
4655
4656         * mini.c (mono_jit_free_method): Free the method info even if the native code is
4657         invalidated. Fixes #73001.
4658
4659         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
4660
4661         * mini-x86.c: Only use stdcall for pinvokes on windows.
4662
4663 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
4664
4665         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
4666         * mini-x86.c: remove unreliable __thread var offset detection,
4667         use the correct accessors and enable by default.
4668
4669 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
4670
4671         * mini.c (mono_jit_free_method): Fix memory leak.
4672
4673 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
4674
4675         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
4676
4677 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
4678
4679         * cpu-amd64.md: Fix lengths of atomic opcodes.
4680
4681 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
4682
4683         * driver.c: try to not imply using ICU is any good.
4684
4685 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
4686
4687         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
4688         functions as inline ops.
4689
4690         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
4691         some Interlocked functions as inline ops.
4692
4693         * mini.c (move_basic_block_to_end): Fix bug in last patch.
4694
4695         * mini.h (MonoBasicBlock): Reorganize fields a bit.
4696
4697         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
4698
4699         * mini.c: Add support for OP_NOT_TAKEN.
4700
4701         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
4702         structures in registers for pinvoke wrappers.
4703
4704         * mini-amd64.c: Fix warnings.
4705
4706 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
4707
4708         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
4709
4710         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
4711
4712         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
4713         address instead of loading the address from it.
4714
4715         * mini-x86.c: Add support for returning small structs in registers
4716         on Win32. Fixes part of #70864.
4717         
4718 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
4719
4720         * trace.c (get_token): Improve error checking.
4721
4722 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
4723
4724         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
4725
4726 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
4727  
4728         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
4729         it can be reused for MonoClass.
4730         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
4731         _LINKDEMAND.
4732
4733 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
4734
4735         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
4736         instead of a MonoReflectionMethod. The method information wasn't used
4737         when displaying SecurityException details (but will be now).
4738
4739 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
4740
4741         * Makefile.am : windows build fix.
4742
4743 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
4744
4745         * iltests.il: Add new regression test.
4746
4747         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
4748         #72522.
4749
4750 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
4751  
4752         * mini.c: Moved linkdemand check into helper function check_linkdemand
4753         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
4754         LDFTN, LDVIRTFTN).
4755
4756 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
4757
4758         * declsec.c: Added statistics counter for different kinds of 
4759         LinkDemands.
4760         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
4761         (and commented) declaration.
4762         * mini.c: Added statistics counter for security Demand code 
4763         generation. Added display of security statistics.
4764
4765 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
4766
4767         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
4768         Fix compilation errors under gcc-2.95.
4769
4770 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
4771
4772         * mini.c, driver.c: Use the new jit trampoline hashtable
4773
4774 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
4775
4776         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
4777
4778 2005-02-11  Martin Baulig  <martin@ximian.com>
4779
4780         * debug-mini.c (mono_debug_close_method): Free the line number array.
4781
4782 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
4783
4784         * aot.c: Break up large methods into smaller ones. Share GOT slots for
4785         icalls.
4786
4787         * mini.h: Bump AOT file format version. 
4788
4789 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
4790
4791         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
4792         APTC and P/Invoke.
4793         * declsec.h: Added macros to get/set lazyly initialized security 
4794         informations about assemblies. Added new enum for different type of
4795         possible LinkDemand violation. Added function to check LinkDemands.
4796         * mini.h: Added a field to MonoCompile to hold any security violation
4797         detected when JITting a method (so it can be thrown later).
4798         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
4799         and CEE_CALLVIRT. Added code to throw exception at the end of
4800         mini_method_compile (note: the exception is unhandled right now).
4801
4802 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
4803
4804         * mini.c, jit-icalls.c: use the managed implementation of
4805         memset for initobj and memset, to avoid managed <-> unmanaged
4806         transitions.
4807
4808 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
4809
4810         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
4811         optimization if it would need a GOT var.
4812
4813         * basic.cs: Add tests for constant propagation and switch statements.
4814
4815         * ssa.c: Fix out-of-range constant propagation and switch statements.
4816
4817 2005-02-09    <vargaz@freemail.hu>
4818
4819         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
4820
4821 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
4822
4823         * cpu-amd64.md (load_membase): Fix max length of load_membase.
4824
4825 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
4826
4827         * mini.c: update to new signature of mono_class_get_allocation_ftn().
4828
4829 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
4830
4831         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
4832         arithmetic operations.
4833
4834 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
4835
4836         * mini-ppc.c: add a workaround for broken user code that
4837         DllImports vararg functions with non-vararg signatures.
4838
4839 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
4840
4841         * mini.c (mono_jit_compile_method_inner): Add detection and a 
4842         meaningfull error message for assemblies written in Managed C++.
4843
4844         * tramp-amd64.c mini-amd64.h: Add support for 
4845         create_trampoline_from_token ().
4846
4847         * aot.c mini-x86.c abcremoval.c: Applied patch from
4848         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
4849
4850 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
4851
4852         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
4853         which takes a MonoImage/token as parameter instead of a MonoMethod.
4854
4855         * aot.c: Use the new trampoline for initializing vtables.
4856
4857         * aot.c: Add support for ldfld/stfld_remote wrappers.
4858
4859         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
4860         rules for compare <MEM>, IMM.
4861
4862         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
4863
4864         * aot.c: Handle inherited finalizers correctly.
4865
4866 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
4867
4868         * inssel.brg (stmt): Add a missing _setup_... ().
4869
4870         * aot.c: Save some parts of the class state to the AOT file and use it
4871         to recompute that state when a class is initialized.
4872
4873         * mini.c: Install AOT hooks into the runtime.
4874
4875         * mini.h: Bump AOT file format version.
4876         
4877         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
4878         Fixes #72148.
4879
4880         * iltests.il: Add new test.
4881
4882 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
4883
4884         * mini.c: fix typo.
4885
4886 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
4887
4888         * mini.c: setup the statistical profiler in the thread attach
4889         callback to cope with the new single thread code.
4890
4891 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
4892
4893         * mini-ppc.c: ensure we have enough room for the profiler
4894         calls (fixed bug#72084).
4895
4896 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
4897
4898         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
4899         it.
4900
4901 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4902
4903         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
4904
4905 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4906
4907         * ssapre.c: Fixed an issue with down safety (this allows IronPython
4908         to succesfully execute parrotbench).
4909         * ssapre.h: Likewise.
4910
4911 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
4912
4913         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
4914         variable for stores to method arguments (fixes a SSAPRE issue).
4915
4916 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
4917
4918         * mini.c: handle value types in dup, fixes gen-112.cs.
4919
4920 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
4921
4922         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
4923         sequence for calls in dynamic methods to avoid thunks.
4924
4925 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
4926
4927         * mini.c: correctly remove dynamic methods from the hashtable.
4928
4929 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
4930
4931         * driver.c: Disabled SSAPRE until fix the bug that appears
4932         in IronPython's parrotbench.
4933
4934 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
4935
4936         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
4937
4938         * mini.c (mono_method_to_ir): Revert the previous change.
4939         
4940         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
4941         when AOT compiling.
4942
4943         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
4944         mono_jit_info_table_find () etc. when running under valgrind.
4945
4946         * inssel.brg: Fix warnings.
4947
4948         * mini-exceptions.c: Fix warnings.
4949
4950 2005-01-31  Martin Baulig  <martin@ximian.com>
4951
4952         * driver.c (compile_all_methods_thread_main): Don't try to compile
4953         generic methods or anything which has type parameters.
4954
4955 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
4956
4957         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
4958
4959         * TestDriver.cs: Add --verbose flags.
4960
4961         * graph.c ssa.c: Fix 64 bit warnings.
4962         
4963         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
4964         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
4965         Fix 64 bit warnings.
4966
4967         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
4968         variable not spotted by gcc.
4969         
4970         * mini-amd64.c inssel-amd64.brg: Applied patch from  
4971         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
4972         X86_COMPARE_MEMBASE opcodes.
4973
4974         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
4975
4976 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
4977
4978         * *: MonoMethod->signature might be NULL now. You *MUST* use
4979         mono_method_signature.
4980
4981 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
4982
4983         * driver.c (compile_all_methods_thread_main): Compile the methods
4984         without invoking cctors.
4985
4986 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
4987
4988         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
4989         * basic-calls.cs: test for the above.
4990
4991 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
4992
4993         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
4994         MonoJitInfo changes.
4995
4996 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
4997
4998         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
4999         eagerly if it contains dynamic methods.
5000         
5001         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
5002
5003         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
5004         trace, it is now computed by an icall from trace_ips.
5005         
5006         * mini-exceptions.c: Fix a warning.
5007
5008 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
5009
5010         * mini-exceptions.c: don't bother getting stack trace info if
5011         it's not going to be used.
5012
5013 2005-01-27  Raja R Harinath  <rharinath@novell.com>
5014
5015         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
5016         ssapre-mini-ops.h.
5017
5018 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
5019
5020         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
5021
5022         * aot.c: Avoid calling mono_method_get_header () if not needed.
5023
5024         * mini.h: Bump AOT file format version.
5025         
5026         * mini.c (mono_emit_native_call): Allocate a GOT var here.
5027
5028         * mini.c (mono_print_tree): Print more info for calls.
5029
5030 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
5031
5032         * declsec.h: Remove warning by adding missing include for marshal.h
5033
5034 2005-01-26  Martin Baulig  <martin@ximian.com>
5035
5036         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
5037         `ip' twice.
5038
5039 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
5040
5041         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
5042         flags.
5043
5044         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
5045
5046         * aot.c (mono_compile_assembly): Fix a warning.
5047
5048 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
5049
5050         * declsec.c: Look for security attributes on the original MonoMethod 
5051         (and not the wrapped one). This fix permissions on icalls.
5052
5053 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5054
5055         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5056
5057         * mini.c (mono_allocate_stack_slots): Add a fixme.
5058
5059         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5060
5061 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5062
5063         * inssel.brg: optimize casts of sealed types (more
5064         optimizations waiting for fixes in remoting).
5065
5066 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5067
5068         * inssel.brg (stmt): Add another dummy rule.
5069
5070         * driver.c: Fix warnings.
5071
5072         * driver.c (mono_main): If running under valgrind, instruct glib to use
5073         the system allocation functions so valgrind can track the memory
5074         allocated by the g_... functions.
5075
5076         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
5077
5078         * mini-ops.h: Add OP_DUMMY_STORE opcode.
5079
5080         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
5081
5082         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
5083         variables in try regions.
5084
5085         * mini.c (mini_method_compile): Don't disable optimizations on large
5086         methods when AOT compiling.
5087
5088         * mini.c (mono_allocate_stack_slots): New arch independent method to 
5089         allocate stack slots. Not yet used.
5090
5091 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
5092
5093         * debug-mini.c (mono_debug_close_method): Plug some leaks.
5094
5095 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
5096
5097         * mini-ppc.c: make the branch info relative as the code
5098         buffer can be reallocated.
5099
5100 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
5101
5102         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
5103         * driver.c: Removed the AOT/security restriction. Now initialize the
5104         security manager (in metadata) if --security is used.
5105         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
5106         rather than the pointer to declarative security, when AOT is used.
5107
5108 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
5109
5110         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
5111         basic blocks, reduced intrinsic exception throwing code size.
5112
5113 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
5114
5115         * driver.c (mini_usage): Reorder the usage screen.
5116
5117 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
5118
5119         * mini.c (mono_resolve_patch_target): Fix warning.
5120
5121 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
5122
5123         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
5124         previous patch.
5125
5126         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5127
5128         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
5129         breaks the amd64 build.
5130
5131         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
5132         register allocation. Fixes #71454.
5133
5134         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5135
5136         * arrays.cs: Add new regression test.   
5137
5138 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5139
5140         * ssapre.c: Turned usage of snprintf to GString.
5141         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
5142         (I left it on by mistake in my previous commit).
5143
5144 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
5145
5146         * mini.c, cfold.c, basic-calls.cs: preserve side effects
5147         on cond branch optimization (fixes bug# 71515).
5148
5149 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5150
5151         * abcremoval.c: Fixed bug 71062.
5152         * abcremoval.h: Likewise.
5153
5154 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5155
5156         * mini.c: Added a new functionality to optimize_branches, the removal
5157         of useless basic blocks, and fixed some problem in the removal of
5158         critical edges; some utility functions added for both purposes.
5159         * ssapre.c: Added complex expression support, and fixed bug 70637.
5160         * ssapre.h: Likewise.
5161         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
5162         enabled in SSAPRE.
5163         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
5164         * driver.c: Re-enabled SSAPRE.
5165
5166 2005-01-19  Martin Baulig  <martin@ximian.com>
5167
5168         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
5169         the result of mono_get_method_constrained().
5170
5171 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
5172
5173         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
5174         manager.
5175
5176 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
5177
5178         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
5179         be detected.  Fixes #59296.
5180
5181 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5182
5183         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
5184         which can happen. Fixes #71361.
5185
5186 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5187
5188         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
5189         manager.
5190
5191 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5192
5193         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
5194         appdomain-unload.exe to fail.
5195         
5196         * mini.c: Fix some memory leaks.
5197
5198 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
5199
5200         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
5201         Fixed bug and sped up some codepaths.
5202
5203 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5204
5205         * mini.c: Fix some memory leaks.
5206
5207         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
5208         conversion.
5209
5210         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
5211
5212         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
5213         #71320.
5214
5215         * iltests.il: Add regression test for #71320.
5216
5217 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
5218
5219         * mini.c (mono_codegen): Fix installation of profiler hooks.
5220
5221         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
5222
5223 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
5224
5225         * mini.h, mini.c, cfold.c: optimize access to enum
5226         readonly fields, too. Eval conditional branches if possible
5227         to perform unreachable code removal in more cases.
5228
5229 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
5230
5231         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
5232
5233         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
5234         code manager.
5235
5236         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
5237         WinXP DEP. Fixes #71244.
5238
5239 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
5240
5241         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
5242
5243 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
5244
5245         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
5246
5247 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
5248
5249         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
5250         changes.
5251
5252         * mini.h: Bump AOT version.
5253
5254         * mini.h (MonoCompile): Change exvar to a hash table.
5255
5256         * mini.c: Allocate a separate exvar for each handler block.
5257
5258         * mini.c: Get rid of the computation of filter_lengths, its not needed.
5259
5260         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
5261         ex var with the pending exception and only throw if the two are equal.
5262         Fixes #68552.
5263         
5264         * exceptions.cs: Add tests for rethrow and nested catch clauses.
5265
5266         * mini-x86.c: Fix warnings.
5267
5268         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
5269         used by all the ports now.
5270
5271         * aot.c: Add write-symbols and save-temps options.
5272
5273 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
5274
5275         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
5276
5277 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
5278
5279         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
5280         operations.
5281
5282         * tramp-s390.c: Check vtable slot belongs to the domain.
5283
5284         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
5285         as per other platforms.
5286
5287         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
5288
5289 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
5290
5291         * driver.c: we don't run the Main() code in a subthread anymore.
5292
5293 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
5294
5295         * mini.c: added experimental rtc support in the statistical
5296         profiler: if the user has the permission, more accurate statistics
5297         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
5298         The MONO_RTC value must be restricted to what the linux rtc allows:
5299         power of two from 64 to 8192 Hz.
5300
5301 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
5302
5303         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
5304
5305 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
5306
5307         * mini-ppc.c: better icache flush for smp.
5308
5309 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
5310
5311         * mini-amd64.c (emit_move_return_value): Fix memory leak.
5312
5313         * mini-x86.c (get_call_info): Add the get_call_info () code from the
5314         amd64 port, not yet used.
5315
5316 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
5317
5318         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
5319         a struct type.
5320
5321 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
5322
5323         * driver.c: Added --security option to activate the security manager.
5324         Right now this will allow code generation for declarative demands and
5325         is disabled when AOT is specified.
5326         * mini.c: Add code generation for declarative security demands.
5327         * mini.h: Add mono_use_security_manager as an extern gboolean.
5328
5329 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
5330
5331         * aot.c (mono_compile_assembly): Speed up compilation a bit by
5332         emitting more dense assembly code.
5333
5334         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
5335         exception throwing stuff.
5336
5337 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
5338
5339         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
5340         dead code.
5341
5342         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
5343         left in by mistake.
5344
5345         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
5346         fixed.
5347
5348         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
5349
5350         * tramp-*.c: Only patch vtable slots if the object is in the current
5351         domain. Fixes appdomain-unload.exe.
5352
5353         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
5354         
5355         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
5356         x86 branch.
5357
5358 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
5359
5360         * mini.c (reverse_branch_op): New helper function.
5361
5362         * mini.c (optimize_branches): Run the new optimization only on 
5363         platforms which support it. Also reverse all kinds of branches.
5364
5365         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
5366
5367         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
5368         a throw statement.
5369
5370         * mini.c (optimize_branches): Reverse not-equals branches if the false
5371         bblock is a throw. This happens a lot of time with argument checking in
5372         corlib.
5373
5374         * mini.c (mono_codegen): Add support for placing basic blocks after
5375         the function epilogue.
5376
5377         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
5378         function epilogue.
5379         
5380 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
5381
5382         * mini.c (setup_stat_profiler): Only set this up if the platform
5383         supports ITIMER_PROF.
5384
5385 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
5386
5387         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
5388         previous patch.
5389
5390         * inssel.brg: Fix a warning.
5391
5392 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
5393
5394         * mini.c: added support for statistical profiler 
5395         (run with: --profile=default:stat).
5396
5397 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
5398
5399         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
5400
5401         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
5402
5403         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
5404         related to global registers from the amd64 port.
5405
5406 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
5407
5408         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
5409
5410         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
5411         with global registers.
5412         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
5413
5414         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
5415
5416 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
5417
5418         * debug-mini.c (encode_value): Fix off-by-one.
5419
5420         * aot.c (encode_value): Likewise.
5421
5422         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
5423
5424 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
5425
5426         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
5427         AOT.
5428
5429         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
5430         
5431         * aot.c (emit_method_info): Increase size of temp buffer.
5432
5433         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
5434         the AOT case.
5435
5436 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
5437
5438         * aot.c (emit_method_info): Fix build.
5439         
5440         * aot.c: Further rework of the AOT file format to reduce the size of
5441         the method info data.
5442
5443         * mini.h: Bump AOT file format version.
5444
5445 2004-12-27  Martin Baulig  <martin@ximian.com>
5446
5447         * mini.c (mini_get_method): New static method; call
5448         mono_get_method_full() and mono_get_inflated_method().
5449         (mono_method_to_ir): Use mini_get_method() instead of
5450         mono_get_method_full(). 
5451
5452 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
5453
5454         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
5455
5456 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
5457
5458         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
5459
5460         * inssel-amd64.brg: Add some optimization rules.
5461
5462 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
5463
5464         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
5465         standard not GC'd stuff is fine.
5466
5467 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
5468
5469         * aot.c: Rework the AOT file format to get rid of most of the global
5470         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
5471
5472         * mini.h: Bump AOT file format version.
5473         
5474 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
5475
5476         * mini.h: Bump AOT file format version.
5477
5478         * aot.c (mono_aot_is_got_entry): New function to determine if an 
5479         address is inside a GOT.
5480
5481         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
5482
5483         * cpu-pentium.md: Increase the maximum size of some instructions which
5484         might involve a got access.
5485         
5486         * mini.c (get_method_from_ip): Another debug helper function.
5487
5488         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
5489         when got var accesses are created during the decompose phase.
5490
5491         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
5492
5493         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
5494         argument mini_compile_method and to MonoCompile, and use this to
5495         determine whenever a given method is compiled for AOT. This allows the
5496         other methods compiled during AOT compilation to be free of AOT stuff,
5497         so the backends does not need to add special support for them by
5498         creating a fake GOT etc.
5499
5500         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
5501         longer needed.
5502
5503 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
5504
5505         * mini.c (mono_method_to_ir): It turns out that some of the
5506         x-appdomain wrappers are lax with types, so just ignore this for
5507         all wrappers.
5508
5509         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
5510         at the vtable->klass. If it is non-shared code we can just use the
5511         vtable.
5512
5513 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
5514
5515         * mini-ppc.c: access MonoDomain from tls, too.
5516
5517 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
5518
5519         * declsec.c: Removed unused variable (and related warning ;-)
5520
5521 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
5522
5523         * iltests.il: New test for LDELEMA on an array of ref types.
5524
5525         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
5526         all ldelema's on reftypes.
5527         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
5528         it was the wrong place to put it.
5529
5530         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
5531         register to pop to make this cleaner, at the request of Paolo.
5532
5533 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
5534
5535         * mini-ops.h (OP_GETHASHCODE): New op.
5536
5537         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
5538
5539         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
5540         operation.
5541
5542         For a microbenchmark, this reduces the cost of Hashtable.get_Item
5543         by 25%.
5544         
5545         * mini-x86.c (mono_arch_output_basic_block): Rather than
5546
5547         add ebp, 4
5548
5549         Emit
5550
5551         pop edx
5552
5553         The first is 3 bytes while the second is 1. This saves 36 kb on
5554         mscorlib, quite a big saving. When bootstraping mcs, I was able to
5555         see a small boost because of icache locality.
5556
5557         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
5558
5559 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
5560
5561         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
5562         started code sharing with the generic code.
5563
5564 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
5565
5566         * mini-ppc.c, cpu-g4.md: added code for direct access to
5567         tls data slots.
5568
5569 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
5570
5571         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
5572          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
5573         to OP_TLS_GET.
5574
5575 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
5576
5577         * declsec.c|h: Added functions to cache the declarative stack modifiers
5578         in MonoJitInfo and to create a security frame from a MonoJitInfo 
5579         structure.
5580         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
5581         created. Register internal calls for System.Security.SecurityFrame::
5582         _GetSecurityFrame and _GetSecurityStack.
5583         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
5584         the definitions for the new stack walk/callback mechanism.
5585         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
5586         first security frame for LinkDemands and InheritanceDemands) and
5587         GetSecurityStack for Demands. Both use the new mono_walk_stack code
5588         from lupus.
5589         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
5590         walk initialization (lupus).
5591
5592 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
5593
5594         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
5595         idiom.
5596         (handle_loaded_temps): Do not create a temporary variable for
5597         things that we know are temps. They will never be modified.
5598         (mono_spill_call): Set MONO_INST_IS_TEMP
5599         (mono_emulate_opcode): ditto
5600         (emit_tree): ditto
5601         (mono_method_to_ir.CEE_DUP): ditto
5602
5603 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
5604
5605         * mini.c (type_to_eval_stack_type): Make this handle the void type
5606         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
5607         (emit_tree): use ip_in_bb to special case some common idioms
5608         Update all callers to pass in the IP.
5609         (mono_method_to_ir): Make CEE_CALL* do the above as well.
5610
5611         This gives us a nice 2% speedup in mcs bootstrap.
5612
5613         * mini-x86.c (peephole_pass): Peephole pass to make
5614         mov  [foo], eax
5615         push [foo]
5616
5617         into
5618
5619         mov [foo], eax
5620         push eax
5621
5622         * mini.c (ip_in_bb): new method.
5623         (mono_method_to_ir): use this method rather than doing the hash
5624         lookup ourselves.
5625
5626         * linear-scan.c (mono_linear_scan): When expiring actives, you
5627         don't need to keep around variables that expire on this
5628         instruction. This makes it so that:
5629              a = b + 1
5630         will turn into:
5631              store (ebx add (ebx, 1))
5632         which will become
5633              add ebx, 1
5634
5635 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
5636
5637         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
5638         combination to avoid doing two copies. Fix up problems with previous
5639         patch.
5640
5641         * mini.c: Fix 64 bit warnings.
5642
5643         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
5644
5645 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
5646
5647         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
5648         changes from the x86 code.
5649
5650         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
5651
5652 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
5653
5654         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
5655         throwing code to reduce its size, unify the AOT and non-aot code and 
5656         get rid of relocations in the AOT case.
5657
5658         * mini-x86.h mini.c exceptions-x86.c 
5659         (mono_arch_get_throw_corlib_exception): New arch specific function to 
5660         raise corlib exceptions which doesn't require relocations in the 
5661         caller.
5662
5663         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
5664
5665 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
5666
5667         * mini.c (mono_emit_method_call): Only allocate the got var when it is
5668         needed.
5669
5670         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
5671         in the AOT case.
5672
5673 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5674
5675         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
5676         with add function when used from Inc/dec atomic 
5677         functions. Re-enabled optimization on x86.
5678         * mini-ops.h: renamed atomic_add functions to
5679         allow _add to match the Interlocked::Add and
5680         _add_next to match Interlocked::Inc/Dec.
5681
5682 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
5683
5684         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
5685         linking of BBs to the end BB, and enabled SSAPRE also with
5686         consprop and copyprop (which was prevented by that bug).
5687
5688 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5689
5690         * mini-x86.c: disabling the Interlocked optimizing code. 
5691
5692 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
5693
5694         * aot.c (load_aot_module): Move reading of got_addr after the AOT
5695         file version check.
5696         
5697 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
5698
5699         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
5700         interlocked optimization due lack of support on x86, rewrote 
5701         exchange to take into account that base may be in eax.
5702         
5703         xsp works again; activated Interlocked optimizing code.
5704         
5705 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
5706
5707         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
5708
5709 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
5710
5711         * mini-ops.h: Add new opcodes.
5712
5713         * mini.h: Add new patch types. Add got_var to MonoCompile.
5714
5715         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
5716         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
5717         make it work with all kinds of patchable code.
5718
5719         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
5720         address of the GOT, and referencing entries in the GOT.
5721
5722         * mini.c: Add code to load the GOT address if needed by an opcode.
5723
5724         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
5725         independent AOT code on the x86 using an elf-style Global Offset Table.
5726
5727 2004-12-14  Raja R Harinath  <rharinath@novell.com>
5728
5729         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
5730
5731 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5732
5733         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
5734         when running xsp.
5735
5736 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
5737
5738         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
5739         of Interlocked:Increment/Decrement/Add as inline ops.
5740         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
5741
5742 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
5743
5744         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
5745         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
5746
5747 2004-12-12  Duncan Mak  <duncan@ximian.com>
5748
5749         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
5750         again. `patch_info->table_size' is no longer valid after Zoltan's
5751         commit #37636.
5752
5753 2004-12-12  Martin Baulig  <martin@ximian.com>
5754
5755         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
5756         if we are the "real" method, ie. not an inlined method inside it.
5757
5758 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
5759
5760         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
5761         before we look in the special fields table. This fixes
5762         ../tests/thread-static-init.cs.
5763
5764 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5765
5766         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
5767         for Array get_Rank and get_Length. Fixes bug #70465.
5768
5769 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
5770
5771         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
5772         separate structure to reduce the size of MonoJumpInfo.
5773
5774 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
5775
5776         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
5777
5778 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
5779
5780         * mini.c (mini_get_inst_for_method): Changed to allow ports
5781         to return a MonoInst instead of opcode 
5782         (renamed mini_get_opcode_for_method to better reflect the new functionality)
5783         
5784         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
5785         Allow ports to return a created MonoInst instead of op-code, will enable
5786         new optimizations.
5787         (renamed mini_get_opcode_for_method to better reflected the functionality)
5788
5789 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
5790
5791         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
5792
5793 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
5794
5795         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
5796         Fixes #69985.
5797
5798 2004-12-08  Martin Baulig  <martin@ximian.com>
5799
5800         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
5801         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
5802
5803 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
5804
5805         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
5806         correctly.
5807
5808         * exceptions.cs: Disable some tests which depend on properties of x86 fp
5809         arithmetic.
5810
5811 2004-12-08  Raja R Harinath  <rharinath@novell.com>
5812
5813         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
5814
5815 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
5816
5817         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
5818         bug introduced by the previous patch.
5819
5820 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
5821
5822         * mini-ppc.c, objectc.cs: handle large structs passed by value
5823         (fixes bug #69972).
5824
5825 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
5826
5827         * mini-ppc.c: OP_ARGLIST implementation from
5828         Geoff Norton  <gnorton@customerdna.com>.
5829
5830 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
5831
5832         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
5833         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
5834
5835 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
5836
5837         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
5838
5839 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5840
5841         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
5842         support.
5843
5844 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
5845
5846         * mini-sparc.c: Zero out localled-ed memory.
5847
5848         * iltests.il: Add tests for zeroing out localloc-ed memory.
5849
5850 2004-12-04  Martin Baulig  <martin@ximian.com>
5851
5852         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
5853         mono_method_get_signature_full().       
5854
5855 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
5856
5857         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
5858         and some utility functions (always for SSAPRE), integrated SSAPRE.
5859         * mini.h: Likewise.
5860         * driver.c: Added ssapre option.
5861         * ssa.c: Small fix on OP_ARG handling.
5862         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
5863         * Makefile.am: Likewise.
5864
5865 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
5866
5867         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
5868         now in the xp code.
5869
5870         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
5871         icall.
5872
5873 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
5874
5875         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
5876         
5877         * cpu-s390.md : Increase instruction length of oparglist.
5878
5879         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
5880
5881 2004-11-30  Martin Baulig  <martin@ximian.com>
5882
5883         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
5884         virtual generic methods.  We call a special helper_compile_generic_method()
5885         icall to retrieve the method from the vtable, inflate and compile
5886         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
5887
5888         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
5889
5890 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
5891
5892         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
5893
5894 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
5895
5896         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
5897         Fixes #69929.
5898
5899 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
5900
5901         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
5902         platforms with PIC aot.
5903
5904 2004-11-28  Martin Baulig  <martin@ximian.com>
5905
5906         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
5907         Fixes gen-112.cs.
5908
5909 2004-11-28  Martin Baulig  <martin@ximian.com>
5910
5911         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
5912         the result of mono_type_get_underlying_type() to check whether
5913         we're byref.
5914
5915 2004-11-26  Martin Baulig  <martin@ximian.com>
5916
5917         * mini.c
5918         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
5919         in the g_assert().
5920
5921 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
5922
5923         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
5924         the same way as the other arguments so they won't get clobbered.
5925
5926         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
5927         calls through R11 since it is clobbered by the trampoline code.
5928
5929 2004-11-26  Raja R Harinath  <rharinath@novell.com>
5930
5931         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
5932         pick up in-tree mscorlib.dll.
5933
5934 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
5935
5936         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
5937
5938         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
5939         runtime data/code are now stored in a table similar to the GOT in ELF. 
5940         This allows the code itself to be position independent.
5941
5942         * aot.c: Fix loading of referenced assemblies after the lazy assembly
5943         loading changes.
5944
5945         * aot.c: Attach ELF type (object/function) directives to all global
5946         symbols.
5947
5948         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
5949
5950         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
5951
5952         * mini-amd64.h: Turn on PIC AOT code.
5953
5954         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
5955         returning the offset within an OP_AOTCONST instruction where the GOT
5956         offset needs to be added.
5957
5958         * mini.h: Bump AOT file format version.
5959
5960 2004-11-25  Martin Baulig  <martin@ximian.com>
5961
5962         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
5963         uninflated generic methods.
5964
5965 2004-11-25  Martin Baulig  <martin@ximian.com>
5966
5967         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
5968
5969 2004-11-24  Martin Baulig  <martin@ximian.com>
5970
5971         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
5972         original klass (this only applies for generic instances).
5973
5974 2004-11-24  Martin Baulig  <martin@ximian.com>
5975
5976         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
5977         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
5978         that array).
5979
5980 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
5981
5982         * mini.c (mono_method_to_ir): Disable inlining for methods containing
5983         localloc. Fixes #69678.
5984
5985         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
5986         
5987 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
5988
5989         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
5990         used SSE registers on pinvoke calls. Fixes #69774.
5991
5992 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
5993
5994         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
5995         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
5996
5997 2004-11-23  Raja R Harinath  <rharinath@novell.com>
5998
5999         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
6000         Refer directly to the mcs/ tree.
6001
6002 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6003
6004         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
6005         Check if a trampoline for a synchronized method is required. 
6006
6007 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
6008
6009         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
6010         with localloc if needed. Throe arithmetric exception in
6011         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
6012         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
6013
6014 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
6015
6016         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
6017         types before switching on type.  Fixes #69622.
6018
6019 2004-11-19  Raja R Harinath  <rharinath@novell.com>
6020
6021         * Makefile.am (check-local): New.  Integrate into 'make check'.
6022         (MCS,RUNTIME): Define using in-tree mono and mcs.
6023         (ILASM): New.
6024         (%.exe): Use $(ILASM).
6025
6026 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
6027
6028         * mini-ppc.c: adjust initial prolog size (bug #69691).
6029
6030 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
6031
6032         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
6033         #69664.
6034
6035 2004-11-17  Raja R Harinath  <rharinath@novell.com>
6036
6037         * Makefile.am (clean-local): Rename from 'clean'.
6038
6039 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6040
6041         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
6042         to mono_arch_is_int_overflow. 
6043         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
6044         SIGFPE events.
6045
6046 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
6047
6048         * declsec.c|h: New files to support declarative security attributes.
6049         Added function to check if a method has (applicable) security.
6050         * mini.c|h: Add check for declarative security attributes in
6051         mono_method_check_inlining.
6052         * Makefile.am: Added declsec.c and declsec.h to the build.
6053
6054 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
6055
6056         * mini.c, mini.h: update to keep dynamic code info per-domain.
6057
6058 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
6059
6060         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
6061         (mini_init): Get rid of it from here too.
6062
6063 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
6064
6065         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
6066         implemented OP_RETHROW (patch by Geoff Norton
6067         <gnorton@customerdna.com>).
6068
6069 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
6070
6071         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
6072         between appdomains.  Fixes appdomain-unload on PPC.
6073
6074 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
6075
6076         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6077         mini-exceptions.c: handle the new wrapper types.
6078         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
6079         token value as a MonoClass* when compiling a wrapper.
6080         mono_jit_create_remoting_trampoline now takes an additional
6081         MonoRemotingTarget parameter.
6082         
6083 2004-11-10  Martin Baulig  <martin@localhost>
6084
6085         * mini.c (mono_method_to_ir): Use `generic_container->context'
6086         rather than creating a new one.
6087
6088 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6089
6090         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
6091
6092         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
6093
6094 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
6095
6096         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
6097         the experimental aot cache stuff.
6098
6099 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
6100
6101         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6102         mini-exceptions.c: update to exception clause structure changes.
6103
6104 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6105
6106         * exceptions-x86.c (throw_exception): Fix warnings.
6107
6108         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
6109         for OP_RETHROW.
6110
6111 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6112
6113         * exceptions-sparc.c (get_throw_exception): Really fix this.
6114
6115 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
6116
6117         * tramp-*.c: we no longer support icalls without wrappers, so
6118         a bit of code can be removed here
6119
6120 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
6121
6122         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
6123         patch.
6124
6125         * cpu-sparc.md: Add op_rethrow.
6126
6127         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
6128
6129         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
6130
6131         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
6132         * mini-ops.h: Add OP_RETHROW.
6133
6134         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
6135
6136         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
6137
6138 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
6139         
6140         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
6141         Makes the output much easier to read
6142
6143 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
6144
6145         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
6146         prevents another huge leak when compiling with ssa. Secondly, the
6147         performance of doing this rather than freeing the lists is much
6148         better. GList does a lock every time you allocate a list link,
6149         so that it can use a memory pool. So, it is better to just use
6150         a memory pool of our own.
6151         
6152         * ssa.c, linear-scan.c: replace g_list_remove_link with
6153         g_list_delete.  The remove one does not free the GList, so we were
6154         leaking memory. On -O=all --compile-all with corlib, this cut down
6155         3 MB of allocations.
6156
6157 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
6158
6159         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
6160
6161         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
6162
6163         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
6164         into a new function mono_create_jit_trampoline ().
6165
6166 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
6167
6168         * trace.c (get_spec): Allow tracing of classes without a namespace.
6169
6170 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
6171
6172         * mini.c: Fix pointer overwrite in mini_method_compile.
6173
6174 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
6175
6176         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
6177         The darwin ABI needs some special handling for 1 and 2 byte structs
6178         Lets use lbz/lhz instead of lwz everywhere.
6179         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
6180         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
6181         Use stb/sth for the former, and put the latter always on stack instead of in
6182         argument registers.
6183
6184 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
6185
6186         * trace.c (is_filenamechar): Add '_'.
6187
6188 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
6189
6190         * mini-s390.c: Fix prolog length to allow for large trace requirements.
6191
6192         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
6193
6194 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
6195
6196         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
6197         depends on libmonogc. Fixes #68805.
6198
6199 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
6200
6201         * mini.c (mono_jit_free_method): Provide extra information for
6202         this error.  Currently this leaks, but will be turned into a
6203         developer option in the future.
6204
6205 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
6206
6207         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
6208
6209 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
6210
6211         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
6212         boundary. Fixes reading of PATCH_INFO_R4 and R8.
6213         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
6214
6215 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
6216
6217         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
6218         trampolines for AOT code.
6219
6220 2004-10-22    <vargaz@freemail.hu>
6221
6222         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
6223         constructed types. Fixes #68136.
6224
6225 2004-10-21  Martin Baulig  <martin@ximian.com>
6226
6227         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
6228         if it returns true, unwind the stack to the call instruction.
6229
6230 2004-10-21    <vargaz@freemail.hu>
6231
6232         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
6233
6234         * mini.h: Bump AOT version number.
6235
6236         * objects.cs: Add another test for unbox trampolines.
6237
6238         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
6239         valuetype methods.
6240
6241 2004-10-20    <vargaz@freemail.hu>
6242
6243         * driver.c: Add SHARED to the set of optimizations tested.
6244
6245         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
6246
6247         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
6248         used by CEE_NEWARR.
6249
6250         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
6251
6252 2004-10-20  Martin Baulig  <martin@ximian.com>
6253
6254         * mini-exceptions.c (mono_handle_exception): Call
6255         mono_debugger_handle_exception() to tell the debugger about
6256         catch/finally clauses.
6257
6258 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
6259
6260         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
6261
6262         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
6263         #68447.
6264
6265 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
6266
6267         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
6268         methods as their native size, fixed bug #57543, #57545.
6269         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
6270         This saves a temporary register and mullw call down into 1 (minor perf
6271         increase for cases like sum = sum * 5;  This use to translate into:
6272             li r11,5
6273             mullw r28,r28,r11
6274         It now translates to
6275             mulli r28,r28,5
6276
6277 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
6278
6279         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
6280         #68388.
6281
6282 2004-10-11  Martin Baulig  <martin@ximian.com>
6283
6284         * mini.c (mono_method_to_ir): If we're a generic method, get the
6285         MonoGenericContainer from our MonoMethodNormal and create a
6286         MonoGenericContext from it.
6287
6288 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
6289
6290         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
6291
6292         * basic-long.cs: Add test for checked i8->i2 cast.
6293
6294 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
6295
6296         * inssel-ppc.brg: added a couple of speedup rules.
6297
6298 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
6299
6300         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
6301         to speed up rebuilds.
6302
6303 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6304
6305         * mini-s390.c: Minor fix to OP_OR_IMM.
6306
6307 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
6308
6309         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
6310         better. Fixes appdomain-unload.exe on sparc.
6311
6312 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
6313
6314         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
6315         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
6316         see bug 67324.
6317
6318 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
6319
6320         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
6321
6322 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
6323
6324         * mini.c: Always generate a field read/write wrapper for members
6325         of the class MarshalByRefObject since the actual instance could
6326         be a CBO.
6327
6328 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
6329
6330         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
6331
6332 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
6333
6334         * driver.c mini.h trace.c: Move the setting of the main assembly into
6335         a separate function called mono_trace_set_assembly () and call it after
6336         actually loading the main assembly. Fixes #66872.
6337
6338 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
6339
6340         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
6341         using the code manager.
6342
6343 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
6344
6345         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
6346
6347 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
6348
6349         * cpu-amd64.md: Fix bug in previous patch.
6350         
6351         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
6352         #66650.
6353
6354 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
6355
6356         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6357         mini-exceptions.c: updates for changed stack walk interface.
6358
6359 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6360
6361         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
6362
6363 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
6364
6365         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
6366
6367 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
6368
6369         * driver.c (mini_regression_list): Do not call mono_assembly_close 
6370         since assemblies can't be unloaded.
6371         
6372 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
6373
6374         * cpu-amd64.md: Fix more instruction lengths.
6375
6376         * cpu-amd64.md: Fix lengths of some instructions.
6377
6378 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
6379
6380         * inssel.brg: Make the array ldelema check aot friendly.
6381
6382 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
6383
6384         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
6385
6386         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
6387
6388 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
6389
6390         * mini-x86.c: Fix build.
6391
6392         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
6393         mono_type_get_underlying_type () helper function to simplify code.
6394         
6395 2004-09-09  Martin Baulig  <martin@ximian.com>
6396
6397         * mini-amd64.c: Don't access `type->data.klass' directly, call
6398         mono_class_from_mono_type() instead since the type may be a
6399         generic instance.
6400
6401 2004-09-09  Martin Baulig  <martin@ximian.com>
6402
6403         * mini-amd64.c (get_call_info): Fix support for generic instances.
6404         (add_valuetype): Use mono_class_from_mono_type() to get the class
6405         since we can be a generic instance.
6406
6407 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
6408
6409         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
6410
6411 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
6412
6413         * liveness.c: reset spill costs on each scan: bug 62107
6414
6415 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
6416
6417         * exceptions-sparc.c (mono_arch_find_jit_info): remove
6418         unnecessary line that doesn't compile
6419
6420 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
6421
6422         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
6423         trampolines, make them call an error function so people can fix their
6424         code.
6425
6426 2004-09-06  Martin Baulig  <martin@ximian.com>
6427
6428         * mini.c (mono_method_to_ir): When initializing locals, handle a
6429         generic instances like a valuetype if it's a valuetype and like a
6430         class if it's a class.
6431
6432 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
6433
6434         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
6435         stack. Fixes #64674.
6436
6437         * exceptions.cs: Add test for unwinding of call arguments.
6438
6439 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
6440
6441         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
6442         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
6443         set the carry/borrow flag). The sparc and s390 implementations
6444         can now use optimized versions (and simplify the code). ppc bugfixes.
6445
6446 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
6447
6448         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
6449
6450 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
6451
6452         * inssel-amd64.brg: Remove leftover 32 bit rule.
6453
6454         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
6455
6456 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
6457
6458         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
6459         mono_arch_find_jit_info functions into a new function. Fix a memory
6460         leak.
6461
6462         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
6463         refactored code.
6464         
6465 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
6466
6467         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
6468         as well.
6469         
6470         * exceptions.cs: Add array size tests.
6471
6472         * mini.c: Allocate a separate icall wrapper for each arity of 
6473         mono_array_new_va. Fixes #59509.
6474
6475         * exceptions.cs: Add testcase for 64578.
6476
6477         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
6478
6479         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
6480         
6481 2004-09-02  Martin Baulig  <martin@ximian.com>
6482
6483         * mini.c (mono_method_to_ir): When initializing the locals, call
6484         handle_initobj() on the generic instance itself, not its
6485         underlying type.
6486
6487 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
6488
6489         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
6490         MonoJitInfo for dynamic methods.
6491
6492         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
6493
6494         * mini.c: Add support for freeing JIT data for dynamic methods.
6495         
6496 2004-09-01  Martin Baulig  <martin@ximian.com>
6497
6498         * mini-x86.c (is_regsize_var): Added support for generic
6499         instances.
6500         (mono_arch_emit_prolog): Make this compile again, use
6501         `x86_push_imm_template (code)'.
6502
6503 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
6504
6505         * mini-x86.c: make all push_imm instructions that get
6506         patched always emit the long form
6507
6508 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
6509
6510         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
6511         in a per-domain hash.
6512
6513         * mini-amd64.c (merge_argument_class_from_type): Handle generic
6514         types.
6515
6516 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
6517
6518         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
6519         work.
6520         
6521         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
6522         work.
6523
6524         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
6525         Beginnings of SSE2 support.
6526
6527         * exceptions.cs: Add more tests for checked int<->uint casts.
6528
6529 2004-08-28  Martin Baulig  <martin@ximian.com>
6530
6531         * mini-x86.c (mono_arch_instrument_epilog): Added support for
6532         generic instances.
6533
6534         * mini.c
6535         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
6536         Handle generic instances recursively.
6537
6538 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6539
6540         * iltests.il: test for conv.u8 on a constant
6541
6542 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6543
6544         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
6545         LCONV_x4 (shrun_32 (membase)).
6546
6547 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
6548
6549         * inssel-x86.brg: c&p rules for push/setret of long
6550
6551 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
6552
6553         * inssel-x86.brg: c&p rules for compare (base, regvar) and
6554         compare (regvar, base)
6555
6556         * inssel-x86.brg: more burg love
6557
6558         * inssel.brg: more cleanup
6559
6560         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
6561
6562 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
6563
6564         * basic-long.cs, basic-calls.cs: new tests for optimization.
6565
6566 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
6567
6568         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
6569         patch.
6570
6571 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
6572
6573         * mini-amd64.c (read_tls_offset_from_method): Add another case.
6574         
6575 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
6576
6577         * inssel.brg (mini_emit_memcpy): use 
6578         NO_UNALIGNED_ACCESS to disable memcpy optimization
6579
6580 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
6581
6582         * mini-amd64.c: Handle generic types in various places.
6583
6584         * mini.c (mono_method_to_ir): Handle generic types in init locals.
6585
6586 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
6587
6588         * mini.c (handle_box): Fix warning.
6589
6590         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
6591
6592         * mini-amd64.h: Enable the emit_state optimization.
6593
6594         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
6595
6596         * mini-amd64.c: Add some new 64 bit peephole opts.
6597
6598         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
6599
6600         * cpu-amd64.md: sreg1 of div instructions must be %rax.
6601
6602         * mini-amd64.c: Register allocator fixes.
6603
6604         * mini.c: Add an optimization to emit_state to avoid allocation of new
6605         registers on some platforms.
6606
6607 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
6608
6609         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
6610
6611         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
6612         allocation. Fixes #63085.
6613
6614         * basic-long.cs: Add new regression test.
6615
6616         * mini-amd64.c: Register allocator improvements.
6617
6618 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
6619
6620         * mini-amd64.c (read_tls_offset_from_method): Add another code
6621         sequence.
6622
6623         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
6624         instruction sequence for nullifying class init trampolines.
6625
6626         * objects.cs: Add new regalloc test.
6627
6628         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
6629
6630 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
6631
6632         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
6633         
6634         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
6635         arguments.
6636
6637         * driver.c: Fix profiling after TLS changes.
6638         
6639         * driver.c (mono_main): Set mono_stats.enabled if needed.
6640
6641         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
6642         CEE_BOX.
6643
6644 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
6645
6646         * mini-x86.c: use a 1 op rather than a 2 op tls access
6647         instruction -> faster.
6648
6649 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
6650
6651         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
6652         x86 backend.
6653
6654 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
6655
6656         * exceptions-sparc.c (throw_exception): fix typo
6657
6658 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
6659
6660         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
6661         set tree->dreg correctly with tls. Allow any
6662         register to be used.
6663
6664         * mini-x86.c (read_tls_offset_from_method): add new code
6665         generation pattern seen with GCC.
6666
6667
6668 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
6669
6670         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
6671         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6672         exceptions-sparc.c: fix some performance issues in exception
6673         handling and setting of the stack trace for exceptions that were
6674         already thrown.
6675
6676 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
6677
6678         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
6679         x86 backend.
6680         
6681         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
6682         registers.
6683
6684 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
6685
6686         This patch inlines tls access, when possible.
6687         
6688         * mini.h: new arch functions for TLS intrinsics.
6689         All platforms updated with a stub.
6690
6691         * mini.c: use the new intrinsics
6692
6693         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
6694         arch specific intrinsic for tls variables
6695
6696 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
6697
6698         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
6699         under windows.
6700
6701 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
6702
6703         * mini.c: thread local allocation
6704
6705 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
6706
6707         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
6708
6709         * Makefile.am: Link against the static version of libmonogc.
6710         
6711         * Makefile.am: Link the static versions of the convenience libraries
6712         into the mono executable.
6713
6714         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
6715
6716 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
6717
6718         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
6719         on integer overflow.
6720
6721         * mini-amd64.c: Reorganize function call code.
6722
6723         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
6724
6725 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
6726
6727         * inssel-x86.brg: use xor eax,eax.
6728         
6729         * basic.cs: new tests
6730
6731 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
6732
6733         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
6734         in exception throwing code.
6735         
6736 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
6737
6738         * inssel-x86.brg: use xor esi,esi.
6739
6740 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
6741
6742         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
6743         can trace methods compiled during mini_init () too.
6744
6745         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
6746         CEE_CONV_U4.
6747
6748 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
6749
6750         * Makefile.am: static link on x86 (r=zoltan)
6751
6752 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
6753
6754         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
6755         code since it causes some programs to fail.
6756
6757 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
6758
6759         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
6760
6761 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
6762
6763         * mini.c: ovfops_op_map - add STACK_OBJ case for
6764         CONV_I 
6765         * basic.cs: add test_0_pin_string as test
6766         case for above.
6767
6768 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
6769
6770         * Makefile.am: build C# if srcdir != builddir
6771
6772 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
6773
6774         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
6775         fall-through blocks.
6776
6777 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
6778
6779         * driver.c: enable loop by default again and include abcrem in -O=all.
6780
6781 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
6782
6783         * iltests.il: Add some localloc tests.
6784
6785         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
6786
6787         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
6788         Fixes #62574.
6789
6790         * inssel-amd64.brg: Add some optimizations.
6791
6792         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
6793         for gcc-3.4.
6794
6795         * Makefile.am: Statically link mono against libmono on AMD64.
6796         
6797         * mini-amd64.c inssel-amd64.brg: Optimizations.
6798
6799 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
6800
6801         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
6802
6803         * tramp-amd64.c: Patch calling code in trampolines.
6804
6805 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
6806
6807         * mini-amd64.c: pinvoke struct passing fixes.
6808
6809 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
6810
6811         * mini-sparc.c: redo change, make mono_arch_cpu_init call
6812         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
6813
6814 2004-08-05  Duncan Mak  <duncan@ximian.com>
6815
6816         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
6817         CEE_LDELEM_ANY.
6818
6819 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
6820
6821         * mini-amd64.c (emit_move_return_value): Move return value for normal
6822         calls too.
6823
6824 2004-08-05  Martin Baulig  <martin@ximian.com>
6825
6826         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
6827         `type->type'; just modify `type' itself when dealing with enums
6828         and generic instances.
6829         (check_call_signature): Make `simple_type' a `MonoType *'.
6830
6831 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
6832
6833         * mini.c: Use OP_PADD to add offsets to addresses.
6834
6835         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
6836
6837 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
6838
6839         * mini-sparc.c (mono_arch_emit_epilog): fix check
6840         for folding last op into restore instruction
6841
6842 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
6843
6844         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
6845         helper methods using the code manager.
6846         
6847         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
6848
6849         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
6850
6851 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6852         
6853         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
6854           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
6855
6856         * mini-s390.c: fix tail processing
6857
6858 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
6859
6860         * mini-ppc.c: mul.ovf.un exception name fix.
6861
6862 2004-08-03  Martin Baulig  <martin@ximian.com>
6863
6864         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
6865         instances; before jumping to `handle_enum', also modify `ptype'.
6866
6867 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
6868
6869         * cpu-sparc.md: fcall maximal length too small.
6870
6871 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
6872
6873         * mini-amd64.c mini.h: Add initial support for passing/returning 
6874         structures to/from pinvoked methods.
6875
6876 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
6877
6878         * mini-ppc.c: reg allocator fix.
6879
6880 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
6881
6882         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
6883
6884         * inssel.brg: Optimize memset on 64 bit machines.
6885
6886         * mini-amd64.c: Fix some vararg cases.
6887
6888 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6889
6890         * mini-s390.c: Corrected macro in emit_float_to_int
6891
6892         * s390-abi.cs: Tests to exercise the s390 ABI
6893
6894 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6895
6896         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
6897         caller saved regs.
6898
6899         * basic.cs: Add a test for add.ovf.un.
6900
6901 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
6902
6903         * mini-sparc.c: add case for OP_IDIV_UN
6904
6905 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6906
6907         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
6908         
6909         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
6910
6911 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
6912
6913         * basic.cs: regression tests.
6914
6915         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
6916         regressions.
6917
6918 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
6919
6920         * basic.cs: Add a new test.
6921
6922         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
6923         and AOT. Various fixes and optimizations.
6924
6925         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
6926
6927 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
6928
6929         * mini-ppc.c: make sure temp regs are not used for global reg
6930         allocation.
6931
6932 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
6933
6934         * cpu-sparc.md: conv_i8 fix for 64bits
6935
6936         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
6937
6938 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
6939         
6940         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
6941         add opcode for cmp BYTE PTR [eax], imm.
6942
6943         * inssel.brg: Make memcpy and memset takes bases.
6944
6945 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
6946
6947         * *-amd64.*: More AMD64 work.
6948         
6949 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
6950
6951         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
6952         add a compare-not-equal opcode.
6953         
6954 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
6955
6956         * mini.c: Use mono_init_from_assembly instead of mono_init.
6957         
6958 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
6959
6960         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
6961
6962         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
6963
6964         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
6965
6966         * inssel.brg: 64 bit fixes.
6967
6968         * mini.h (MonoCallInst): Add some AMD64 specific data.
6969
6970         * mini.h: Add some OP_P opcodes.
6971
6972 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
6973
6974         * basic.cs: tests for 61797 and 61740
6975
6976 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
6977
6978         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
6979         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
6980
6981 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
6982
6983         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
6984
6985         * *-amd64*.*: Ongoing AMD64 work.
6986
6987 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
6988
6989         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
6990
6991         * *-amd64*: Ongoing AMD64 work.
6992
6993         * mini-arch.h: Add AMD64 support.
6994
6995         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
6996
6997         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
6998
6999         * mini-ops.h: Add new opcodes.
7000
7001         * Makefile.am: Add AMD64 support.
7002
7003         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
7004         rules into the inssel-long*.brg files.
7005
7006         * *-amd64.*: Add beginnings of AMD64 backend.
7007
7008 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
7009
7010         * mini.c (print_dfn): commenting out the code that prints
7011         the cil. With -O=deadce, this makes -v -v crash.
7012         
7013         * cpu-pentium.md: make checkthis have a length of 2
7014
7015 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
7016
7017         * mini-sparc.h: fix implementations of __builtin
7018         functions for Sun compiler for V9.
7019
7020 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
7021
7022         * mini.c: use the new stelem.ref wrapper
7023         * exceptions.cs, arrays.cs: new stelem.ref tests
7024
7025 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
7026
7027         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
7028         new XSP should work with these changes).
7029
7030 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
7031         
7032         * inssel-{long32,x86,}.brg: trivial optimizations.
7033         
7034 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
7035
7036         * mini.c: load value when emitting box operation in
7037         constrained calls.
7038
7039 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
7040
7041         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
7042         is one byte shorter than cmp DWORD PTR [eax], 0.
7043
7044 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
7045
7046         * inssel-ppc.brg: arguments on the stack are always
7047         relative to the stack pointer (spotted by Neale Ferguson).
7048
7049 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7050
7051         * exceptions-x86.c: delay appending the method name to the trace until
7052         after mono_jit_info_table_find is called, as this gets the real
7053         MonoMethod.
7054
7055 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
7056
7057         * aot.c: register roots
7058
7059 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7060
7061         * aot.c : I could just use PLATFORM_WIN32 flag.
7062
7063 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7064
7065         * aot.c : Reverting the previous fix. This time it broke linux build.
7066
7067 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7068
7069         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
7070
7071 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
7072
7073         * mini.c (handle_stack_args): Remove some more debugging code.
7074         
7075         * mini.c (handle_stack_args): Remove debug output left in by mistake.
7076
7077         * driver.c mini.h aot.c: Allow additional options to be specified with
7078         --aot and pass them to mono_compile_assembly.
7079
7080         * aot.c: Add experimental code to AOT compile all loaded assemblies
7081         on demand and save the code into a cache in the filesystem.
7082
7083         * aot.c: Add support for more wrapper methods.
7084         
7085         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
7086         58863.
7087
7088         * cpu-*.md: Remove removed opcodes.
7089
7090         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
7091         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
7092         related icalls to marshal.c.
7093
7094 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
7095
7096         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
7097
7098         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
7099
7100         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
7101
7102 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
7103         * liveness.c: If liveness is recomputated we need to reset the information
7104         for each variable. This way, if the liveness range has been narrowed
7105         by optimizations that happened after the last computation, we can return
7106         a smaller range.
7107         
7108         For example, if you have
7109         
7110         {
7111                 int i = 0;
7112                 
7113                 // Tons of code that does not affect i
7114                 
7115                 i = foo ();
7116                 ...
7117         }
7118         
7119         i = 0 is dead code and will be removed by SSA. However, when
7120         linear scan gets to the code, i will still appear to be live
7121         throughout the entire block. This prevents good register allocation.
7122
7123 2004-07-06  Martin Baulig  <martin@ximian.com>
7124
7125         * debug-mini.c (mono_debug_init_method): Allow
7126         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
7127         (mono_debug_add_icall_wrapper): New method.
7128
7129         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
7130
7131 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
7132
7133         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
7134         optimization.
7135
7136 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
7137
7138         * aot.c (mono_aot_load_method): Fix loading of debug info.
7139
7140 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7141
7142         * aot.c: Add logging support.
7143
7144 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7145
7146         * mini.h: Add prototype for mono_print_method_from_ip.
7147
7148         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
7149
7150         * inssel.brg: 64 bit fixes.
7151
7152         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
7153         inssel-long32.brg.
7154
7155         * Makefile.am: Add SPARC64 support.
7156
7157 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7158
7159         * aot.c: Fix alignment problems on 32 bit platforms.
7160
7161 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7162
7163         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
7164         SPARC64.
7165
7166         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
7167         problems.
7168
7169         * mini.h: Bump AOT file version. Some 64 bit fixes.
7170
7171 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7172
7173         * inssel-sparc.brg: Add new rule to avoid register moves.
7174
7175         * inssel.brg: Add ldind_to_load_membase helper function.
7176
7177 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
7178
7179         * mini.c: OffsetToStringData intrinsic.
7180         
7181 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7182
7183         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
7184
7185         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
7186         regression tests.
7187
7188         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
7189 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7190
7191         * mini.c: reinstated mono_compile_get_interface_var()
7192         on x86, too, since the change breaks the Gtk# build there as well.
7193
7194 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7195
7196         * driver.c: remove loop from the default optimizations: it seems to
7197         interact badly with some of the other options (see bug #60613).
7198
7199 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
7200
7201         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
7202         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
7203
7204 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
7205
7206         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
7207         vararg-using methods.
7208
7209 2004-06-21  Martin Baulig  <martin@ximian.com>
7210
7211         * mini/mini-exceptions.c
7212         (mono_handle_exception): Added `gpointer original_ip' argument.
7213         After calling mono_unhandled_exception(), call
7214         mono_debugger_unhandled_exception() and if that returns true,
7215         restore the context and return.
7216
7217 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
7218
7219         * mini-ppc.c: prefer the use of relative branches so
7220         they won't need to be patched in aot code (patch from Patrick Beard).
7221
7222 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
7223
7224         * aot.c: patch from Patrick Beard to make the output assembly
7225         more correct for the MacOSX assembler. Small tweak to
7226         generate sane images on Linux/PPC, too.
7227
7228 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7229
7230         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
7231         case until bug #59509 is fixed (shows up in #60332).
7232
7233 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7234
7235         * mini.c: make sure the needed wrappers are compiled, too, with
7236         precomp.
7237
7238 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
7239
7240         * driver.c: remove NPTL reference in --version output.
7241
7242 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7243
7244         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
7245         generate valid assembly for the Mach-O assembler.
7246
7247 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
7248
7249         * driver.c: don't include abcrem in the all optimization specifier
7250         since it slows down jit compilation too much for now.
7251
7252 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
7253
7254         * mini.c: use BIGMUL only if both operands have the same signage.
7255         * iltests.il: Test for bug 60056. (errors related to signage in
7256         BIGMUL).
7257
7258         r=lupus.
7259
7260 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
7261
7262         * mini.c, aot.c: memory leak fixes.
7263
7264 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
7265
7266         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
7267
7268 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
7269
7270         * Makefile.am: remove the -static hack completely, it links in
7271         statically glib as well.
7272
7273 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
7274
7275         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
7276         * exceptions.cs: make it compile with new mcs/csc.
7277
7278 2004-06-03 Massimiliano Mantione <massi@ximian.com>
7279         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
7280         and added relevant test case.
7281
7282 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
7283
7284         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
7285         regressions in gtk-sharp.
7286
7287 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
7288
7289         * exceptions.cs: New regression tests.
7290
7291         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
7292
7293 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
7294
7295         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
7296
7297 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
7298
7299         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
7300
7301         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
7302
7303 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
7304
7305         * mini.c (mono_jit_runtime_invoke): Init class in this
7306         method instead of trusting mono_jit_compile_method to
7307         do the work (because wrappers can be in object class)
7308
7309 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
7310
7311         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
7312
7313         * basic-long.cs: New regression test.
7314
7315 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
7316
7317         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
7318         and div/rem checks.
7319
7320 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
7321
7322         * Makefile.am: fix miguel's change to build mono statically against
7323         libmono (track build dependencies).
7324
7325 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
7326
7327         * cfold.c: Some glib versions do not have G_MININT32.
7328
7329 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
7330
7331         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
7332         with precision of tan, atan, sin and cos, and implemented related
7333         regressions tests (fixes bug 54467, but one new problem appeared and
7334         is not fixed yet).
7335
7336 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
7337
7338         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
7339
7340         * exceptions.cs: Add test for constant folding && division by zero.
7341
7342         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
7343         since driver.c is in libmono too, so the optimization was useless.
7344
7345         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
7346         variable to driver.c so the compiler can emit more efficient code to
7347         access them.
7348
7349 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7350
7351         * Makefile.am: don't distribute generated inssel.[ch] files.
7352
7353 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
7354
7355         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
7356         into the default appdomain. Fixes #58707.
7357
7358         * jit-icalls.c: Remove the broken approximation for truncl, doing
7359         no conversion is better.
7360
7361         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
7362         Fixes #58863.
7363
7364 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
7365
7366         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
7367         of the mcrxr instruction which is not available on some processors
7368         even if it's documented to be. Implement add and sub overflow correctly
7369         (still not complete for long unsigned). Speed up icalls a bit.
7370
7371 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
7372
7373         * mini.c (mono_jit_compile_method_with_opt): Make sure that
7374         we run .cctor in the current domain instead of target_domain.
7375         
7376         Fixes bug #58558, .cctor not being called in -O=shared.
7377
7378 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
7379
7380         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
7381
7382 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
7383
7384         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
7385         which can be done with an imm8, do it that way.
7386         (mono_arch_output_basic_block): ditto for a jmp
7387         (mono_arch_emit_prolog): Computate maximum offset of a label.
7388
7389 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
7390
7391         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
7392         now tries to allocate prefered physical reg's for virtual
7393         regs. This reduces the number of emited spills/loads with
7394         20-30% on our core assemblies.
7395
7396 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7397
7398         * jit-icalls.c: truncl() is not needed and trunc() is
7399         the correct thing to do anyway (bug #58287).
7400
7401 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
7402
7403         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
7404         if available.
7405
7406 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
7407
7408         * driver.c: enable loop optimizations by default.
7409
7410 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
7411
7412         * mini-x86.c: fix calc of max loop size when aligning loops start.
7413
7414 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
7415
7416         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
7417         the stack.
7418
7419 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
7420
7421         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
7422         should set carry.
7423
7424         * basic-long.cs: Add tests for add/subtract of immediates with carry.
7425
7426         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
7427         
7428         * mini.c (inline_method): Allways inline some wrappers even if the cost
7429         is too large. Fixes #58785.
7430
7431         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
7432         
7433 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
7434
7435         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
7436         (crichton@gimp.org). Beginning of support for sparc/linux.
7437
7438         * mini-sparc.c: Optimize retrieval of LMF address.
7439
7440 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
7441
7442         * exceptions-ppc.c:  handle alloca in methods with clauses.
7443
7444 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
7445
7446         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
7447
7448 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
7449
7450         * mini.c: Delegate most of the abort signal work to 
7451           mono_thread_request_interruption, which also handles Stop and Suspend
7452           states.
7453
7454 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
7455
7456         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
7457         supports the save/restore lmf opcodes.
7458
7459 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
7460
7461         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
7462         by gcc-3.4 as well.
7463
7464         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
7465
7466 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
7467
7468         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
7469         methods which contain array accesses.
7470
7471         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
7472         boundaries. Fixes #58537.
7473
7474         * iltests.il: Add regression test for #58537.
7475
7476 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
7477
7478         * mini-x86.c (mono_arch_local_regalloc): Last part of
7479         fix for bug #58633 (releasing register to early).
7480
7481 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
7482
7483         * basic-long.cs: Add new regression test.
7484
7485 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
7486
7487         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
7488         register too early on the chain.
7489
7490 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
7491
7492         * mini.c (create_helper_signature): Use a helper function to reduce
7493         the code which needs to be written. Also set the calling convention of
7494         icalls on windows. Fixes #57840.
7495
7496 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
7497
7498         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
7499         exceptions-ppc.c: added helper function to get the instruction address
7500         from a signal handler context.
7501
7502 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7503
7504         * helpers.c: use g_get_tmp_dir. Invokes happyness 
7505         from gonzalo.
7506
7507 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7508
7509         * helpers.c: Add new env variable to pass args to objdump.
7510         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
7511
7512 2004-05-17  Radek Doulik  <rodo@ximian.com>
7513
7514         * Makefile.am (common_sources): added abcremoval.h so it get
7515         disted and daily mono packages on go-mono.com will build again
7516
7517 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
7518
7519         * abcremoval.c: Fixed coding style, added copyright header.
7520
7521         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
7522
7523         * mini.h: Added prototype for abc removal main function.
7524
7525         * build_relations_propagation_table.pl: Added copyright header.
7526
7527 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
7528
7529         * basic-long.cs: reg test for complex ceq_long bug.
7530
7531 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
7532
7533         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
7534         reg in long and clob case (bug #58343). Fixed/added comments.
7535
7536 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
7537
7538         * mini.c (mono_jit_runtime_invoke): Follow new convention
7539         of calling the invoke method with an function pointer.
7540
7541 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
7542
7543         * ChangeLog: Fix author of memory leak patch.
7544
7545 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
7546
7547         * Makefile.am: fix make dist as well...
7548
7549
7550 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
7551
7552         * cfold.c: Made so that conversions from pointer to int4 are no-ops
7553         on archs where pointers are 4 bytes long.
7554
7555         * Makefile.am: Added abcremoval.c source file.
7556
7557         * abcremoval.c: Added abcremoval.c.
7558
7559         * abcremoval.h: Added abcremoval.h.
7560
7561         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
7562
7563         * inssel.brg: Enabled bounds check removal.
7564
7565         * mini.c: Added support for abcrem optimization.
7566
7567         * mini.h: Added abcrem optimization label.
7568
7569         * driver.c: Added support for abcrem optimization.
7570
7571         * propagated_relations_table.def: Added propagated_relations_table.def.
7572
7573 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
7574
7575         * mini.c, cfold.c: fix style.
7576
7577 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7578
7579         * mini.c: handle issue with the low-level implementation of
7580         some long opcodes (bug #54209).
7581
7582 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
7583
7584         * basic.cs: test for my new cmov stuff.
7585
7586 2004-05-13      Patrik Torstensson
7587
7588         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
7589         opt and added peephole documentation.
7590
7591 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
7592
7593         * tramp-ppc.c: rewrote the generic trampoline code.
7594
7595 2004-05-11      Patrik Torstensson
7596
7597         * mini-x86.c: optimize long shl/shr asm code (one less branch)
7598
7599 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
7600
7601         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
7602
7603         * mini.h mini.c dominators.c: Applied patch from Derek Woo
7604         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
7605
7606         * mini.c: Add new icalls for AsAny marshalling.
7607
7608 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
7609
7610         * tramp-ppc.c, mini-ppc.c: more cleanups.
7611
7612 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7613
7614         * mini.c: no warnings.
7615
7616 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7617
7618         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
7619
7620 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
7621
7622         * mini.c: In the thread abort signal handler, if the thread is in the
7623         process of being stoped, don't throw the Abort exception, just stop the
7624         thread.
7625
7626 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
7627
7628         * tramp-ppc.c: removed old code.
7629
7630 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7631
7632         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
7633         do some simple speed optimizations on ppc.
7634
7635 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
7636
7637         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
7638         and large offsets in load/store.
7639
7640 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
7641
7642         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
7643         it causes regressions.
7644
7645 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
7646
7647         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
7648         support.
7649
7650 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
7651
7652         * jit-icalls.c: remove warnings.
7653         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
7654         speedups for unsafe code.
7655
7656 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
7657
7658         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
7659
7660 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
7661
7662         * basic-calls.cs: Add new regression test.
7663
7664         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
7665         more portable.
7666
7667         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
7668
7669         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
7670         is no longer used.
7671
7672 2004-05-06      Patrik Torstensson
7673
7674         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
7675         long reg allocation in any reg (not only eax:edx) and implemented 
7676         long shl/shr ops in asm instead of helpers.
7677
7678 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
7679
7680         * mini-sparc.h: Fix warnings.
7681
7682         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
7683         stack.
7684
7685         * mini-exceptions.c (mono_handle_exception): Call the filter in a
7686         separate statement for clarity.
7687
7688         * mini-sparc.c: Update status.
7689
7690 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
7691
7692         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
7693         here.
7694
7695 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7696
7697         * inssel-ppc.brg: another small pre-release workaround:
7698         we don't do overflow detection for long_sub_un.
7699
7700 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7701
7702         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
7703         (also works around a weird ppc bug: 57957).
7704
7705 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
7706
7707         * tramp-ppc.c: trampoline fixes.
7708
7709 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
7710
7711         * mini-ppc.c: fixed typos.
7712
7713 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
7714
7715         * mini-ppc.c, exceptions-ppc.c: more code saves registers
7716         at the top of the stack. Fixed typos. Use a frame registers
7717         for all the methods with exception clauses.
7718
7719 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7720
7721         * exceptions-ppc.c: restore fp registers.
7722
7723 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
7724
7725         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
7726         order from the stack top (moved the stack room to save the
7727         return value for trace after the param area). Fixed corruption
7728         in restoring registers on unwind.
7729
7730 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
7731
7732         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
7733
7734 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7735
7736         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
7737         and prolog/epilog for methods that use it. Allow
7738         enough param area room for varargs methods. Fix miguel's
7739         breakage in exception handling.
7740
7741 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
7742
7743         * Makefile.am: run genmdesc only on current arch.
7744
7745 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7746
7747         * exceptions-x86.c:
7748         * mini-x86.h: fix the build on windows.
7749
7750 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
7751
7752         * 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.
7753
7754         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
7755
7756         * mini-exceptions.c: New file.
7757         
7758         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
7759         Move some parts of the x86 exception handling code to an 
7760         arch-independent file so it can be shared with other ports.
7761
7762 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
7763
7764         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
7765
7766 2004-04-26  David Waite  <mass@akuma.org>
7767
7768         * driver.c: remove comma from end of enumeration declaration
7769
7770 2004-04-26  Jackson Harper  <jackson@ximian.com>
7771
7772         * driver.c: parse config file before loading first assembly. This
7773         allows the user gac to be enabled/disabled. 
7774         
7775 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
7776
7777         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
7778         simpler mechanism: we do not care what is encoded initially
7779         (branch absolute or relative), we care about the code and its
7780         target.  I kept the old code for reference for now.
7781
7782         The new code tries first to determine if the jump is anywhere in
7783         the -/+32 absolute meg range, if it succeeds, it encodes using the
7784         absolute branch;  If not, it tried to find something in the
7785         relative range, if not, it uses the handle_thunk code. 
7786
7787 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
7788
7789         * exceptions-ppc.c: use the correct ip register on macosx.
7790
7791 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
7792
7793         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
7794
7795 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
7796
7797         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
7798         Raise exception on integer divide by zero by hand since the hw
7799         doesn't support it. Handle NaNs in FP compares.
7800
7801 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
7802
7803         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
7804         code reducing duplication between the platforms and enabled
7805         signal exception handling (on linux for now).
7806
7807 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
7808
7809         * exceptions-ppc.c: more macosx support.
7810
7811 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7812
7813         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
7814
7815 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
7816
7817         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
7818
7819 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
7820
7821         * iltests.il: more tests.
7822
7823 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
7824
7825         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
7826         vars as well.
7827
7828 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
7829
7830         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
7831
7832 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
7833
7834         * liveness.c: Mark variables as volatile in all basic blocks reachable
7835         from exception clauses.
7836
7837 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
7838
7839         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
7840         inlining.
7841
7842 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
7843
7844         * iltests.il, basic.cs: more tests for regalloc.
7845
7846 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7847
7848         * iltests.il: Some tests for register allocation modifications
7849         I have locally.
7850
7851 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
7852
7853         * exceptions.cs: Add regression test for bug #56782.
7854
7855         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
7856         original stack trace if an exception is rethrown. Fixes #56782. Oh,
7857         the beauty of fixing the same thing in 5 different files...
7858
7859 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
7860
7861         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
7862         methods.
7863
7864 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
7865
7866         * mini.c: Add support for STRWLPARRAY marshalling convention.
7867
7868 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
7869
7870         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
7871         to init the context to setup the regs pointer).
7872
7873 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7874
7875         * exceptions-ppc.c: more exceptions work.
7876
7877 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7878
7879         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
7880         not allowed.
7881
7882 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
7883
7884         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
7885         can use the memory directly.
7886
7887         * cpu-pentium.md: Update documentation from a post from Zoltan. 
7888
7889         add x86_add_membase, x86_sub_membase, x86_mul_membase
7890
7891 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
7892
7893         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
7894         GENERAL_REGS they were also hardcoded for all PPC ports.
7895
7896         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
7897
7898         Remove hard-coded limit for floating point registers, use
7899         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
7900
7901         Notice that in MacOS X calling conventions you can fit a lot more
7902         floating point values in registers, so I should update the PInvoke
7903         test to excercise the passing of floating point values on the
7904         stack (currently broken).
7905         
7906 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
7907
7908         * tramp-ppc.c (create_trampoline_code): Added
7909         JUMP_TRAMPOLINE_SIZE. 
7910         (ppc_magic_trampoline): Follow the pattern from
7911         x86_magic_trampoline: if code is set to zero, return. 
7912         (create_trampoline_code): Always pass MonoMethod to the jump
7913         trampoline, before it was passing a null.
7914         (mono_arch_create_jump_trampoline): Implement the jump stub, could
7915         share the code with mono_arch_create_jit_trampoline. 
7916
7917         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
7918         implemented.
7919         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
7920         implemented.  
7921
7922         * cpu-g4.md: Added length for jmp instruction, the worst case
7923         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
7924         for save_lmf).
7925
7926 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
7927
7928         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
7929
7930 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
7931
7932         * mini.c: Only set bblock->real_offset when adding a new bblock, and
7933         before each IL instruction.
7934
7935         * mini.c (CEE_BOX): Fix warnings.
7936
7937 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7938
7939         * mini.c: removed a few unused vars and extra whitespace.
7940
7941 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
7942
7943         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
7944         checks.
7945         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
7946         index.
7947         (OP_GETCHR): use the above
7948         (CEE_LDELEMA): use the above.
7949
7950         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
7951         version of the generic impl.
7952         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
7953         (CEE_LDELEMA): use the above.
7954
7955 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
7956
7957         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
7958         Fixes #56317.
7959
7960         * iltests.il: Added new regression test for #56317.
7961
7962 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
7963
7964         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
7965         under NetBSD. Fixes #56450.
7966
7967         * liveness.c (update_gen_kill_set): Fix previous patch.
7968
7969 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7970
7971         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
7972
7973 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
7974
7975         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
7976         ldsfld and ldsflda.
7977
7978         * inssel-sparc.brg: Add more optimizations.
7979
7980         * mini-sparc.c: Replace multiply/divide with shifts if possible.
7981
7982 2004-04-01  Martin Baulig  <martin@ximian.com>
7983
7984         * mini.c (handle_box): New static function; moved the
7985         implementation of CEE_BOX here.
7986         (mono_method_to_ir): Added `constrained_call' variable.
7987         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
7988         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
7989         mono_method_get_constrained() to get the method.
7990
7991 2004-04-01  Martin Baulig  <martin@ximian.com>
7992
7993         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
7994         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
7995         (mono_method_to_ir): We don't need these macros anymore since
7996         mono_class_get_full() already takes care of it. 
7997
7998 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7999
8000         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
8001         use @function (as doesn't accept #function here) and check the return
8002         value of system and stop if fails.
8003
8004 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8005
8006         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
8007
8008 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
8009
8010         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
8011
8012         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
8013
8014         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
8015         #56223.
8016
8017         * basic-long.cs: Add test for negation of Int64.MinValue.
8018
8019 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
8020
8021         * mini-sparc.c: Update status.
8022
8023         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
8024
8025         * exceptions-sparc.c: Fix return value in filters.
8026
8027         * inssel-sparc.brg: Fix register allocation in some rules.
8028
8029 2004-03-28  Martin Baulig  <martin@ximian.com>
8030
8031         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
8032         if neccessary.  
8033
8034 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
8035
8036         * mini-x86.c (mono_arch_patch_code): Fix warnings.
8037         
8038         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
8039         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
8040         remove unused conv_u4 opcode.
8041
8042         * mini-x86.c: Remove valgrind workaround since it slows down things
8043         even when mono is not run under valgrind.
8044
8045 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
8046
8047         * mini-sparc.c: Update status.
8048
8049         * inssel-sparc.brg: Add some optimizations.
8050
8051         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
8052         future delay slot filling. Add support for varargs, tail calls and JMP.
8053
8054         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
8055         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
8056
8057         * inssel.brg: Fix register allocation in OP_ARGLIST.
8058
8059         * inssel.brg: Fix warnings.
8060
8061 2004-03-25  Martin Baulig  <martin@ximian.com>
8062
8063         * mini.c (inflate_generic_field): Removed.
8064         (mini_get_method): Removed, use mono_get_method_full(),
8065         (mini_get_class): Removed, use mono_class_get_full().
8066         (mono_method_to_ir): Pass our generic context to
8067         mono_field_from_token().        
8068
8069 2004-03-25  Martin Baulig  <martin@ximian.com>
8070
8071         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
8072         of a `MonoMethod *'.
8073         (mini_get_method): Take a `MonoGenericContext *' instead
8074         of a `MonoMethod *'.
8075         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
8076         a new local variable called `generic_context' which holds the
8077         current `MonoGenericContext *'; use it to lookup things.
8078
8079 2004-03-24  Martin Baulig  <martin@ximian.com>
8080
8081         * mini.c (mini_get_class): New static method; if we're inside a
8082         generic instance, inflate the class if neccessary.
8083         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
8084
8085 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
8086
8087         * iltests.il: New regression test for #55976.
8088
8089         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
8090         #55976.
8091
8092 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8093
8094         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
8095         output.
8096
8097 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8098
8099         * liveness.c: Consider SSA stores as well as loads when making vars
8100         volatile.
8101
8102         * exceptions.cs: New regression tests for register allocation.
8103         
8104 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
8105
8106         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
8107         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
8108           domain lock only to protect puntual access to data structures.
8109           Added access lock for sighash, jit_icall_hash_name, 
8110           jit_icall_hash_addr and domain->code_mp.
8111
8112 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
8113
8114         * driver.c: Print SIGSEGV handling method.
8115
8116         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
8117
8118         * mini.c (setup_jit_tls_data): Handle case when this is called
8119         multiple times for a thread.
8120
8121         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
8122         is different from fbxx_un. Fixes #54303. Also use constants instead of
8123         magic numbers in a lot of places.
8124
8125 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
8126
8127         * exceptions.cs: Fix cctor test when --regression is used.
8128
8129 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
8130
8131         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
8132         for Linux/ppc.
8133
8134 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
8135
8136         * inssel-ppc.brg: fixed register assignments for some rules.
8137
8138 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8139
8140         * exceptions.cs: Add test for exceptions in static constructors.
8141
8142         * mini.c (mono_jit_compile_method_with_out): Move the calling of
8143         static constructors outside the domain lock. Fixes #55720.
8144
8145 2004-03-17  Martin Baulig  <martin@ximian.com>
8146
8147         * mini.c (get_generic_field_inst): Removed, this'll never happen.
8148         (inflate_generic_field): Take the `MonoMethod *' instead of the
8149         `MonoClass *' and added support for generic method.
8150         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
8151         have a `field->parent->gen_params', only inflate the field if it's
8152         an open constructed type.
8153
8154 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8155
8156         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
8157         exception object instead of the preconstructed ones.
8158
8159 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8160
8161         * mini.c: reverted changed to sigsegv_signal_handler commited
8162         accidentally in the previous patch.
8163
8164 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8165
8166         * mini.c:
8167         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
8168         running --aot with an old assembly.
8169
8170 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
8171
8172         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
8173         point values.
8174
8175         * mini-sparc.c: Add support for v9 branches with prediction.
8176
8177 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
8178
8179         * mini.c (mini_init): #warning is GNUC only
8180
8181         * mini-sparc.h: implement __builtin_frame_address
8182         and __builtin_return_address for Sun C compiler
8183
8184 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
8185
8186         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
8187
8188 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
8189
8190         * basic-calls.cs: Add test for unaligned byref long argument passing.
8191
8192         * mini-ops.h: Add sparcv9 compare and branch instructions.
8193
8194         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
8195         v9 instructions if we have a v9 cpu.
8196
8197         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
8198         registers for global allocation.
8199
8200         * exceptions-sparc.c: Fixes.
8201         
8202 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
8203
8204         * liveness.c (mono_analyze_liveness): Optimized version.
8205
8206         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
8207
8208         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
8209         sparc work.
8210
8211         * basic-float.cs basic-calls.cs: New regression tests.
8212
8213 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
8214
8215         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
8216         sigaltstack implementation.
8217
8218         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
8219         
8220         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
8221         stuff if SIGSEGV_ON_ALTSTACK is not defined.
8222
8223 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
8224
8225         * mini.c: Fix warnings.
8226         
8227         * mini.c (mono_resolve_patch_target): New function which contains the
8228         arch independent part of the patching process.
8229
8230         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
8231         patching code to a separate function.
8232
8233 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
8234
8235         * mini.c (add_signal_handler): ifdef out on Windows
8236
8237 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
8238
8239         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
8240         cpu-sparc.md: Add exception handling support + other fixes.
8241
8242         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
8243         typed GC detection in --version.
8244
8245         * basic.cs exceptions.cs: New regression tests.
8246
8247         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
8248         the arch specific code can store data during a compilation.
8249
8250         * mini-ops.h: Add OP_SETFRET.
8251
8252         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
8253         function, register a separate icall for each arity, so the icalls can
8254         get a wrapper.
8255         
8256         * mini.c (mono_print_tree): Print negative offsets in a more readable
8257         form.
8258         
8259         * mini.c: Make signal handling work on sparc.
8260         
8261         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
8262
8263         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
8264
8265         * jit-icalls.c: Emulate truncl by aintl on solaris.
8266
8267         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
8268
8269 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
8270
8271         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
8272
8273 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
8274
8275         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
8276         a MarshalByRef type, inline a method that performs the check, taking into
8277         account that the object can be a proxy. Also implemented tow new opcodes:
8278         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
8279         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
8280         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
8281
8282 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
8283
8284         * mini-ppc.c: if a relative branch displacement is too big
8285         but it points to and area reachable with an absolute branch, 
8286         avoid the thunks.
8287
8288 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
8289
8290         * mini.c: optimize small copies in cpblk.
8291
8292 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
8293
8294         * basic-calls.cs basic-float.cs: New regression tests.
8295
8296         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
8297         negative offsets from %fp. Implement localloc. Fix local register 
8298         allocation. Fix the case when the this argument needs to be saved to
8299         the stack. Implement some missing opcodes.
8300
8301 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
8302
8303         * mini.c (mini_method_compile): Reenable global regalloc in methods
8304         with exception handlers.
8305
8306         * linear-scan.c (mono_varlist_sort): Fix warning.
8307
8308         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
8309
8310         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
8311         regalloc costs.
8312
8313         * liveness.c: Make all variables uses in exception clauses volatile, to
8314         prevent them from being allocated to registers. Fixes #42136.
8315
8316 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
8317
8318         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
8319         causes regressions.
8320
8321         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
8322         argument to mono_arch_regalloc_cost.
8323
8324         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
8325         precisely.
8326
8327 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
8328
8329         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
8330         Make the cost of allocating a variable to a register arch dependent.
8331
8332         * basic-calls.cs: Fix compilation of tests.
8333         
8334         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
8335         helper function to cut back on the number of #ifdefs needed.
8336
8337         * mini-ppc.c: Fix compilation.
8338
8339         * basic-calls.cs: New regression tests.
8340
8341         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
8342
8343         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
8344         of l0 since that is callee saved.
8345
8346         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
8347         to virtual calls.
8348
8349         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
8350         of delay instruction.
8351
8352         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
8353
8354         * mini.h (MonoCallInst): Add 'virtual' flag.
8355
8356         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
8357
8358 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
8359
8360         * *.cs: New regression tests.
8361
8362         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
8363         work.
8364
8365         * mini.c (mono_runtime_install_handlers): Fix build.
8366
8367         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
8368         'signal_stack_size' members.
8369
8370         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
8371         alternate signal stack.
8372
8373         * exceptions-x86.c: Add stack overflow handling.
8374
8375         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
8376         functions to arch independent code.
8377
8378         * mini.c (mono_print_tree): Print more detailed info for load_membase
8379         opcodes.
8380         
8381 2004-02-23  Martin Baulig  <martin@ximian.com>
8382
8383         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
8384
8385 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
8386
8387         * mini-x86.c: fixed reg allocation for div/rem.
8388
8389 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
8390
8391         * driver.c (mono_main): Report some configuratio options on --version.
8392
8393 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
8394
8395         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
8396         low in the address space. Correctly flush memory in thunks where we
8397         output native code.
8398
8399 2004-02-20  Martin Baulig  <martin@ximian.com>
8400
8401         * mini.c (mini_get_method): New static method; inflate all generic
8402         methods and methods in open generic instances.
8403         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
8404         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
8405
8406 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
8407
8408         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
8409
8410         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
8411
8412 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
8413
8414         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
8415
8416         * mini-sparc.c (flushi mono_arch_output_basic_block): make
8417         it compile using Sun's compiler.
8418
8419 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
8420
8421         * 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.
8422
8423         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
8424
8425 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
8426
8427         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
8428         code.
8429         * mini-ppc.c: handle calls outside of the allowed range with thunks
8430         allocated using the code manager.
8431         * tramp-ppc.c: use the code manager to hold generated native code.
8432         Fixed the magic trampoline to just patch vtable entries.
8433
8434 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
8435
8436         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
8437         independent file.
8438
8439 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
8440
8441         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
8442         PPC.
8443
8444         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
8445         if we have a working __thread implementation.
8446
8447         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
8448         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
8449
8450 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
8451
8452         * mini-x86.c: Fix compilation under gcc 2.
8453         
8454 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
8455
8456         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
8457         contains a call to the wrapped function.
8458
8459         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
8460         OP_<CALL>_IMM opcodes, and use them under X86.
8461         
8462         * mini.c (mono_jit_find_compiled_method): Fix warning.
8463
8464         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
8465
8466         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
8467
8468         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
8469         functionality to mini.c.
8470
8471         * mini.c (mono_create_jump_trampoline): New function to create a jump
8472         trampoline. Return a compiled method instead of a trampoline if it
8473         exists. Add a cache for jump trampolines.
8474
8475         * mini.c (mono_jit_find_compiled_method): New function to return a
8476         compiled method if it exists.
8477
8478         * mini-x86.c: Call mono_create_jump_trampoline instead of 
8479         mono_arch_create_jit_trampoline.
8480
8481         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
8482         a jump trampoline. Fixes #52092.
8483         
8484 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
8485
8486         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
8487         which is not up-to-date. Add check_corlib_version () instead.
8488
8489         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
8490         have to call it.
8491         
8492         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
8493         since newer valgrind versions do not need it.
8494
8495         * mini.c (mono_jit_compile_method_with_opt): New helper function to
8496         compile a method with a given set of optimizations.
8497
8498         * mini.c: Compile icall wrappers on-demand instead of at startup.
8499
8500         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
8501         wrapper for an icall.
8502
8503 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
8504
8505         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
8506         #54063.
8507
8508         * iltests.il: Add test for non-empty stack before switch instruction.
8509
8510 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
8511
8512         * mini.c: Add support for new stringbuilder marshalling conventions.
8513
8514         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
8515
8516 2004-02-01  Martin Baulig  <martin@ximian.com>
8517
8518         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
8519         in `ginst->mtype_argv'.
8520
8521 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
8522
8523         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
8524         facilitate grepping.
8525
8526 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
8527
8528         * mini.c: fixed buglet in initobj generic implementation for references.
8529
8530 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
8531
8532         * Makefile.am: make the version script conditional.
8533         * jit-icalls.c: handle missing truncl().
8534
8535 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
8536
8537         * exceptions.cs: Add more tests for double->int conversion.
8538
8539         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
8540         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
8541
8542 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
8543
8544         * driver.c: make --verbose --version emit an error
8545         if the loaded corlib doesn't match the runtime version.
8546
8547 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
8548
8549         * mini-ppc.h: export ppc_patch().
8550         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
8551         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
8552         on par or better than on MacOSX.
8553
8554 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
8555
8556         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
8557         mono_lookup_pinvoke_call.
8558
8559         * mini-x86.c: Under windows, the default pinvoke calling convention is
8560         stdcall. Fixes #52834.
8561
8562         * mini.c (optimize_branches): Add an upper bound to the number of
8563         iterations to prevent infinite loops on strange loops. Fixes #53003.
8564
8565 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
8566
8567         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
8568         and ISINST. Fixes #52093.
8569
8570         * objects.cs (test_0_vector_array_cast): New tests.
8571         
8572 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
8573
8574         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
8575         checking in Array.Set ().
8576
8577         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
8578         #52590.
8579
8580         * object.cs (test_0_multi_array_cast): New regression test.
8581
8582 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
8583
8584         * exceptions-ppc.c: fix build on Linux/PPC.
8585
8586 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
8587
8588         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
8589         running under valgrind.
8590         (x86_magic_trampoline): Fix build bustage.
8591
8592         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
8593         negative values as well. This is needed for the encoding of the line number
8594         info, since sometimes the line numbers are not in increasing order.
8595
8596 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
8597
8598         * cpu-pentium.md (localloc): Increase the size of the localloc 
8599         instruction since it is a loop under Win32.
8600
8601         * debug-mini.c (record_line_number): Get rid of unneccesary memory
8602         allocation.
8603
8604 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
8605
8606         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
8607         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
8608         Max Horn (max@quendi.de). Fix file names in comments.
8609
8610 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
8611
8612         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
8613         avoid stack overflow.
8614         (replace_usage): Avoid uninitialized variable warnings.
8615
8616         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
8617         and taking the address of valuetype variables.
8618
8619 2004-01-03  Patrik Torstensson
8620
8621         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
8622         for other purposes than FP later on.
8623
8624 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
8625
8626         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
8627         of tail calls.
8628
8629 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
8630
8631         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
8632
8633 2003-12-30  Patrik Torstensson <p@rxc.se>
8634
8635         * mini-x86.h: Decreased number of availiable fp regs.
8636         Solves corner cases with FP spilling.
8637
8638 2003-12-23  Patrik Torstensson <p@rxc.se>
8639
8640         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
8641         for floating point stack tracking / spilling on x86. 
8642         Fixes bug #49012.
8643         
8644         * basic-float.cs: added float mul overflow test.
8645
8646 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
8647
8648         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
8649
8650 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
8651
8652         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
8653         supports for cond branches that overflow the immediate
8654         overflow offset. mcs can compile simple programs.
8655
8656 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
8657
8658         * exceptions-ppc.c: exception handling support wip:
8659         finally handlers get run on exception.
8660
8661 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
8662
8663         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
8664         profiling.
8665
8666 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
8667
8668         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
8669         initial support for stack walking and unwinding.
8670
8671 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
8672
8673         * driver.c (mono_main): Make corlib-out-of-sync message more 
8674         descriptive. Also remove verify_corlib call.
8675
8676 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
8677
8678         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
8679         not overlap with other call's arguments, too.
8680
8681 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
8682
8683         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
8684         move to arch-specific code the choice of arch-specific
8685         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
8686         * mini.c: ensure emulation calls will not interleave
8687         with other calls.
8688
8689 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
8690
8691         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
8692         the magic trampoline stack frame is dropped before executing
8693         the new method.
8694
8695 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
8696
8697         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
8698         and integer to fp conversions. Added support for overflowing
8699         arguments on the stack. Reserve a couple more registers as temps.
8700         Added support for aot compilation (as output still needs to be
8701         tweaked, though).
8702
8703 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
8704
8705         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
8706         Don't overwrite return register in some corner cases.
8707
8708 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
8709
8710         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
8711         static constructors when AOT compiling.
8712
8713         * driver.c (mono_main): Call mono_check_corlib_version.
8714
8715 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
8716
8717         * cpu-g4.md, basic.cs: fixed div target register.
8718
8719 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
8720
8721         * mini-ppc.c, basic.cs: shl_imm fix with test.
8722
8723 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
8724
8725         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
8726         structures by value. Misc fixes.
8727         * objects.cs: more tests.
8728
8729 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
8730
8731         * mini-ppc.c: lconv.ovf.i implemented.
8732
8733 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8734
8735         * mini.c:
8736         (mini_init): don't error out if someone already called g_thread_init.
8737
8738 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
8739
8740         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
8741         to be any type per the spec. Fix abnormal memory usage when
8742         the same object is repeatedly thrown.
8743
8744 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
8745
8746         * mini.c: check for overruns in IL code.
8747
8748 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
8749
8750         * TODO: Add/remove some todo entries.
8751
8752 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
8753
8754         * driver.c (mono_main): Call mono_verify_corlib.
8755
8756 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
8757
8758         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
8759         This has been moved to mini.c
8760         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
8761         type being casted is marshalbyref it could be a proxy, so instead of
8762         emitting the type check code, emit a call to a runtime method that will
8763         perform the check by calling CanCastTo if needed.
8764
8765 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
8766
8767         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
8768         methods with large stack frames under Win32.
8769
8770 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
8771
8772         * Makefile.am: Distribute regression tests.
8773
8774         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
8775         at the end instead of inserting each variable into the sorted list.
8776
8777         * linear-scan.c (mono_varlist_sort): New helper function.
8778         
8779 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
8780
8781         * mini.c: ensure arguments and locals are within bounds.
8782
8783 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
8784
8785         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
8786         related fixes.
8787
8788 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
8789
8790         * mini.c (mono_cprop_copy_values): Fix crash.
8791
8792         * aot.c: Set verbosity back to 0.
8793         
8794 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
8795
8796         * regalloc.c: complete memory leak fix by Laurent Morichetti
8797         (l_m@pacbell.net).
8798
8799 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
8800
8801         * driver.c (main_thread_handler): Revert the previous patch.
8802
8803         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
8804         under valgrind.
8805
8806         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
8807         memory from the memory pool.
8808
8809         * driver.c (main_thread_handler): Turn on all optimizations when
8810         --aot is used.
8811
8812         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
8813         an array for better performance.
8814
8815         * regalloc.c (mono_regstate_assign): Fix memory leak.
8816
8817         * debug-mini.c (mono_debug_serialize_debug_info): New function to
8818         serialize the debug info.
8819
8820         * debug-mini.c (mono_debug_add_aot_method): New function to load the
8821         debug info from the serialized representation.
8822
8823         * aot.c: Save debug info into the generated file and load it when 
8824         loading a method.
8825
8826         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
8827
8828 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
8829
8830         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
8831         More FP-related fixes.
8832
8833 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
8834
8835         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
8836         and register allocation buglet. Hello world now runs.
8837
8838 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
8839
8840         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
8841         * tramp-ppc.c: fixed class init trampoline.
8842         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
8843
8844 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
8845
8846         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
8847         mini.c: more ppc changes/fixes.
8848
8849 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
8850
8851         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
8852         Also optimize the case when the arguments are the same in the caller 
8853         and in the callee.
8854
8855         * iltests.il: Add tests for tail calls with valuetype arguments.
8856
8857 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
8858
8859         * mini-ppc.c: fixes for struct return type.
8860
8861 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
8862
8863         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
8864         mono_spillvar_offset() to arch-specific code.
8865
8866 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
8867
8868         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
8869
8870 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
8871
8872         * exceptions-x86.c: Fix stack space leaks.
8873         
8874         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
8875         registers from the lmf if the method has save_lmf set.
8876
8877 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
8878
8879         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
8880         of icall wrappers into InvokeInDomain, since these are now per-domain.
8881
8882 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
8883
8884         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
8885         make some opcode emulation and intrinsic ops enabled/disabled 
8886         according to the architecture. More fixes.
8887
8888 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
8889
8890         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
8891
8892 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
8893
8894         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
8895         arch-specific handling for 'this' and struct return type to
8896         arch-specific code.
8897
8898 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8899
8900         * aot.c: prevent divide by zero error when reporting (it happened with
8901         Accessibility.dll).
8902
8903 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
8904
8905         * mini.h (inst_switch): Remove unused macro.
8906
8907 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8908
8909         * aot.c:
8910         (load_aot_module): free 'info->methods' and 'info' properly. No more
8911         "free(): invalid pointer blah" messages when you have an old aot
8912         compiled assembly.
8913
8914 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
8915
8916         * jit-icalls.c, mini.c: Added support for context static fields.
8917
8918 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
8919
8920         * mini.c (mono_method_blittable): Methods which set LastError are not 
8921         blittable either. Fixes #51108.
8922         
8923 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
8924
8925         * mini.c: flush icache.
8926         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
8927
8928 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
8929
8930         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
8931
8932 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
8933
8934         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
8935         safe on IA32.
8936
8937         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
8938         vararg calls.
8939
8940         * inssel.brg (CEE_MKREFANY): Fix AOT case.
8941
8942 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
8943
8944         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
8945         instruction when the result is discarded.
8946
8947         * iltests.il (test_0_div_regalloc): New regression test.
8948
8949         * arrays.cs: Fix compilation error.
8950
8951 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
8952
8953         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
8954         float rules to inssel-x86.brg: sane architectures with FP registers
8955         don't need to implement these rules.
8956
8957 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
8958
8959         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
8960
8961 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
8962
8963         * mini.h, inssel-long32.brg: fixed endianess issues in int64
8964         implementation of 32 bit systems.
8965
8966 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
8967
8968         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
8969         (Jeroen Zwartepoorte).
8970
8971 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
8972
8973         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
8974         the caller and the callee matches.
8975         
8976         * mini.c (mono_method_to_ir): Add comment.
8977
8978         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
8979         signbit is missing on some platforms.
8980
8981 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
8982
8983         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
8984
8985         * mini.c (setup_jit_tls_data): Call the new function.
8986         
8987         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
8988
8989         * mini-x86.c: Add experimental support for fast access to the lmf
8990         structure under NPTL/Linux 2.6.x.
8991
8992 2003-11-06  Martin Baulig  <martin@ximian.com>
8993
8994         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
8995         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
8996         the debugger.
8997
8998 2003-11-02  Martin Baulig  <martin@ximian.com>
8999
9000         * mini.c (inflate_generic_field): New static method.
9001         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
9002         generic instance and the field is declared in a generic type, call
9003         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
9004
9005 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
9006
9007         * mini.h mini.c (mono_method_same_domain): New function to return
9008         whenever the caller and the callee are in the same domain.
9009
9010         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
9011
9012 2003-10-30  Martin Baulig  <martin@ximian.com>
9013
9014         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
9015         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
9016         method parameters.
9017         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
9018         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
9019
9020 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
9021
9022         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
9023         propagation.
9024
9025         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
9026         object here, so it is in the correct appdomain etc.
9027
9028 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
9029
9030         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
9031         already done.
9032         (mono_method_to_ir): Avoid freeing the type created returned from
9033         mono_type_create_from_typespec, since it is put into an internal cache
9034         by the function. Fixes pointer.exe.
9035
9036         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
9037         trampolines for icalls and pinvokes as well. Fixes #33569.
9038
9039 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
9040
9041         * mini.c: Update after appdomain changes.
9042
9043         * mini.c (mono_jit_compile_method_inner): Allways compile native
9044         method wrappers in the root domain, since there can only be one
9045         instance of them, whose address is stored in method->info.
9046
9047 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
9048
9049         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
9050         environment variable. Instead detect automatically whenever running
9051         under valgrind using the magic macro RUNNING_ON_VALGRIND from
9052         valgrind.h.
9053
9054 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
9055
9056         * trace.c, trace.h: New files that implement the new trace option
9057         parsing. 
9058
9059         * driver.c: Document new --trace options.
9060
9061         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
9062         mini-x86.c: Apply:
9063
9064         -       if (mono_jit_trace_calls)
9065         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
9066
9067         * mini.h: prototypes.
9068         
9069 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
9070
9071         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
9072
9073         * mini.c inssel.brg: Implement typedefbyref opcodes.
9074
9075         * mini.c (mono_jit_compile_method): Remove unused local variable.
9076
9077         * mini.c (mono_jit_compile_method_inner): Ditto.
9078         
9079 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
9080
9081         * tramp-x86.c (x86_class_init_trampoline): Fix build.
9082         
9083         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
9084
9085 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
9086
9087         * mini.c (mono_no_aot): Remove unused global variable.
9088
9089         * mini.c: Thread safety fixes.
9090
9091 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
9092
9093         * mini.c (mono_create_class_init_trampoline): Add a lock around
9094         class_init_hash_addr.
9095
9096         * arrays.cs (test_0_newarr_emulation): Add new regression test for
9097         #30073.
9098
9099         * mini.c: Decompose the NEWARR instruction before decomposing its
9100         arguments. Fixes #30073.
9101
9102 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
9103
9104         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
9105         convention.
9106
9107 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
9108
9109         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
9110
9111         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
9112
9113         * driver.c: Add support for compiling icall wrappers to --compile.
9114
9115 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
9116
9117         * inssel.brg: The empty value in class->interface_offsets is -1, not
9118         0. Fixes #49287.
9119
9120 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
9121
9122         * objects.cs: New test for 'is' operator on an array of interfaces.
9123
9124 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9125
9126         * tramp-ppc.c: update trampoline code to support jumps
9127         and class initialization.
9128
9129 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
9130
9131         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
9132
9133         * inssel.brg (OP_UNBOXCAST): Fix #46027.
9134
9135         * inssel.brg (OP_UNBOX): Remove unused rule.
9136
9137         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
9138         region instead of one for each method. Fixes #47813.
9139
9140 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
9141
9142         * exceptions.cs (test_0_nested_finally): New regression test for
9143         nested exception handlers.
9144
9145         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
9146
9147         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
9148
9149         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
9150         inlining.
9151
9152         * mini.c (mono_method_check_inlining): Make the inlining limit 
9153         configurable by an environment variable.
9154         
9155         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
9156
9157         * mini.h: Bump AOT file version.
9158
9159         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
9160         token, store the image along with the token, since the token might not 
9161         refer to the same image as the method containing the relocation, 
9162         because of inlining.
9163
9164 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
9165
9166         * mini.c (mono_precompile_assemblies): New function to compile
9167         all methods in all loaded assemblies.
9168
9169         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
9170
9171         * regalloc.h regalloc.c (MonoRegState): Change the type of 
9172         iassign and fassign to int*, since they can contain large negative
9173         values if the register is spilled. Also added some comments. Fixes
9174         #45817.
9175
9176         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
9177         under Win32. Fixes #42964.
9178
9179 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
9180
9181         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
9182
9183         * aot.c: Added support for AOT compiling methods which contain calls
9184         to wrappers. Currently, only remoting-invoke-with-check wrappers are
9185         handled.
9186         
9187         * driver.c (compile_all_methods): Run the compilation in a thread
9188         managed by mono. Fixes #44023.
9189
9190         * mini.c (mono_codegen): Print full method name in verbose output.
9191
9192         * mini-x86.c (mono_arch_patch_code): Fix warning.
9193         
9194         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
9195         jumps, since the method we are jumping to might be domain-specific.
9196
9197         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
9198
9199 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9200
9201         * inssel.brg: string chars are unsigned.
9202
9203 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
9204
9205         * TODO: New todo item.
9206
9207         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
9208         which calls mono_runtime_class_init and patches the call site to
9209         avoid further calls.
9210         (mono_arch_create_class_init_trampoline): New arch specific function 
9211         to create a class init trampoline.
9212         (create_trampoline_code): Generalized so it can create
9213         class init trampolines as well.
9214
9215         * mini.c (helper_sig_class_init_trampoline): New helper variable.
9216         (mono_create_class_init_trampoline): New function to create and cache
9217         class init trampolines.
9218         (mono_find_class_init_trampoline_by_addr): New function to lookup the
9219         vtable given the address of a class init trampoline. Used by the
9220         patching process.
9221         (mono_codegen): Generate a call to a trampoline instead of
9222         mono_runtime_class_init in LDSFLD[A].
9223         (mono_codegen): Add relocations for the new trampoline.
9224         
9225         * mini.h mini-x86.c aot.c: Added a new relocation type: 
9226         MONO_PATCH_INFO_CLASS_INIT.
9227
9228         * mini.h: Bump AOT version number.
9229
9230         * aot.c: Create a copy of the loaded code instead of using the original
9231         so methods which call each other will be close in memory, improving
9232         cache behaviour.
9233         
9234         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
9235         patch since it breaks the regression tests.
9236         
9237         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
9238         for the register saving instruction sequence since the 
9239         frame_state_for function in glibc 2.3.2 don't seem to detect it.
9240
9241 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
9242
9243         * TODO: Fix todo item && remove another.
9244
9245 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
9246
9247         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
9248         previous checkin.
9249
9250         * aot.c: Moved the check for MONO_LASTAOT into the initialization
9251         function of the module.
9252
9253         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
9254         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
9255         --no-aot command line option.
9256
9257 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
9258
9259         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
9260         by Bernie Solomon (bernard@ugsolutions.com).
9261
9262         * inssel.brg: Refactor the interface offset table related code into
9263         its separate functions and add support for the AOT case.
9264
9265 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
9266
9267         * aot.c (mono_aot_get_method_inner): Fix memory leak.
9268         
9269         * aot.c: Added mono_aot_verbose variable and made all debugging
9270         output depend on the value of this variable.
9271
9272         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
9273         method_label and info_label.
9274
9275         * mini.h mini-x86.c aot.c: Added a new relocation type 
9276         MONO_PATCH_INFO_IID for klass->interface_id.
9277
9278         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
9279         the MonoJitInfo structure.
9280
9281         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
9282         a non-root appdomain in shared mode.
9283
9284 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
9285
9286         * aot.c: make aot loader less verbose. Remove free of unused variable.
9287
9288 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
9289
9290         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
9291
9292         * .cvsignore: Added *.dll.
9293
9294         * mini.c (mono_print_tree_nl): New function callable while debugging.
9295
9296         * mini.c (mono_print_code): Export this.
9297
9298         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
9299         patched code.
9300
9301 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
9302
9303         * mini.h (MonoCompile): Added 'jit_info' field.
9304
9305         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
9306         the cfg structure, since it is needed by the AOT compiler.
9307
9308         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
9309
9310         * aot.c: A major rewrite. Changes include:
9311         - save exception tables for methods which have them.
9312         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
9313         to g_module_symbol.
9314         - reworked the file format so it is now much smaller and needs
9315         fewer relocation entries.
9316         
9317 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
9318
9319         * aot.c (load_aot_module): Fix build bustage on platforms without
9320         Boehm GC.
9321
9322 2003-09-04  Martin Baulig  <martin@ximian.com>
9323
9324         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
9325
9326 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
9327
9328         * TODO: Some new optimization ideas.
9329
9330         * aot.c: Move AOT module loading logic here from mono_assembly_open.
9331
9332         * aot.c: Save the optimization flags used to compile the code into
9333         the AOT module.
9334
9335         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
9336         support emitting domain specific code.
9337         
9338         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
9339         no longer domain neutral. It can be made domain neutral by compiling 
9340         with --optimize=shared.
9341
9342         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
9343         between appdomains.
9344
9345         * driver.c mini.h mini.c: New --no-aot debugging option which disables
9346         loading of AOT code.
9347
9348         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
9349         
9350         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
9351         if there is no domain neutrality information.
9352
9353 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
9354
9355         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
9356         format version into the generated library.
9357
9358         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
9359         callee method into the caller since one of them could be shared.
9360
9361         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
9362         system exceptions from AOT code now works.
9363
9364         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
9365         method if it is domain neutral and the callee is not.
9366
9367         * graph.c (cfg_emit_one_loop_level): Fix warning.
9368
9369 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
9370
9371         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
9372         last checkin.
9373
9374 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
9375
9376         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
9377         is needed  by code which is executed before mono_runtime_init ().
9378         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
9379         
9380         * mini.c (mono_thread_abort): Fix warning.
9381         (mono_jit_compile_method): Call static constructor in the AOT case too.
9382
9383         * aot.c (mono_compile_assembly): Fix warning.
9384
9385 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9386
9387         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
9388
9389 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
9390
9391         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
9392
9393         * cpu-pentium.md: Fix the length of call opcodes so they include the
9394         ESP restoring instruction. Fixes #47968.
9395
9396 2003-08-28  Martin Baulig  <martin@ximian.com>
9397
9398         * mini-x86.c (mono_arch_call_opcode): Added support for
9399         MONO_TYPE_GENERICINST.
9400
9401         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
9402
9403 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
9404
9405         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
9406         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
9407
9408         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
9409         metadata_section.
9410
9411 2003-08-26  Martin Baulig  <martin@ximian.com>
9412
9413         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
9414         when reporting an error, set this to the actual error location.
9415         (mono_method_to_ir): Report the correct error location if
9416         get_basic_blocks() returned an error.
9417
9418 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
9419
9420         * mini.c (mono_type_blittable): OBJECT is not blittable.
9421         (mono_method_blittable): Methods which have marshalling descriptors
9422         are not blittable either. Fixes #47842.
9423
9424 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
9425
9426         * driver.c mini.c: Use an environment variable instead of a global 
9427         variable. Also fix the build.
9428
9429         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
9430         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
9431         reporting this. 
9432
9433         * driver.c mini.c: Added --with-valgrind option to turn off some
9434         code which prevents mono from running under valgrind.
9435
9436         * mini.c (mono_emit_call_args): Fixed warning.
9437
9438         * mini.c (mono_emulate_opcode): Fixed warning.
9439
9440 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9441
9442         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
9443         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
9444         regalloc.c, regalloc.h: specify available registers in arch-specific
9445         code and support floats in the regallocator (patch by Laurent Morichetti 
9446         <l_m@pacbell.net>)
9447
9448 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
9449
9450         * mini.c: mono_thread_current() can be called only after
9451         mono_runtime_init(): rearrange code to not call it early on.
9452
9453 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9454
9455         * mini.c: allocate jump tables in the code mempools.
9456
9457 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9458
9459         * mini.c, mini.h: make sure per-thread data allocated by the jit is
9460         freed.
9461
9462 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
9463
9464         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
9465         12 to 16.  This fixes bug #47453.
9466
9467
9468 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
9469
9470         * mini-ppc.c: fixed indexed load and unsigned compares.
9471
9472 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
9473
9474         * mini.c: reenabled installation of handler for
9475           thread abort signal.
9476
9477 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9478
9479         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
9480         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
9481         until it's fixed and actually useful.
9482
9483 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
9484
9485         * inssel-long32.brg: couple more opcodes implemented.
9486
9487 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
9488         
9489         * mini-sparc.c: Even more opcodes implemeted.
9490
9491 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
9492
9493         * mini-sparc.c: More opcodes implemented.
9494
9495 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
9496
9497         * mini-sparc.c: More opcodes implemented.
9498
9499 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
9500
9501         * inssel-sparc.brg: Add some needed rules.  Direct
9502         copy from PPC.
9503         * Makefile.am: Use inssel-sparc.brg
9504         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
9505         an assert happy for now.
9506
9507 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
9508
9509         * mini-sparc.c: Fixed compile errors.
9510         * exceptions-sparc.c: Same.  We now produce a mono binary 
9511         on sparc-linux.  Yea.
9512
9513 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
9514
9515         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
9516         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
9517         They compile, but do not work.
9518
9519 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9520
9521         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
9522         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
9523         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
9524         (ct@gentoo.org).
9525
9526 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9527
9528         * mini.c: more opcodes implemented and better support for generics.
9529
9530 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
9531
9532         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
9533         * mini.c, mini.h: first cut at generics support: some new instructions 
9534         added and changed the behaviour of some of the existing ones.
9535
9536 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
9537
9538         * mini.c: Removed definition of metadata_shared mutex here.
9539
9540 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
9541
9542         * mini-x86.c: make vararg calls work for instance methods.
9543
9544 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
9545
9546         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
9547         returns the arguments in a separte list, now.
9548
9549 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
9550
9551         * aot.c, mini.c: updates for array type representation changes.
9552
9553 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
9554
9555         * mini.c: register function to perform jit shutdown.
9556
9557 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
9558
9559         * mini.c: use a faster allocator if possible.
9560
9561 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
9562
9563         * aot.c: some cleanups and portability changes.
9564
9565 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
9566
9567         * mini.c: use faster allocation for CEE_BOX if possible.
9568
9569 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
9570
9571         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
9572         Moved inlined mempcy code to its own function so that is can be
9573         reused. Added an inline memset function as well (optimized initobj).
9574         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
9575
9576 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
9577
9578         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
9579
9580 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
9581
9582         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
9583         arch code can setup the cpu for CLR execution, if needed.
9584         We use it on x86 to set the precision of FP operations.
9585
9586 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
9587
9588         * mini.c: disable some optimizations if we can guess they'll cost too
9589         much for a given method.
9590
9591 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
9592
9593         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
9594         
9595 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
9596         * mini.h mini.c mini-x86.c: Added instruction level coverage 
9597         info collection support.
9598
9599 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
9600
9601         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
9602         is now implemented in the profiling API. Get rid of a couple of
9603         unnecessary global variables.
9604
9605 2003-06-15  Nick Drochak <ndrochak@gol.com>
9606
9607         * basic-long.cs: tests for negative values for bigmul, and unsigned.
9608         * cpu-g4.md: add op_bigmul and op_bigmul_un
9609         * cpu_pentium.md: add op_bigmul_un
9610         * inssel-long32.brg: add rule for unsigned bigmul
9611         * mini-ops.h: define OP_BIGMUL_UN
9612         * mini-x86.c: THE BUG: handle (un)signed properly
9613         * mini.c: choose unsigned opcode if needed.
9614         This set of patches fixes bug #44291
9615
9616 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
9617
9618         * mini.c (optimize_branches): improved to handle all kinds of
9619         conditional branches.
9620
9621 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
9622
9623         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
9624         don't raise exceptions.
9625
9626 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9627
9628         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
9629         to arch-specific files.
9630
9631 2003-06-09  Martin Baulig  <martin@ximian.com>
9632
9633         * Makefile.am (libs): Added $(LIBGC_LIBS).
9634
9635 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
9636
9637         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
9638         and OP_ATAN (fixes bug#44293).
9639
9640 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
9641
9642         * Makefile.am, mini-x86.c: rename cpu description array to
9643         pentium_desc, since some compilers define the 'pentium' preprocessor
9644         symbol.
9645
9646 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
9647
9648         * mini.c (mini_select_instructions): add explicit branch if the
9649         following block is not the false target of a conditional branch -
9650         we need this with any optimization that reorder or remove bblocks
9651
9652         * mini.c (optimize_branches): bug fixes
9653
9654 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
9655
9656         * mini.c (mono_method_to_ir): inline static readonly fields
9657
9658         * ssa.c (fold_tree): start cfold support for long (very simple
9659         cases only)
9660
9661         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
9662
9663 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
9664
9665         * inssel.brg: fixed memcpy (bug #44219).
9666
9667 2003-06-05  Dick Porter  <dick@ximian.com>
9668
9669         * driver.c: Set the glib log levels to not abort if g_message
9670         recurses.
9671
9672         g_set_prgname() has to happen before mini_init() so that the
9673         process handle gets the info.
9674         
9675 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
9676
9677         * driver.c: add intrins to the default optimizations to get wider
9678         exposure.
9679
9680 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
9681
9682         * mini.h: some large basic blocks will overflow a 16-bit
9683         integers for symbolic registers.
9684
9685 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
9686
9687         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
9688         (mono_arch_output_basic_block): fix bug 43499 
9689
9690 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
9691
9692         * mini.c: kill duplicated definition of mono_debug_format.
9693
9694 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
9695
9696         * mini-x86.c, arrays.cs: fixed register allocation bug.
9697
9698 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
9699
9700         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
9701
9702         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
9703
9704 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9705
9706         * mini.c:
9707         (print_method_from_ip): also print source location information if
9708         available.
9709
9710 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
9711
9712         * mini.c (mono_find_block_region): bug fix in region code
9713         (mini_method_compile): enable removing unreachable code again, but
9714         only in methods without exception clauses.
9715
9716 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
9717
9718         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
9719         Implemented arglist opcode and handling of TypedReference type.
9720         Fixed x86 call convention when a structure is returned.
9721         Minimal support for calling static vararg methods.
9722
9723 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
9724
9725         * mini.c (mini_method_compile):  always remove unreachable code,
9726         because the code in them may be inconsistent  (access to dead
9727         variables for example).
9728
9729 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
9730
9731         * driver.c, debug-mini.c: warning fixes.
9732
9733 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
9734
9735         * Makefile.am, jit.h, mini.h: install header for embedding mono.
9736
9737 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
9738
9739         * mini.c: thread-static fields are registered in mono_class_vtable(),
9740         so ensure the function is called before checking for them.
9741
9742 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
9743
9744         * mini.c (optimize_branches): fix for bug 43586
9745
9746         * jit-icalls.c (mono_llmult_ovf): added an additional check for
9747         overflow (fixes Bug #43639)
9748
9749 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini.c, objects.cs: allow the use of stobj for primitive types.
9752
9753 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9754
9755         * mini.c: be less strict about argument checking until we support
9756         running the verifier.
9757
9758 2003-05-27  Nick Drochak <ndrochak@gol.com>
9759
9760         * basic-long.cs: tests for (ulong)int * (ulong)int also
9761         * mini.c: use the same trick for (ulong)int * (ulong)int
9762
9763 2003-05-27  Nick Drochak <ndrochak@gol.com>
9764
9765         * basic-long.cs: add regression test for (long)int * (long)int
9766         * cpu-pentium.md: add op_bigmul specification
9767         * inssel-long32.brg: add OP_BIGMUL rule
9768         * mini-ops.h: add OP_BIGMUL
9769         * mini-x86.c: register allocator: handle case where src1 needs to be
9770         in EAX.
9771         * mini.c: substitute special BIGMUL opcode in the tree for 
9772         (long)int * (long)int
9773
9774 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
9775
9776         * jit-icalls.c: call the type ctor on field access if needed.
9777
9778 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
9779
9780         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
9781         to a method (including results of ldelema, bug#43207).
9782
9783 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
9784
9785         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
9786         colors to show exception handler blocks.
9787
9788         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
9789         (fix for pinvoke7.cs).
9790
9791 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9792
9793         * mini.h, mini.c: ensure correct initialization order for types that
9794         require it. Prepare for lazy compilation of jit icall wrappers.
9795         Provide a name for opcode emulation to reduce unneeded mallocing.
9796
9797 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
9798
9799         * mini-x86.c: better register restoring code and profiling
9800         support for tail calls.
9801
9802 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
9803
9804         * mini.h, driver.c: prepare for leaf methods optimization.
9805
9806 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
9807
9808         * mini.c: get targets of branches before converting a method.
9809
9810 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
9811
9812         * mini.c (optimize_branches): added some experimental code (disbaled) 
9813
9814 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
9815
9816         * mini.c (optimize_branches): fix branch to branch optimization 
9817
9818         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
9819
9820         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
9821
9822         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
9823
9824         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
9825         if needed.
9826
9827 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
9828
9829         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
9830         enable use of interface variables again.
9831
9832         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
9833         I1 to registers because there is no simply way to sign extend 8bit
9834         quantities in caller saved registers on x86.
9835
9836         * inssel-float.brg: set costs of some rules to 2 so
9837         that monobure always select the arch. specific ones if supplied,
9838         regardless of the order we pass the files to monoburg.
9839
9840 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
9841
9842         * mini.c, mini-x86.c: since the magic trampoline for jumps
9843         can't patch the code directly, we do it as soon as the
9844         method gets compiled.
9845
9846 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
9847
9848         * mini-x86.c, mini.h: introduce a new patching method
9849         to support CEE_JMP and tail calls.
9850         * mini.c: obey tail.call. Don't precompile methods target
9851         of CEE_JMP.
9852         * tramp-x86.c: new trampoline code to handle methods
9853         reached through a jump.
9854
9855 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
9856
9857         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
9858         bit values to registers
9859
9860 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
9861
9862         * mini.c (mono_compile_get_interface_var): share interface
9863         variables if possible.
9864
9865 2003-05-16  Martin Baulig  <martin@ximian.com>
9866
9867         * debug-mini.c (mono_init_debugger): New function to initialize
9868         the debugger.  This is not in the debugger since it needs to
9869         access some of mini's internals.
9870
9871 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
9872
9873         * mini.c (mono_method_to_ir): inlining fixes/cleanups
9874
9875 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
9876
9877         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
9878         for value type handling.
9879
9880 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
9881
9882         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
9883         (mono_method_check_inlining): enable inlining of all kinds of wrappers
9884
9885 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
9886
9887         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
9888           the constructor through a proxy.
9889
9890 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9891
9892         * jit-icalls.c, inssel.brg: fixes to array element address
9893         calculations.
9894
9895 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
9896
9897         * mini-x86.c (is_regsize_var): allocate pointer to registers
9898
9899 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9900
9901         * driver.c: fixed typo, added intrins to the set of optimizations
9902         tested with regressions.
9903
9904 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
9905
9906         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
9907         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
9908         test case.
9909
9910 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
9911
9912         * inssel.brg: remove some common pop instructions without side effects
9913
9914 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
9915
9916         * inssel-x86.brg: fixed thinko in int to double conversions.
9917
9918 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
9919
9920         * mini.c, jit-icalls.c: added runtime thread-static variable support.
9921
9922 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
9923
9924         * inssel-long32.brg: two more missing instructions.
9925
9926 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
9927
9928         * mini.c (mono_emit_call_args): set the cil_code for all arguments
9929         if not already set.
9930
9931 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
9932
9933         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
9934         correctly.
9935
9936         * basic-float.cs: Added tests for negative zero.
9937
9938 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9939
9940         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
9941         a couple of missing operations for long casts, with test cases.
9942
9943 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9944
9945         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
9946
9947 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
9948
9949         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
9950         code size estimation.
9951
9952 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
9953
9954         * mini.c (mono_jit_create_remoting_trampoline): make it work with
9955         abstract methods (fix bug 42542)
9956
9957         * aot.c: add ability to handle array types
9958         
9959 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
9960
9961         * mini.c: Call the _specific versions of the object allocation
9962         functions if possible.
9963
9964 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
9965
9966         * driver.c: call setlocale ().
9967
9968 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
9969
9970         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
9971         windows build.
9972
9973 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
9974
9975         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
9976
9977         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
9978         wrappers (fix bug 42122)
9979
9980 2003-05-04  Martin Baulig  <martin@ximian.com>
9981
9982         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
9983
9984         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
9985         s/mini_set_defaults/mono_set_defaults/g.
9986
9987 2003-05-04  Martin Baulig  <martin@ximian.com>
9988
9989         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
9990
9991 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
9992
9993         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
9994         (reported by Don Roberts).
9995
9996 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
9997
9998         * mini.c: temporarily work around two bugs for this release.
9999
10000 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10001
10002         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
10003         that contains -export-dynamic and it makes using the ld script
10004         useless.
10005         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
10006
10007 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
10008
10009         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
10010         specific cpu.
10011
10012 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
10013
10014         * mini.c: make sure leave calls all the needed finally blocks,
10015         even when the target jumps out of multiple exception clauses.
10016
10017 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10018
10019         * ldscript, Makefile.am: add linker script to reduce the number of
10020         exported symbols (should also fix the issues with libwine defining
10021         some of the same symbols in io-layer).
10022
10023 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
10024
10025         * driver.c (mini_main): Avoid assertion when no file name is given on 
10026         the command line.
10027
10028 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
10029
10030         * driver.c: added --version/-V command line option.
10031         Added the inline optimization in the regression tests.
10032
10033 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10034
10035         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
10036         to the type in the method signature (fixes bug#42134).
10037
10038 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
10039
10040         * mini.c: when inlining, check this is not null only when needed (bug #42135).
10041
10042 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
10043
10044         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
10045
10046 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10047
10048         * driver.c: fixed bug #42100.
10049
10050 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
10051
10052         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
10053
10054 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
10055
10056         * mini.c: moved most of the code required to do inlining to its own
10057         function so it can be reused. Inline also ctors if appropriate.
10058
10059 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
10060
10061         * Makefile.am: Link with -export-dynamic so shared libs loaded by
10062         the runtime can call mono API functions.
10063
10064 2003-04-27  Martin Baulig  <martin@ximian.com>
10065
10066         * debug-mini.c (mono_debug_init_method): Added
10067         `guint32 breakpoint_id' argument; if the method has a breakpoint,
10068         send a notification to the debugger.
10069
10070         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
10071         running in the Mono Debugger, just pass the breakpoint number to
10072         mono_debug_init_method().
10073
10074         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
10075
10076 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
10077
10078         * mini.c: allow some more unsafe compares.
10079
10080 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10081
10082         * mini-x86.c, Makefile.am: make distcheck works (partially from
10083         a patch by Richard Lee <r.h.lee@attbi.com>).
10084         * regset.c, regset.h: removed, they are unused.
10085
10086 2003-04-25  Dick Porter  <dick@ximian.com>
10087
10088         * driver.c: Usage reports the name as 'mono' not 'mini'
10089         * exceptions-x86.c: Build and run on freebsd
10090
10091 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
10092
10093         * Makefile.am: install the program with the 'mono' name and
10094         the library as libmono instead of mini and libmini.
10095
10096 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10097
10098         * driver.c: provide the APIs for the embedding interface of the old jit.
10099
10100 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
10101
10102         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
10103
10104 2003-04-23  Martin Baulig  <martin@ximian.com>
10105
10106         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
10107
10108         * driver.c: Added `--debug' command line argument to enable
10109         debugging support.
10110
10111 2003-04-23  Martin Baulig  <martin@ximian.com>
10112
10113         * debug.[ch]: Removed.  The code is now in
10114         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
10115
10116         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
10117         last six months.
10118
10119 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
10120
10121         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
10122
10123 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10124
10125         * mini.c:
10126         (mini_cleanup): moved mono_runtime_cleanup call after the call to
10127         mono_domain_finalize.
10128         (mini_method_compile): use mono_method_profile* if the the option is
10129         enabled.
10130
10131 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
10132
10133         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10134         methods with their wrapper.
10135
10136         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10137         methods with their wrapper.
10138
10139         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
10140         their wrapper.
10141
10142         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
10143         wrapper.
10144
10145         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
10146         methods.
10147
10148 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
10149
10150         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
10151
10152 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
10153
10154         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
10155         of the mempool. This is slightly faster and uses less memory
10156
10157 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10158
10159         * mini.c: avoid O(n) allocation for variables.
10160
10161 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10162
10163         * mini.c: handle items on the stack after inlining methods.
10164
10165 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
10166
10167         * mini.c: make the method->opcode optimization dependent
10168         on MONO_OPT_INSTRINS and do it lazily.
10169
10170 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10171
10172         * driver.c: print overall results at the end of regression run.
10173
10174 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
10175
10176         * inssel.brg: don't overwrite symbolic registers.
10177
10178 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
10179
10180         * inssel-x86.brg: fix conversion from long to float.
10181
10182 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
10183
10184         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
10185
10186 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
10187
10188         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
10189
10190         * driver.c: Added --print-vtable option as in the old JIT.
10191
10192 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
10193
10194         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
10195
10196 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
10197
10198         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
10199
10200 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
10201
10202         * mini.c regalloc.c regalloc.h: Fix memory leak.
10203
10204 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
10205
10206         * aot.c (mono_aot_get_method): register all used strings
10207
10208 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10209
10210         * mini.c: always intern strings references with ldstr at compile time.
10211
10212 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10213
10214         * Makefile.am: add BUILT_SOURCES.
10215
10216 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
10217
10218         * driver.c: give a better error message when the assembly to execute
10219         doesn't have an entry point.
10220
10221 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
10222
10223         * Makefile.am: added hack for automake
10224
10225         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
10226         correct sematics.
10227
10228         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
10229
10230 22003-04-07  Martin Baulig  <martin@ximian.com>
10231
10232         * Makefile.am: Added Makefile.am.
10233
10234         * debugger-main.c: Removed, this is now in the debugger where it
10235         belongs.
10236
10237         * mini.pc.in: Call this package `mini' for the moment.
10238
10239
10240
10241
10242
10243