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