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