needs gmcs
[mono.git] / mono / mini / ChangeLog
1 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4         code.
5
6         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
7         AOTed code.
8
9         * CMakeLists.txt: Add minimal support for installation.
10
11 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
12
13         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
14         determine whenever a method is directly callable to a separate function.
15
16         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
17         needed ones as a result of the previous change.
18
19         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
20         type of register arrays.
21
22         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
23         type of register arrays.
24
25 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
26         
27         Contributed under the terms of the MIT/X11 license by
28         Jerry Maine <crashfourit@gail.com>.
29
30         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
31
32 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
33
34         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
35
36 2009-06-24  Neale Ferguson <neale@sinenomine.net>
37
38         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
39         dump of structure return value. Fix some formatting.
40         * cpu-s390x.md: Fix lengths of instruction sequences.
41         * mini-s390.c: Minor formatting changes.
42
43 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
44
45         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
46         Use sigaction on freebsd as well.
47
48 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
51         uses #ifdef on it.
52         
53         * mini.c (mini_init): Revert a change which breaks cross-compilation.
54
55 2009-06-22  Mark Probst  <mark.probst@gmail.com>
56
57         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
58
59 2009-06-22  Mark Probst  <mark.probst@gmail.com>
60
61         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
62
63 2009-06-20  Martin Baulig  <martin@ximian.com>
64
65         * debug-mini.c
66         (MonoDebuggerThreadFlags): New enum typedef.
67         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
68         (mono_debugger_thread_created): Added `gpointer func' argument;
69         initialize the new `thread_flags' field.
70
71 2009-06-18  Martin Baulig  <martin@ximian.com>
72
73         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
74         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
75
76         * debug-debugger.c
77         (mini_debugger_set_attach_ok): New function; sets the attach-ok
78         flag in `MONO_DEBUGGER__info.runtime_info'.
79
80         * driver.c
81         (mono_main): Call mini_debugger_set_attach_ok() if generics
82         sharing is disabled.
83
84 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
85
86         * aot-compiler.c (add_wrappers): Fix a warning.
87
88         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
89         the ppc load/store macro changes.
90
91 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
92
93         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
94
95         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
96         not just the got symbol.
97
98         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
99         on ppc.
100
101         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
102         ppc.
103         
104         * aot-compiler.c: Remove some fixmes.
105
106         * driver.c (mono_main): Print a helpful message when cross-compiling.
107
108         * mini.c (mini_init): Disable signal handlers when cross-compiling.
109
110         * method-to-ir.c (initialize_array_data): Do the optimization if the
111         target byte order is little endian, instead of the host byte order.
112
113         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
114         wrappers into the mscorlib image, Emit a unique plt symbol for each
115         image, emit symbols for plt entries.
116
117         * image-writer.c (img_writer_emit_symbol_size): New function to emit
118         a .size directive.
119         
120 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
121
122         * aot-compiler.c (add_wrappers): Avoid calling 
123         mono_marshal_get_type_info () since it can assert for some types.
124
125         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
126         ldtoken are used inside wrappers.
127
128         * helpers.c: Add support for prefixing tools with the arch name.
129
130         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
131         quantities when using ilp32.
132
133         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
134         spill slots. Use sizeof(mgreg_t) for the spill slot size.
135
136         * image-writer.c: Use .long on ilp32.
137
138         * aot-compiler.c: Use 32 bit loads on ilp32.
139         
140 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
141
142         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
143
144         * mini-ops.h: Use TARGET_POWERPC define for consistency.
145
146         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
147
148         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
149         second got slot of every aot image.
150         
151         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
152         aot on platforms with function pointers.
153
154         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
155         support for aot/full aot on ppc/ppc64.
156         
157         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
158         arguments which are needed on ppc.
159
160         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
161         argument.
162
163         * mini-trampolines.c aot-runtime.c: Update after the above changes.
164         
165         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
166
167         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
168
169         * aot-compiler.c (emit_got_info): Fix reading unused memory.
170
171         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
172
173 2009-06-17  Geoff Norton  <gnorton@novell.com>
174
175         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
176
177 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
178
179         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
180         to control whenever the dwarf writer is in xdebug or aot mode.
181         (emit_class_dwarf_info): Use a separate abbrev for structures without
182         children.
183
184         * aot-compiler.c: Pass the appending parameter to 
185         mono_dwarf_writer_create ().
186
187         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
188         falls through to its next bblock. Fixes #513931.
189
190         * iltests.il: Add a test.
191
192         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
193         infor even if emit_line is FALSE, as the apple linker seems to require it.
194
195         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
196
197         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
198         gcc does.
199         (emit_fde): Ditto.
200
201 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
202
203         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
204         mips build.
205
206 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
207
208         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
209         'has_call_handler' fields.
210
211         * method-to-ir.c (mono_method_to_ir): Set them if needed.
212
213         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
214         first bblock if not needed. Fixes #512790.
215         
216 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
217
218         * aot-compiler.c (mono_compile_assembly): Fix a warning.
219         
220         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
221         wrappers.
222
223         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
224         remoting-invoke-with-check wrappers, which are not needed when running with
225         full-aot, since it doesn't support remoting.
226         
227 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
228
229         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
230
231         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
232         method info, it is not used anymore.
233
234         * mini.h: Bump AOT file format version.
235         
236         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
237         word smaller.
238
239         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
240         change above.
241         
242         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
243
244         * mini.h: Bump AOT file format version.
245         
246 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
247
248         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
249         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
250         iphone.
251
252         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
253         of CKFINITE and FBGE for VFP.
254
255 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
256
257         * aot-compiler.c: Don't align code to 16 bytes on arm.
258         
259         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
260         before the methods they belong to.
261
262         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
263         the full-aot case if possible, since the trampoline will be called right 
264         away.
265
266         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
267         trampolines to 1024 after the change above.
268
269         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
270         trampoline to save 8 bytes per trampoline.
271
272         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
273         change above.
274
275 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
276
277         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
278
279 2009-06-08  Martin Baulig  <martin@ximian.com>
280
281         * debug-mini.c
282         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
283         (_mono_debugger_throw_exception): Don't make this static.
284         (_mono_debugger_unhandled_exception): Likewise.
285         (mono_debugger_handle_exception): Moved to mini-exceptions.c
286
287         * debug-mini.c
288         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
289         (_mono_debugger_throw_exception): Add function prototype.
290         (_mono_debugger_unhandled_exception): Likewise.
291
292         * mini-exceptions.c
293         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
294         arg; return the first exception handler if the exception is caught
295         and we're running inside the debugger.
296         (mono_debugger_handle_exception): Moved here from debug-mini.c;
297         improve exception handle inside runtime-invoke, check whether the
298         exception is actually caught in the method being invoked and not
299         by the runtime-invoke-wrapper.
300
301 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
302
303         * image-writer.c: Improve support for the osx assembler.
304
305         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
306         support them.
307
308 2009-06-08  Martin Baulig  <martin@ximian.com>
309
310         * debug-mini.c
311         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
312         (_mono_debugger_throw_exception): Don't make this static.
313         (_mono_debugger_unhandled_exception): Likewise.
314         (mono_debugger_handle_exception): Moved to mini-exceptions.c
315
316         * debug-mini.c
317         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
318         (_mono_debugger_throw_exception): Add function prototype.
319         (_mono_debugger_unhandled_exception): Likewise.
320
321         * mini-exceptions.c
322         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
323         arg; return the first exception handler if the exception is caught
324         and we're running inside the debugger.
325         (mono_debugger_handle_exception): Moved here from debug-mini.c;
326         improve exception handle inside runtime-invoke, check whether the
327         exception is actually caught in the method being invoked and not
328         by the runtime-invoke-wrapper.
329
330 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
331
332         * image-writer.c (append_subsection): Don't align subsections of the
333         debug_line section as a workaround.
334
335         * dwarfwriter.c: Emit line number info in the AOT case as well.
336
337 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
338
339         This patch is contributed under the terms of the MIT/X11 license
340
341        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
342        code_len <= code_size
343
344 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
345
346         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
347
348 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
349
350         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
351         invoke wrappers, we now use trampolines instead.
352
353 2009-06-04  Mark Probst  <mark.probst@gmail.com>
354
355         * mini-darwin.c: The exception thread must not be registered with
356         the GC.
357
358 2009-06-04  Mark Probst  <mark.probst@gmail.com>
359
360         * mini-gc.c: Disable the code because it makes SGen crash.
361
362 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
363
364         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
365         instead of asserting.
366
367 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
368
369         * aot-compiler.c (mono_compile_assembly): Move the creation of the
370         output file after the code has been compiled.
371
372 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
373
374         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
375
376 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
377
378         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
379         entries distinction to simplify the code.
380
381         * mini.h: Bump AOT file format version.
382         
383 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
384
385         * objects.cs: Fix the signature of one of the tests.
386
387         * mini.c (mini_create_ftnptr): New helper function, moved here from
388         object.c.
389         (mini_get_addr_from_ftnptr): Ditto.
390         (mini_init): Install the new helpers.
391
392 2009-05-28  Martin Baulig  <martin@ximian.com>
393
394         Correctly initialize the debugger when embedding Mono.
395
396         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
397         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
398         see documentation in mini_debug_running_inside_mdb().
399
400         * debug-debugger.c
401         (mini_debug_running_inside_mdb): New function to check whether
402         we're running inside mdb.
403
404         * mini.c (mini_init): Call mini_debugger_init() if we're running
405         inside the debugger.
406
407         * driver.c (mono_main): Moved the call to mini_debugger_init()
408         into mini_init() to make this work when embedding Mono.
409
410         * debug-debugger.c (mini_debugger_init): Warn about duplicate
411         calls to mini_debugger_init().
412
413         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
414         mono_debugger_main() -> mini_debugger_main() and put them inside a
415         `MONO_DEBUGGER_SUPPORTED' conditional.
416
417 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
420         this is no longer in use.
421         * mini.h: Same.
422
423 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-sparc.c (add_outarg_load): Fix the sparc build.
426
427         * aot-compiler.c (emit_method_code): Always write out C style symbols for
428         methods.
429
430 2009-05-27  Martin Baulig  <martin@ximian.com>
431
432 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
433
434         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
435         long_conv_to_r_un to 64 bits.
436
437         * cpu-x86.md: Increase the instruction size due to the changes.
438
439         * iltests.il.in: Add regression test.
440
441         Fixes #467201.
442
443 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
444
445         * objects.cs: Move the previous test from basic.cs to here.
446
447 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
448
449         * basic.cs: Add regression test for #506915.
450
451 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
454         optimization we must check the bb of the first byte of stobj as
455         it's the only one set in cil_offset_to_bb.
456
457         Fixes #506915.  
458
459 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
460
461         * image-writer.c: Fix pointer directive on ppc64.
462
463 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
464
465         * image-writer.c (asm_writer_emit_section_change): Avoid using
466         .bss subsections on ppc too.
467
468 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
469
470         * image-writer.c: Fix the definition of TARGET_ASM_....
471         
472         * image-writer.c: Fix the emission of assembler directives in the last
473         change.
474
475         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
476         exception throwing code to accomodate ppc64.
477
478         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
479         size to work on ppc64 too.
480
481         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
482         too.
483
484         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
485         the assembler dialect instead of using platform specific defines.
486
487 2009-05-22  Geoff Norton  <gnorton@novell.com>
488
489         * mini-arm.c (get_call_info): If a structure is split between the stack
490         and argument registers, we should not advance the stack pointer by the entire
491         native size, but just by the amount that spilled.
492
493 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
494
495         * mini-arm.c (get_call_info): Handle structures with alignment requirements
496         correctly.
497
498 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
499
500         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
501         wrappers normally.
502         
503         * aot-compiler.c (add_extra_method): Fix up the collection of extra
504         methods so wrapper don't get added twice.
505         (add_generic_instances): Don't add methods of arrays.
506
507         * generics.cs: Mark one test as !FULLAOT.
508
509 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
510
511         * mini-x86.c (emit_move_return_value): Remove unused vars.
512
513 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
516         decomposing 8 bytes structs into a LCALL.
517
518         * mini-x86.c (emit_move_return_value): We no longer push the vtype
519         pointer for where to store the returned regs.
520
521         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
522         state the concern.
523
524         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
525
526 2009-05-20  Miguel de Icaza  <miguel@novell.com>
527
528         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
529         without getenv.
530
531 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
532
533         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
534
535         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
536         generics.
537
538 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
539
540         * local-propagation.c (mono_local_cprop): Avoid local propagation
541         across paired add/sub if the first instruction dest reg is it's
542         source reg. For example:
543
544         int_add_imm R12 <- R12 [1] clobbers: 1
545         int_sub_imm R42 <- R12 [1] clobbers: 1
546
547         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
548         maintain the math identify.
549
550         Fixes #505375.
551
552 2009-05-20  Andreia Gaita  <avidigal@novell.com>
553
554         * Makefile.am: avoid going on the network just to get the revision,
555         use git log instead
556
557 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
558
559         Fixed estimate for short branches on amd64 (they were off mark, and
560         enabling call prolog-epilog instrumentations caused assertions).
561         * mini.h (struct MonoBasicBlock): added max_length field to hold the
562         estimate for the maximum length of this basic block.
563         * mini-amd64.c:
564         - mono_arch_emit_prolog: compute max_length for each basic block
565           (instead of max_offset), and inflate size estimate also for entry bb
566           in case of code instrumentation.
567         - mono_arch_output_basic_block: get rid of "cpos" (the current
568           estimated "position" in the code), and always use "offset" instead,
569           which is accurate; at the beginning of the function quickly recompute
570           max_offset for all the remaining blocks, starting from the current
571           cfg->code_len (which is correct, and not estimated) and using the
572           estimated block lengths computed previously.
573
574 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
575
576         * exceptions-ppc.c: Remove the caching from the trampoline creation 
577         functions, it is already done in the caller.
578
579         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
580
581         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
582         MONO_ARCH_GSHARED_SUPPORTED define.
583
584         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
585
586         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
587         function.
588
589 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
590
591         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
592         call to mono_marshal_get_rgctx_invoke ().
593
594         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
595         mono_marshal_get_static_rgctx_invoke (), all platforms which support
596         gshared use the static rgctx trampolines now.
597         
598         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
599         platform supports it.
600
601 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
602
603         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
604
605         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
606
607 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
608
609         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
610
611         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
612         for ppc.
613
614 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
615
616         Made it possible for mono_arch_instrument_epilog to preserve
617         argument registers, otherwise instrumenting the "epilogue" before
618         a tail call would clobber them.
619         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
620         if like mono_arch_instrument_epilog but with an additional parameter
621         that states if argument registers must be preserved.
622         * mini.c: implemented mono_arch_instrument_epilog as a call to
623         mono_arch_instrument_epilog_full without asking to preserve argument
624         registers (this makes the existing code work as usual).
625         * mini-amd64.c:
626         - mono_arch_instrument_epilog: add parameter to transform it into
627         mono_arch_instrument_epilog_full, and preserve argument registers
628         when required.
629         - mono_arch_output_basic_block, OP_TAILCALL case: call
630         mono_arch_instrument_epilog_full.
631         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
632         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
633         only transformed mono_arch_instrument_epilog into
634         mono_arch_instrument_epilog_full.
635
636 2009-05-15  Geoff Norton  <gnorton@novell.com>
637
638         * mini-darwin.c: This works on arm now.
639
640 2009-05-14  Geoff Norton  <gnorton@novell.com>
641
642         * jit.h, driver.c: Allow full-aot to be decided programatically by the
643         embedding api.
644
645 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
646
647         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
648         label names.
649
650         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
651         wrappers during full aot mode correctly.
652
653         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
654         methods correctly.
655
656         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
657         mono_metadata_type_hash ().
658
659 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
660
661         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
662         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
663         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
664         Removed MONO_INST_BRLABEL from the instruction flags, and the
665         remaining code that used it, because we do not support branches inside
666         basic blocks (and branch target labels) anymore.
667         * Makefile.am: As part of the above cleanup, remove reference to
668         BURG files which don't exist anymore.
669
670 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
671
672         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
673         osx.
674
675         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
676         to use mono_arch_throw_corlib_exception.
677
678         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
679         mono_arch_throw_corlib_exception for throwing corlib exceptions.
680
681         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
682         domain mempool.
683
684         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
685
686         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
687         for the got to make debugging easier and to avoid confusing it with the
688         system got.
689         
690         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
691         method so a breakpoint can be set when using gdb.
692
693 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
694
695         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
696         on mono_method_get_imt_slot ().
697
698         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
699         num_decodes variables.
700
701         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
702         change as it doesn't seem to work.
703         
704         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
705         wrappers.
706
707 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
708
709         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
710         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
711
712         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
713         builder when using full aot.
714
715         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
716         here, it is already handled.
717         
718         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
719         correctly for IMT.
720
721         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
722
723         * mini-arm.h: Enable IMT for full aot.
724         
725         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
726         arch doesn't support it.
727
728         * mini.c (mini_init): Don't disable IMT for full aot if the
729         architecture supports it.
730
731         * mini.h (MonoAotTrampoline): New enum containing the different types
732         of 'numerous' trampolines.
733         (MONO_AOT_FILE_VERSION): Bump this.
734
735         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
736         static rgctx trampolines. Add support for full-aot IMT thunks.
737
738         * mini-amd64.h: Enable IMT for full aot.
739
740         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
741         to exclude tests belonging to a category.
742
743         * generics.cs: Mark some tests with a !FULLAOT category.
744
745         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
746         generics tests.
747
748 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
749
750         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
751         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
752         (emit_plt): Fix a warning.
753
754 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
755
756         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
757         back into aot-compiler.c to a place where the other functions shared by
758         the runtime and aot compiler are.
759         
760         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
761         as done previously, instead of in MonoAotFileInfo, since pointers might have
762         alignment requirements.
763
764         * mini.h: Bump AOT file format version.
765
766 2009-05-10  Miguel de Icaza  <miguel@novell.com>
767
768         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
769         that is used at runtime from the aot-compiler.c, this makes it
770         work on setups that remove the AOT compiler from the output
771         image. 
772
773 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
774
775         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
776         PPC.
777
778         * mini-ppc.h: Enable static rgctx trampolines for ppc.
779
780         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
781
782         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
783         stuff to mono_arch_decompose_long_opts ().
784         (mono_decompose_opcode): Remove some dead code.
785
786 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
787
788         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
789         cmethod can be null for quite a some reasons.
790
791 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
792
793         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
794
795 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
796
797         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
798
799 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
800
801         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
802         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
803         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
804         calls returning structures by addr on amd64.
805
806         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
807
808         * iltests.il.in: Restructure the tail call tests a bit.
809         
810 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
811
812         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
813         for virtual methods too.
814
815 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
816
817         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
818         due to regression in verifying System.dll.
819
820 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
821
822         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
823         in dynamic methods.
824
825         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
826         instances.
827
828         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
829         g_str_hash () which can change.
830
831         * driver.c (mini_regression): Disable optimizations not supported by
832         the cpu. Fixes #500019.
833
834         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
835         build.
836
837 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
838
839         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
840         to the latest LLVM code.
841
842 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
843
844         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
845
846 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
847
848         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
849         x86/amd64.
850
851         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
852         no longer saving offsets, so just save the patch types along with the other
853         info.
854         * aot-runtime.c (load_patch_info): Update after the changes to 
855         encode_patch_list ().
856         (decode_got_entry): Removed, merged into load_patch_info ().
857         (is_shared_got_patch): Removed, call the same function from
858         aot-compiler.c.
859
860         * mini.h: Bump aot file format version.
861         
862         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
863         half-finished no-dlsym code.
864
865         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
866         option.
867
868         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
869         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
870
871 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
872
873         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
874         buffer length to work with AOT code.
875
876         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
877         ldfld/stfld opcodes.
878
879         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
880         as it is not used.
881
882         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
883
884         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
885
886         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
887         LLVM API.
888
889         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
890         if needed. Don't decompose long operations when using llvm.
891
892 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
893
894         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
895         PAGESIZE constant.
896
897         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
898
899 2009-05-03  Martin Baulig  <martin@ximian.com>
900
901         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
902         mono_debugger_insert_method_breakpoint() since the class init
903         handler we're inserting at the top of the method already gives us
904         a notification.
905
906 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
907
908         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
909         to mono_arch_decompose_long_opts () for x86 and arm.
910
911 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
912
913         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
914         TARGET_AMD64 here.
915
916 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
917
918         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
919         JIT code.
920
921 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
922
923         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
924         number of trampolines used in full-aot mode.
925
926         * aot-compiler.c: Add an ntrampolines option to set the number of 
927         trampolines emitted in full-aot mode.
928
929 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
930
931         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
932         a volatile load. Get rid of get_tempname (), llvm assigns names
933         automatically.
934
935         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
936         builder function.
937
938         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
939         a value.
940
941         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
942         level 1.
943
944         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
945         to the same register as a fixed sreg2. Fixes #497271.
946
947         * iltests.il.in: Add a new test.
948
949 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
950
951         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
952         stack, since pushes complicate exception handling.
953
954         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
955         the stack if they are passed using moves.
956
957         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
958
959         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
960         when using llvm.
961
962         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
963         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
964         of FMOVE if it is an R4.
965
966 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
967
968         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
969
970         * mini.h (LLVMCallInfo): New structure to store calling convention 
971         information for the LLVM back end similar to the CallInfo structures in 
972         the back-ends.
973
974         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
975         call information in a format usable by LLVM.
976         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
977
978         * method-to-ir.c (mono_emit_call_args): Emit calls using 
979         mono_llvm_emit_call () when compiling using LLVM.
980
981         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
982         comments to all functions. Fix memory leaks. Add a public init/cleanup
983         function.
984
985         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
986
987         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
988         mono_array_new_va () jit icall.
989         
990 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
991
992         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
993         multiple machine description files to be specified.
994         * mini-ops.h: fixes for cross-compilation.
995
996 2009-04-22  Miguel de Icaza  <miguel@novell.com>
997
998         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
999         some porting work.
1000
1001 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1004         to prevent asserts in various passes. Fixes #497220.
1005
1006 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1009         a racy assert.
1010
1011         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1012         table to avoid duplicates.
1013
1014         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1015         
1016         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1017         option is used.
1018
1019 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1022         is for method or field access.
1023
1024 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1027         a Value to stdout.
1028
1029         * mini-llvm.c (mono_llvm_emit_method): Use it.
1030         
1031         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1032         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1033         on volatile values.
1034
1035         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1036         synchronized methods.
1037
1038         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1039
1040         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1041
1042         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1043         OP_LOADI8_MEM.
1044
1045         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1046         allowing some options to be set dynamically.
1047
1048 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1051         unconditional branch.
1052
1053         * mini.h (MonoTrampolineType): Add new trampoline type 
1054         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1055         compiled code.
1056
1057         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1058         function.
1059
1060         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1061         creation function.
1062
1063         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1064         is enabled. Instead, use the llvm vcall trampoline.
1065         
1066         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1067
1068         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1069         
1070         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1071         functions.
1072
1073         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1074         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1075
1076         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1077         OP_IA64_CSET opcode.
1078
1079         * mini.c: Fix a warning.
1080
1081         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1082         THROW to the appropriate llvm type.
1083
1084 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * mini.c (mini_method_compile): Add statistics for methods JITted
1087         with/without LLVM.
1088
1089 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1092         OP_IA64_CMP_<cond>_IMM opcodes.
1093
1094 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1097         corlib exceptions.
1098
1099         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1100         correctly.
1101
1102         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1103         GENERICINST.
1104
1105 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1106
1107         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1108
1109 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1112         support.
1113
1114         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1115         rgctx invoke trampolines for x86.
1116
1117         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1118         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1119         (mono_arch_get_vcall_slot): Simplify this.
1120
1121 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1124         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1125
1126 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1129         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1130
1131         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1132
1133         * liveness.c (visit_bb): Remove a needless assert.
1134
1135 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1138         full aot support to the arch specific code.
1139
1140         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1141
1142         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1143
1144         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1145         
1146         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1147         collect information about the delegate invoke impl trampolines.
1148
1149         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1150         to save trampolines during full-aot mode.
1151
1152         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1153         creation function which returns a trampoline which sets the rgctx
1154         argument.
1155         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1156         wrapper if possible.
1157         (mono_delegate_trampoline): Ditto.
1158
1159         * mini.c (mono_jit_runtime_invoke): Ditto.
1160
1161         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1162         
1163         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1164
1165         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1166         
1167 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1170         just setting the opcode to OP_NOP.
1171
1172 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * mini.c (mini_method_compile): Put the last change inside an 
1175         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1176         
1177         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1178         and extend live ranges to cover the whole method when using xdb.
1179
1180         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1181         do it in the trampolines.
1182
1183         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1184         needed.
1185
1186         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1187         
1188         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1189         call code in full-aot mode since IMT is disabled there.
1190         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1191         new JIT no longer has that restriction.
1192
1193         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1194
1195         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1196         a more compact format.
1197         (mono_aot_wrapper_name): New function to return a unique name for a
1198         wrapper method, also used by the AOT runtime.
1199
1200         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1201         aot-compiler.c.
1202
1203         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1204         when a ICollection<T> etc is encountered.
1205         (add_generic_instances): Process method arguments/locals too.
1206         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1207         trampoline names.
1208
1209         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1210         
1211 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1214
1215         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1216
1217         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
1218         representing the result of the decomposition. Nullify instructions
1219         instead of setting them to OP_NOP since nops can't have registers
1220         set.
1221
1222 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1223
1224         * aot-compiler.c (mono_compile_assembly): Split this huge function into
1225         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
1226         info. Strip 'mapping symbols' on ARM.
1227
1228         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
1229         
1230         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
1231         this with the native genmdesc.
1232
1233 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1234
1235         * aot-runtime.c:  Fixing the MSVC build.
1236
1237         Code is contributed under MIT/X11 license.
1238
1239 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1242         JITted code depends on it.
1243
1244 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1245
1246         * aot-compiler.c: Use new MonoGenericParam accessors.
1247
1248 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1249
1250         Reduce memory usage and improve correctness wrt MonoGenericParam
1251         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1252         handing.  Avoid allocating MonoGenericParams, but use the ones in
1253         the container itself.
1254
1255 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1256
1257         * tasklets.c: Return exceptions in the out argument.
1258
1259 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1262         opcode. Use pointer types in more places instead of casting them to 
1263         integers.
1264
1265         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1266         optimizations.
1267         (mono_llvm_optimize_method): New helper function to optimize a method.
1268
1269         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1270         widening code so it could be called from more places.
1271         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1272         code paths in the call opcodes.
1273
1274 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1275
1276         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1277
1278 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * dwarfwriter.c: Use _ to separate class name 
1281         components as gdb can't handle '.'. Represent reference variables
1282         as 'class <NAME>&'.
1283         
1284         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1285
1286         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1287         
1288         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1289
1290         * gc-test.cs: New file with GC stack marking tests.
1291         
1292         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1293         negative numbers for vfp.
1294
1295         * basic-float.cs: Add a test.
1296         
1297 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1298
1299         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1300
1301 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1302
1303         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1304         part of tasklet/continuation support.
1305
1306 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1309         amd64 opcodes inside an ifdef.
1310
1311         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1312         of complex types.
1313         
1314         * dwarfwriter.c (emit_type): Emit the class info for classes.
1315
1316 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1319
1320         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1321
1322         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1323
1324         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1325
1326 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1329
1330         * mini-llvm.c: Update comments.
1331
1332         * mini.h (COMPILE_LLVM): New macro.
1333
1334         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1335
1336         * ssa.c (mono_ssa_compute): Ditto.
1337         
1338         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1339         the unwind ops from a DWARF FDE.
1340
1341         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1342         methods by extracting the dwarf unwind ops from the unwind info generated
1343         by LLVM.
1344         
1345         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1346         calls.
1347
1348         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1349         addressing modes.
1350
1351 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * Makefile.am (llvm_sources): Enable this.
1354
1355         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1356         failing back to the JIT if something cannot be handled.
1357
1358         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1359         compiling with LLVM.
1360
1361         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1362         compiling with LLVM.
1363
1364         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1365         compiling with LLVM.
1366
1367         * mini-ops.h: Add a few opcodes needed by LLVM.
1368
1369         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1370         has no unwind info.
1371
1372         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1373         backend.
1374
1375         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1376
1377         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1378
1379 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1380
1381         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1382         ridiculously large methods.
1383
1384 2009-03-31  Martin Baulig  <martin@ximian.com>
1385
1386         * debug-debugger.c (debugger_remove_breakpoint): Call
1387         mono_debugger_remove_class_init_callback ().
1388
1389 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1390
1391         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1392         right before emitting code, not at the start.
1393
1394         * mini.c (mono_postprocess_patches): Extract this into a separate function
1395         from mono_codegen ().
1396
1397         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1398         byref types correctly.
1399
1400 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1403         by the last change.
1404
1405 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1406
1407         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1408         indirect calls, this avoids problems where get_vcall_slot () would get
1409         confused by the native code for the instruction preceeding the call.
1410         (mono_arch_get_vcall_slot): Simplify this.
1411         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1412
1413         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1414         register allocator now seems to depend on them instead of the data in
1415         cpu-<ARCH>.md.
1416
1417         * mini.c (mini_method_compile): Throw the correct type of exception if
1418         mono_method_get_header () fails because of a loading error.
1419
1420 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * mini.c (mini_method_compile): Clear the loader error if the method
1423         header cannot be decoded.
1424
1425         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1426         interface methods on proxies correctly.
1427
1428         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1429         this argument for vtype methods. Add precise liveness info for arguments.
1430
1431         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1432         LIVERANGE_START/END opcodes.
1433
1434         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1435         for arguments and values in registers.
1436
1437 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1440         return a valuetype. Fixes #487518.
1441
1442         * iltests.il: Add a test.
1443         
1444         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1445
1446         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1447         closed over a null reference correctly.
1448
1449 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1452
1453 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1454
1455         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1456         allocated to the same registers as fixed sregs.
1457
1458 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1459
1460         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1461         ATOMIC_CAS_IMM ops.
1462
1463         * method-to-ir.c: Handle more cases for
1464         Interlocked.CompareExchange.
1465
1466         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1467         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1468         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1469
1470 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1471
1472         * aot-runtime.c (decode_method_ref): Fix a warning.
1473
1474         * unwind.c (mono_unwind_frame): Ditto.  
1475
1476 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1479         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1480
1481         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1482         fix the handling of large values in the ALU_PC_G0_NC relocation.
1483
1484 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1487
1488 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1489
1490         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1491         ops.
1492
1493 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1494
1495         * method-to-ir.c: MINI_OP3 needs a comma.
1496
1497         * method-to-ir.c, mini.h, mini.c: Remove
1498         mono_init_op_sreg_counts ().
1499
1500 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1503         OP_JMP.
1504         
1505         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1506         assertion.
1507
1508         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1509
1510         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1511         code somewhat.
1512
1513 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1514
1515         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1516         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1517         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1518         operations.
1519
1520 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * driver.c: Change location of gc_wrapper.h.
1523
1524         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1525         inside finally clauses correctly. Fixes #485721.
1526
1527         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1528         after the change above.
1529
1530         * exceptions.cs: Add a test.
1531         
1532 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1533
1534         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1535
1536         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1537         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1538         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1539
1540         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1541         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1542
1543 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1544
1545         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1546         Simplify logic for ensure_method_is_allowed_to_call_method. 
1547         Handle wrappers on callers.
1548
1549 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1552         them don't run yet.
1553
1554         * basic-simd.cs: Fix the names of some test methods.
1555
1556 2009-03-18  Geoff Norton  <gnorton@novell.com>
1557
1558         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1559
1560 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1563
1564 2009-03-17  Jb Evain  <jbevain@novell.com>
1565
1566         * driver.c: remove now uneeded call to mono_gc_base_init before
1567         mono_profiler_load.
1568
1569 2009-03-17  Jb Evain  <jbevain@novell.com>
1570
1571         * dwarfwriter.c (token_handler): handle more cases.
1572
1573 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1574
1575         * method-to-ir.c: Remove more dead code (that was required only
1576         because of method_is_safe). Fix compiler warnings.
1577
1578 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1579
1580         * method-to-ir.c: Remove unneeded/useless method_is_safe
1581         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1582
1583 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1584
1585         * mini.c (mini_method_compile): Print the method been compiled with
1586         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1587         for people not familiar with the runtime.
1588
1589 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1592         a managed object which is later put into a GList. Return its class instead.
1593
1594         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1595         stack slots when using sgen.
1596
1597 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1600
1601 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1602
1603         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1604         > so it works on the first vreg as well.
1605
1606 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1609         trigger randomly.
1610
1611         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1612         
1613         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1614         implement GArray.
1615
1616 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1619         native->IL offset mapping.
1620
1621 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1624
1625         * basic.cs: Add a test.
1626
1627 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1628
1629         * mini-x86.c (mono_arch_output_basic_block): Use different
1630         registers in case the ones we want to overwrite are used by the
1631         other operand.  Fixes regression in #480807.
1632
1633 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1636
1637         * dwarfwriter.c (emit_line_number_info): The line number info for
1638         IL code was off by one. Fix that.
1639
1640         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1641         stack.
1642
1643 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1644
1645         Contributed under the terms of the MIT/X11 license by Steven
1646         Munroe <munroesj@us.ibm.com>.
1647
1648         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1649         Fixes #483462.
1650
1651 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1654         as well.
1655
1656 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1659         the delegate ctor handling code. Fixes #482638.
1660         
1661         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1662         #481458.
1663
1664         * iltests.il.in: Add a test.
1665         
1666         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1667         mini-posix.c.
1668
1669 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1670
1671         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1672         is shared generic code, return the trampoline, even if the method
1673         has already been compiled.  Fixes #479763.
1674
1675         * mini.c, mini.h: New function
1676         mono_jit_find_compiled_method_with_jit_info() which is the same as
1677         mono_jit_find_compiled_method() but also returns the jit info.
1678
1679 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1680
1681         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1682         for methods which actually have one.  For all other methods, make
1683         sure the this argument var is live the whole method.
1684
1685         * mini.c (mini_method_compile): Every shared method has a
1686         this/vtable/mrgctx info.  Fixes #480807.
1687
1688 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1689
1690         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1691         generic/imt thunks where some entries branch through the vtable,
1692         while other entries branch directly.
1693
1694 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1697
1698         * mini-windows.c: Ditto.
1699         
1700         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1701         ctors.
1702
1703 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1706         down an assert.
1707
1708 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1709
1710         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1711         #481403.
1712
1713 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1714
1715         * exceptions-x86.c: Include debug-mini.h - fixes build.
1716
1717 2009-03-04  Martin Baulig  <martin@ximian.com>
1718
1719         * debug-mini.c: Clean up the exception API and add documentation.
1720         (mono_debugger_handle_exception): New public method; this is
1721         called when throwing an exception or encountering an unhandled one.
1722         (mono_debugger_call_exception_handler): Formerly known as
1723         mono_debugger_handle_exception(); this is used to tell the
1724         debugger that we're about to invoke an exception handler.
1725
1726 2009-03-04  Martin Baulig  <martin@ximian.com>
1727
1728         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1729         ../metadata/mono-debug-debugger.c; save and reset exception state.
1730
1731 2009-03-02  Martin Baulig  <martin@ximian.com>
1732
1733         * debug-mini.c: Moved the debugger exception handling here from
1734         ../metadata/mono-debug-debugger.c.
1735
1736         * debug-mini.h
1737         (MonoDebuggerExceptionAction): New exception typedef.
1738
1739         * debug-mini.c
1740         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1741
1742         * exceptions-amd64.c
1743         (mono_amd64_throw_exception): Use the new debugger exception
1744         handling code.
1745
1746         * mini-exceptions.c
1747         (mono_handle_exception_internal): Don't call
1748         mono_debugger_unhandled_exception() here.
1749
1750 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * mini.c aot-compiler.c: Update after the changes to 
1753         mono_marshal_get_runtime_invoke ().
1754
1755         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1756         Virtual generic methods might not have method->slot set, work around
1757         that.
1758
1759         * generics.cs: Add a test.
1760
1761 2009-03-02  Geoff Norton  <gnorton@novell.com>
1762
1763         * mini.c:
1764         * driver.c: Allow signal chaining of SIGFPE as well.
1765
1766 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1769         this since it now receives the method not its generic context in the
1770         IMT reg.
1771
1772         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1773         generic/imt thunks where some entries branch through the vtable, while
1774         other entries branch directly.
1775
1776         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1777
1778         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1779         support for interface methods as well.
1780
1781         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1782         using the normal IMT thunks.
1783
1784         generics.cs: Add new tests.
1785         
1786         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1787         the generic inst to the generic imt thunks. This fixes AOT support, 
1788         improves consistency with the normal IMT thunks, and makes it easier to
1789         add support for interface generic virtual methods later.
1790
1791         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1792         
1793 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * driver.c (mono_set_signal_chaining): New public API function to enable
1796         signal chaining on POSIX platforms.
1797
1798         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1799         (si@lindenlab.com) to implement signal chaining. The original patch was
1800         contributed under the MIT X/11 license:
1801         https://bugzilla.novell.com/show_bug.cgi?id=318894
1802
1803 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1806         too until it can be made to run on amd64.
1807
1808 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1811         to  get_generic_context_from_code () + get_call_info () if possible.
1812
1813 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1816         suspend-on-sigsegv functionality.
1817
1818         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1819         to suspend when a native SIGSEGV is received. This is useful for debugging
1820         crashes which don't happen under gdb, since a live process contains more
1821         information than a core file.
1822
1823         * mini-exceptions.c (mono_print_thread_dump): Use 
1824         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1825
1826         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1827
1828         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1829         
1830         * basic-float.cs: Disable the tests which currently fail on amd64.
1831
1832         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1833         value to mono_arch_patch_callsite () to fix crashes.
1834         
1835         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1836
1837 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1840         nop code by patching the call address to point to the nullified class init
1841         trampoline, as the former does not seem to be safe on SMP machines.
1842
1843 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1844
1845         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1846         they were wrong.
1847
1848 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1849
1850         * basic-float.cs basic-calls.cs: Fix warnings.
1851
1852 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1853
1854         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1855         correct frame pointer in the LMF.  Should fix #478394.
1856
1857 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1860
1861         * image-writer.c: Make the binary writer less verbose.
1862
1863 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1864
1865         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1866         are called from runtime invoke wrappers.
1867
1868 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * cpu-ppc.md (store_memindex): Increase the size of this.
1871
1872 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1875
1876         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1877
1878         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1879         OP_LCONV_TO_R_UN.
1880
1881         Last fix for of #467201.
1882
1883
1884 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1885
1886         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1887
1888         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1889         and long_conv_to_r8_2:
1890
1891         Fixed part of #467201.
1892
1893 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1896
1897         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1898         conversion to 32 bits.
1899
1900         * cpu-x86.md: Increase the size of int_conv_to_r4.
1901
1902         * basic-float.cs: Add a test for this.
1903
1904         Fixed part of #467201.
1905
1906 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1907
1908         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1909
1910         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1911         conversion to 64 bits.
1912
1913         * basic-float.cs: Add a test for this.
1914
1915         Fixed part of #467201.
1916
1917 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1920
1921         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1922         This behavior is compatible with MS.
1923
1924         * iltest.il.in: Add a test for this.
1925
1926         Fixed part of #467201.
1927
1928 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1929
1930         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1931
1932         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1933         change the precision of the value.
1934
1935         * cpu-x86.md: Define len for float_conv_to_r4.
1936
1937         * basic-float.cs: Add a test for this.
1938
1939         Fixed part of #467201.
1940
1941 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1942
1943         * mini.c: Adjust locking order to the new semantics where the loader lock
1944         comes first.
1945
1946 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * aot-runtime.c:
1949         * mini-amd64.c:
1950         * mini-arm.c:
1951         * mini-ia64.c:
1952         * mini-mips.c:
1953         * mini-ppc.c:
1954         * mini-sparc.c:
1955         * mini-trampolines.c:
1956         * mini-x86.c:
1957         * mini.c:
1958         * tramp-alpha.c:
1959         * tramp-amd64.c:
1960         * tramp-arm.c:
1961         * tramp-hppa.c:
1962         * tramp-ia64.c:
1963         * tramp-mips.c:
1964         * tramp-ppc.c:
1965         * tramp-s390.c:
1966         * tramp-s390x.c:
1967         * tramp-sparc.c:
1968         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1969
1970 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1973         as it is incorrect.
1974
1975 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1978         for cctors if needed.
1979
1980 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1981
1982         * mini-ppc.c: Fix build on Darwin.
1983
1984 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1987         version instead of 3 as valgrind doesn't like version 3.
1988
1989         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1990
1991         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1992         usable for hashing methods.
1993         (emit_extra_methods): Use the new hash to avoid putting every method in the
1994         same hash bucket.
1995
1996         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1997
1998         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1999         whenever a method ref could match a method.
2000         
2001         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2002         test to fail.
2003         
2004         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2005         methods refs.
2006
2007         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2008
2009         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2010         the encoding buffer.
2011
2012         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2013         mono_method_get_header () on inflated methods as an optimization.
2014
2015 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * ssa.c (fold_ins): Fix another crash if the instruction following the
2018         switch was optimized away.
2019
2020 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2021
2022         Contributed under the terms of the MIT/X11 license by Steven
2023         Munroe <munroesj@us.ibm.com>.
2024
2025         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2026
2027 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2028
2029         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2030         around the mono_domain_alloc calls, it is now done by the functions
2031         themselves.
2032
2033         * aot-compiler.c (compile_method): Only add wrappers referenced by
2034         the method if compiling with full AOT.
2035         (mono_compile_assembly): Error out if --aot=full is specified on
2036         a platform where it is not supported.
2037
2038         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2039         on ARM too.
2040
2041         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2042         AOT support.
2043
2044         * aot-runtime.c (load_named_code): Handle 
2045         mono_arm_throw_exception_by_token.
2046
2047         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2048
2049         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2050         unaligned.
2051
2052         * Makefile.am (fullaotcheck): Exit if a test fails.
2053
2054         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2055         on ARM.
2056         (mono_compile_assembly): Handle the assembler failing.
2057
2058         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2059         accepting subsections of .bss.
2060
2061         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2062         was optimized away.
2063
2064         * aot-compiler.c: Remove some unused includes.
2065         
2066         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2067         now in MonoImageWriter.
2068
2069         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2070         code sequence which matches a non-virtual call. Fixes #472654.
2071
2072 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2075         xdebug code.
2076         
2077         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2078         use the image/dwarf writers directly.
2079
2080         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2081         field.
2082
2083         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2084         MonoDwarfWriter.
2085
2086         * image-writer.h: Fix some typos.
2087
2088         * dwarfwriter.h dwarfwriter.c: New files.
2089         
2090         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2091         separate module.
2092
2093         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2094         argument to return unwind info.
2095
2096         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2097
2098         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2099         
2100         * aot-runtime.c (decode_method_ref): Add a case for 
2101         MONO_AOT_METHODREF_WRAPPER_NAME.
2102
2103         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2104         for AOT.
2105
2106         * aot-compiler.c (encode_method_ref): Use the new constants.
2107
2108         * aot-runtime.c (decode_method_ref): Ditto.
2109
2110         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2111         be compiled, not the icall itself.
2112
2113 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2116         using decode_method_ref ().
2117
2118         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2119         convert it to an in32. Fixes #475859.
2120
2121         * arrays.cs: Add a test.
2122
2123 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2124
2125         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2126         OP_LCONV_TO_U2.
2127
2128         * basic-long.cs: Add a test.
2129
2130 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2131
2132         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2133         remove the frame pointer in leaf methods which don't receive any
2134         arguments, don't throw exceptions and don't do dynamic stack
2135         allocations.
2136
2137 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2140         the fail_tramp changes. Hopefully fixes #475132.
2141
2142 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2143
2144         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2145         instead of mono_metadata_signature_dup_full.
2146
2147 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2150         for processing jump tables. Fixes #473787.
2151
2152 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2153
2154         * mini-generic-sharing.c: mini_method_get_context() just calls
2155         mono_method_get_context_general() now.
2156
2157         * mini.c, mini.h: Moved get_object_generic_inst(),
2158         construct_object_context_for_method() and
2159         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2160
2161 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2162
2163         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2164         basic block fell through to its successor bblock without a branch. Fixes
2165         #474718.
2166
2167         * iltests.il.in: Add a test.
2168         
2169         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2170         (can_encode_patch): We can now handle arrays of generic parameters and
2171         array methods.
2172
2173         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2174
2175         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2176         the AOT file to avoid some #ifdefs in aot-runtime.c
2177
2178         * mini.h: Bump AOT file format version.
2179
2180 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2181
2182         * Makefile.am (fullaotcheck): Make this run the tests.
2183
2184         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2185
2186 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2187
2188         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2189         individually.  Fixes #473482.
2190
2191 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2192
2193         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2194
2195 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2196
2197         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2198         (mono_compile_assembly): Hush compile warnings about
2199         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2200         code path.
2201
2202 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2205
2206         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2207
2208         * aot-compiler.c: Fix arm support.
2209
2210         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2211         img_writer_emit_unset_mode () function.
2212
2213         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2214         (mono_unwind_get_dwarf_pc_reg): Ditto.
2215
2216         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
2217         Move almost all platform specific code to a set of arch_ functions, 
2218         and document them to ease porting.
2219         
2220         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
2221
2222         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
2223
2224         * aot-compiler.c: Extract the image writing functionality into a separate
2225         module to reduce the size of this file.
2226
2227 2009-02-09  Geoff Norton  <gnorton@novell.com>
2228
2229         * mini-s390.c: Fix the signature of emit_sig_cookie.
2230
2231 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2232
2233         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
2234
2235         * aot-runtime.c (is_shared_got_patch): Ditto.
2236
2237         * aot-runtime.c (load_named_code): Cope with the fact that 
2238         decode_got_entry () won't decode the patch fully if its corresponding got
2239         entry is already filled.
2240         
2241         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2242         Initialize *ji.
2243         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2244
2245         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2246         as the moving pointer instead of 'buf' for consistency with the rest of the
2247         codebase.
2248         (mono_arch_create_monitor_exit_trampoline): Ditto.
2249
2250         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2251         generic_class_init trampolines.
2252         (add_generic_class): Extract some code from add_generic_instances () into a
2253         separate function so it can be called from other places too.
2254         (compile_method): Call add_generic_class () for the classes of inflated methods
2255         referenced by the method.
2256         (can_encode_patch): Allow references to generic parameters.
2257
2258         * aot-runtime.c: Add support the patches required by the new trampolines.
2259         
2260         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2261         support.
2262
2263         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2264         full-aot support.
2265
2266         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2267         this from get_throw_pending_exception, make the signature full aot compatible.
2268
2269         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2270
2271         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2272
2273         * exceptions.cs: Add a test.
2274
2275 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2278         use the DWARF_DATA_ALIGN constant instead.
2279
2280         * exception-<ARCH>.c: Update after the above change.
2281
2282         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2283         dwarf unwinder.
2284
2285         * mini-arm.c: Enable the dwarf unwinder.
2286
2287         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2288         instead of mono_class_setup_vtable ().
2289
2290 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2293         dwarf unwinder.
2294
2295         * mini-x86.h: Enable the dwarf unwinder.
2296
2297 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2298
2299         Fix mcs/tests/test-7.cs
2300         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2301         2009-02-03.
2302
2303 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * mini.c (print_jit_stats): Remove some unused statistics.
2306
2307 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2310
2311 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2312
2313         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2314         the method we get from mono_object_get_virtual_method() because
2315         that function does it properly, now.
2316
2317 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2318
2319         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2320         opcodes. Fixes #472775.
2321
2322 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2323
2324         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2325         fact that mono_find_jit_info() sometimes returns the context
2326         corresponding to the jit info in new_ctx.  Fixes #472600.
2327
2328 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2331         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2332         klass->enum_basetype directly.
2333
2334         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2335         enum subtypes.
2336
2337         * unwind.c: Avoid 0 sized arrays.
2338
2339 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2342         size on systems with 64k pages. Fixes #471389.
2343
2344 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2345
2346         Contributed under the terms of the MIT/X11 license by Steven
2347         Munroe <munroesj@us.ibm.com>.
2348
2349         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2350         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2351         necessary.
2352
2353 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2354
2355         Contributed under the terms of the MIT/X11 license by Steven
2356         Munroe <munroesj@us.ibm.com>.
2357
2358         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2359         comparison fix.
2360
2361         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2362         The trampoline can be longer on PPC64.
2363
2364 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2365
2366         Contributed under the terms of the MIT/X11 license by Steven
2367         Munroe <munroesj@us.ibm.com>.
2368
2369         * mini-ppc.c: Compiler warning fixes and trivial code
2370         simplifications.
2371
2372 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2375         ins->dreg which could be a hardware register, not a vreg.
2376
2377         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2378         
2379         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2380         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2381
2382         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2383         
2384         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2385         ->dreg, that is not the vreg we are looking for.
2386
2387         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2388
2389         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2390         LIVERANGE_END.
2391
2392         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2393         strange crashes.
2394
2395 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2398
2399         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2400         the line diff is 0.
2401
2402         * aot-compiler.c: Add xdebug support on x86.
2403
2404         * unwind.c: Add x86 support.
2405         
2406         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2407         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2408
2409         * mini.c (mini_method_compile): Ditto.
2410         
2411         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2412         the variable index.
2413
2414         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2415         which mimic .push_section/.pop_section in GAS.
2416         
2417         * aot-compiler.c: Emit precise live range information for variables.
2418
2419         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2420
2421         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2422         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2423         them.
2424
2425         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2426         the live ranges of variables.
2427
2428         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2429         of the variable in terms of native offsets.
2430
2431 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2432
2433         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2434         
2435 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2436
2437         Contributed under the terms of the MIT/X11 license by Steven
2438         Munroe <munroesj@us.ibm.com>.
2439
2440         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2441         order (offset then base reg) for ppc_load_multiple_regs.
2442         (emit_save_saved_regs) Correct operand order for
2443         ppc_store_multiple_regs.
2444         (mono_arch_get_call_filter): Correct operand order for
2445         ppc_load_multiple_regs.
2446
2447         * mini-ppc.c (emit_memcpy): Fix operand order for
2448         ppc_load_reg_update and ppc_store_reg_update.
2449         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2450         (mono_arch_emit_epilog): Correct operand order for
2451         ppc_load_multiple_regs.
2452
2453         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2454         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2455
2456 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2457
2458         * cpu-ppc64.md: Fixed storer4_memindex length.
2459
2460 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2463         line number info.
2464         
2465         * aot-compiler.c (emit_line_number_info): Optimize this.
2466
2467 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2468
2469         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2470         
2471         * aot-compiler.c: Add debug info for methods without debug info by
2472         emitting an IL file and having the line number info referencing that file.
2473
2474         * aot-compiler.c: Optimize the size of the generated line number info.
2475
2476         * aot-compiler.c: Emit line number info in xdebug mode.
2477
2478         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2479         million arguments.
2480
2481 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2482
2483         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2484
2485         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2486         is used.
2487
2488 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2489
2490         * basic-calls.cs: Test for the weird crash found on arm.
2491         
2492 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2493
2494         * cpu-arm.md: Increase the size of storer8_membase_reg and
2495         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2496
2497         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2498         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2499         reg to LR otherwise we'll be loading/storing from just the offset.
2500
2501 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2502
2503         Question: if we are storing gint32's inside the "*native_offset",
2504         should we change the signature to "gint32 *native_offset" to
2505         ensure that we do not have type definition problems?
2506         
2507         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2508         an int * as this is what the other function expects, causes
2509         problems with Freescale's compiler that defined int32_t to be a
2510         long and makes int incompatible 
2511
2512 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2513
2514         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2515         filename conflict with bjam.
2516
2517 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2518
2519         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2520         as it might use decomposed ops.
2521
2522 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2525
2526         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2527         is defined.
2528
2529         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2530
2531         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2532         offsets.
2533
2534         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2535         way registers are stored in MonoContext on arm.
2536
2537         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2538         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2539
2540         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2541
2542         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2543
2544         * mini.c (mini_init): Register mono_isfinite.
2545
2546         * jit-icalls.c (mono_isfinite): New jit icall.
2547
2548         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2549         
2550         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2551         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2552         the parent frame.
2553
2554 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2557         separate frame and stack pointers, so we must use FP to find the register
2558         spill area.
2559         The FP reg is retrieved from the MonoContext::regs array.
2560
2561 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2562
2563         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2564         as FPA requires it.
2565
2566 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2567
2568         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2569         return R4 and R8 when not running under softfloat.
2570
2571         Fixes basic-calls.exe
2572
2573 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini-arm.c: Implement some overflow opcodes.
2576
2577 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2578
2579         * ssa.c: handle another alloca.h
2580
2581         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2582         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2583         MONO_ARCH_USE_SIGACTION. 
2584
2585         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2586         capability defines.
2587
2588         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2589
2590         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2591         PPC targets as sigaction does not exist on all platforms, define
2592         this on a per-platform basis.
2593
2594         Instead of erroring out if the platform is not defined, include
2595         mini-ppc-os.h, and expect that the OS specific setting provides
2596         the required information.   
2597
2598 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * aot-compiler.c: Fix --enable-minimal=aot.
2601
2602 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2605         previous change.
2606
2607 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2608
2609         * exceptions-arm.c: Fix warnings.
2610
2611         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2612         ARM.
2613
2614         * mini-x86.c: Fix --enable-minimal=jit build.
2615
2616         * mini.c: Really fix --enable-minimal=jit build.
2617         
2618         * mini.c (construct_object_context_for_method): Move this outside
2619         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2620
2621         "Backported" of r124984 from 2.0 branch.
2622         
2623         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2624
2625         "Backport" of r124977 + r124978 from 2.0 branch.
2626         
2627         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2628         to avoid calling mono_exception_from_token () from the throw trampoline.
2629         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2630         for throwing corlib exceptions, this fixes full-aot support for corlib
2631         exceptions.
2632
2633         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2634
2635 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2636
2637         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2638         part of the changes to split the code in mini into operating
2639         system specific files.
2640
2641         This patch was done by copying mini.c to the respective files to
2642         preserve SVN history.
2643
2644 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2647
2648 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2649
2650         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2651         remoting-invoke-with-check wrappers of shared methods.
2652
2653         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2654
2655 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2656
2657         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2658         optimization if the top of stack is the last instruction in the
2659         bblock.  Otherwise it might have been used after its definition.
2660         Fixes #469742.
2661
2662 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2663
2664         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2665         method as well when get_vcall_slot () fails to match a code sequence.
2666
2667         * mini-arm.c: Fix the android build, which doesn't have
2668         __aeabi_read_tp.
2669
2670 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2673         the s390x build.
2674
2675 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2676
2677         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2678
2679 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2682         and put its id into jinfo->used_regs. This is only used on amd64,
2683         which is currently the only platform generating unwind info.
2684
2685         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2686         the dwarf unwinder. This is required to correctly handle async exceptions
2687         like thread abort and stack overflows, which can happen while a method
2688         is in the middle of its prolog or epilog.
2689         
2690         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2691         the unwind info belonging to an AOTed method.
2692
2693         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2694         into cfg->unwind_ops.
2695         
2696         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2697
2698         * mini.c (mini_init): Call mono_unwind_init ().
2699         (mini_cleanup): Call mono_unwind_cleanup ().
2700
2701         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2702         unwind info to be shared between methods.
2703
2704         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2705         saved in the LMF.
2706
2707         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2708         get_throw_pending_exception () to avoid initialization races.
2709
2710         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2711         mono_arch_exceptions_init () function.
2712
2713         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2714
2715 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * mini.c (mono_get_domain_intrinsic): New helper function.
2718         (mono_get_thread_intrinsic): Ditto.
2719
2720         * mini-arm.c mini-ia64.c: Use the new helper functions.
2721         
2722         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2723         the last constrained_call change, since it is needed in the non-AOT
2724         case as well.
2725
2726         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2727         
2728         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2729         mono_get_lmf_addr () on arm eabi linux.
2730
2731 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2734         code sequence which matches a non-virtual call.
2735
2736 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2737
2738         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2739         stack pointer (r1).
2740
2741 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2744         runtime-invoke wrappers, since they are also shared based on signature.
2745
2746 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2747
2748         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2749         info from the (correct) context.
2750
2751 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2752
2753         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2754         
2755         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2756         using dwarf unwinding info. Not yet used.
2757
2758         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2759
2760 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2761
2762         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2763         descriptors.
2764
2765         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2766         special case and handle mono_arch_delegate_invoke_impl() returning
2767         function descriptors.
2768
2769         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2770         trampolines return function descriptors, too.
2771
2772 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2775         out_of_line optimization.
2776
2777 2009-01-21  Martin Baulig  <martin@ximian.com>
2778
2779         * mini.h
2780         (MonoCompile): Added `disable_deadce_vars' to disable removing
2781         unused variables.
2782
2783         * mini.c
2784         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2785         inside the debugger.
2786
2787         * liveness.c (mono_analyze_liveness): Don't remove any unused
2788         variables if `cfg->disable_deadce_vars' is set.
2789
2790 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2791
2792         * method-to-ir.c: Only apply exception constructor optimization if
2793         the the method actually belongs to an exception class.  Fixes
2794         #467456.
2795
2796 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2799         change inside a #ifdef __mono_ppc64__.
2800
2801         * aot-compiler.c (compile_method): Remove the previous limitation.
2802
2803         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2804         on type variables in AOTed code.
2805         
2806         * aot-compiler.c (compile_method): Skip generic methods having type 
2807         constraints on their generic parameters.
2808
2809         * aot-compiler.c (compile_method): Check for methods which cannot be
2810         encoded inside RGCTX_FETCH patches as well.
2811
2812         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2813         build.
2814
2815 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2816
2817         * method-to-ir.c: Force the vtable variable in shared generic code
2818         for the case that they might show up on a stack trace where they
2819         are needed.
2820
2821         * mini-exceptions.c: Save and use generic sharing info as well as
2822         IP in stack traces to resolve shared generic instantiations.
2823
2824 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2825
2826         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2827         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2828
2829 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2830
2831         * method-to-ir.c: Do generic sharing for array constructors.
2832
2833 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * mini-exceptions.c (mono_print_thread_dump): Add information
2836         about the thread state using wapi_current_thread_desc.
2837
2838 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * basic-simd.cs: Tests for the new constructors. 
2841
2842 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2843
2844         * mini-ops.h: Added OP_EXPAND_*
2845
2846         * cpu-x86.md: Same.
2847
2848         * mini-x86.c (mono_arch_output_basic_block): Same.
2849         
2850         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2851
2852 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2853
2854         * iltests.il.in: Add a test for #467385.
2855
2856 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2857
2858         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2859         thread been cleaned up is not the same currently in execution.
2860
2861         Fixes appdomain-unload crashes on windows, osx and linux variants
2862         without the __thread keyword.
2863
2864 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2867         (koush@koushikdutta.com). Implement this for android.
2868
2869         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2870         begins with a digit.
2871
2872         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2873         mono_marshal_get_write_barrier ().
2874
2875 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2876
2877         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2878         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2879         that pass them on a register pair.
2880
2881         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2882         test was crashing due to that.
2883
2884 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2885
2886         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2887         trampoline code. Include ucontext.h only if available.
2888
2889 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2890
2891         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2892         and doesn't check whether it's sharable, like it was before
2893         removing the shared generics hash.  This brings IronPython
2894         performance back to what it was before that change.
2895
2896 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2897
2898         * method-to-ir.c: Handle delegate invocation optimization earlier,
2899         otherwise it would be handled (much more slowly) by the
2900         final/sealed optimization.
2901
2902 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2905         domain is not set. Fixes #465864.
2906
2907 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2908
2909         * method-to-ir.c: Don't stop sharing of generic methods with catch
2910         clauses - we already handle those.
2911
2912 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2913
2914         * mini.c, mini.h: lookup_generic_method() is now
2915         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2916         making the shared_generics_hash obsolete.
2917
2918 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2919
2920         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2921         use the red zone.  Make room on the stack first and then use it,
2922         not the other way around.
2923
2924 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2925
2926         * mini.c (mini_init): Call mono_xdebug_init ().
2927
2928         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2929
2930 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2933
2934         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2935         trampolines.
2936
2937         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2938         debug+unwind info for trampolines.
2939
2940         * mini.c (mono_create_unwind_op): New helper function.
2941
2942         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2943
2944 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * aot-compiler.c: Fix the build.
2947
2948 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * Makefile.am: Update dtrace-prelink.sh location.
2951
2952 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2953
2954         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2955         optimization. Fixes #464520.
2956
2957 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2958
2959         * mini-amd64.c : Adding code to save/restore non-volatile registers
2960            on Winx64.
2961
2962         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2963           registers on Winx64.
2964
2965         Contributed under MIT/X11 license.
2966
2967 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2970         __GNUC_MINOR__ which can break when the major version changes.
2971
2972 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2975
2976 2009-01-07  Geoff Norton  <gnorton@novell.com>
2977
2978         * helpers.c:  Allow mono -v -v -v to work on darwin.
2979
2980 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2981
2982         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2983           pattern. 
2984
2985         Contributed under MIT/X11 license.
2986
2987 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2990         instead of directly accessing type->data.klass. Fixes #462016.
2991         (mono_allocate_stack_slots_full): Ditto.
2992
2993         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2994         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2995
2996         * aot-compiler.c (emit_plt): Fix ARM build.
2997
2998 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3001         
3002         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3003         change.
3004
3005         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3006         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3007         #463357.
3008
3009         * iltests.il.in: Add a regression test.
3010
3011 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3012
3013         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3014
3015 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3016
3017         * basic-simd.cs: Add a regression test for #462457.
3018
3019 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3020
3021         * mini-ops.h: Add a definition of XPHI.
3022
3023         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3024
3025         * ssa.c (op_phi_to_move): Handle XPHI.
3026
3027         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3028
3029         Fixes #462457
3030
3031 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3032
3033         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3034
3035 2008-12-31  Geoff Norton  <gnorton@novell.com>
3036
3037         * mini-ppc.c: The prolog size allocated can be too small for darwin
3038         ppc32 under certain circumstances.  Also fix a small logic bug.
3039
3040 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3043         while loading AOT methods.
3044
3045         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3046         since only the former is nulled out after a successful cast. This prevents
3047         crashes with rethrown exceptions when using --debug=casts.
3048
3049 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3050
3051         * mini.h: New macro for checking whether a method is final,
3052         i.e. whether the method or its class is marked final.
3053
3054         * method-to-ir.c: Use the new macro for all final-checks
3055         consistently.  Fixes the crash in the System.ServiceModel tests.
3056
3057 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3058
3059         * mini-exceptions.c (get_exception_catch_class): Corrected another
3060         overly strict assertion.
3061
3062 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3063
3064         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3065         Clobbering it is not allowed because the caller might use it as
3066         the vtable register in the interface call.
3067
3068 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3069
3070         * mini-exceptions.c (get_exception_catch_class): Corrected an
3071         overly strict assertion.
3072
3073 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3074         
3075         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3076
3077         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3078
3079         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3080
3081         * cpu-mips.md: correct lengths for certain long_ opcodes.
3082
3083         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3084
3085         * mini-mips.c: Add support for more long operations. Fix issues with stack frame layout for n32 (still not perfect yet). Add mips_emit_load_const().
3086         
3087 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3088
3089         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3090         
3091 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3092         
3093         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3094         
3095 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3096
3097         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3098         next basic block.
3099         
3100 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3101
3102         * mini.h: Allow MonoInst 'p' field to alias with the low-order bits of the 'const_val' fields correctly on big-endian systems when SIZEOF_VOID_P < SIZEOF_REGISTER
3103
3104         * ir-emit.h: Change SIZEOF_VOID_P to SIZEOF_REGISTER, init instruction through inst_c* fields instead of inst_p* fields in case sizeof(inst_p) < sizeof(inst_c)
3105         
3106 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3107         
3108         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3109         
3110 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3113         gshared code. Fixes #458947.
3114
3115         * generics.cs: Add a test.
3116
3117 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3118         
3119         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3120         
3121         * mini-mips.c: first pass n32 code generation.
3122
3123         * mini-mips.h: datatypes and defines for n32 support.
3124
3125         * exceptions-mips.c: first pass n32 code generation.
3126         
3127         * tramp-mips.c: first pass n32 code generation.
3128         
3129         * cpu-mips.md: add long_ opcodes.
3130         
3131 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3132
3133         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3134
3135         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3136         
3137         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3138         
3139         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3140
3141         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3142
3143         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3144
3145         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3146
3147         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3148
3149         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3150
3151 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3154
3155 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3156
3157         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3158
3159 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3160
3161         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3162         descriptors for helper functions directly in front of the code.
3163
3164 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3165
3166         * method-to-ir.c: Removed an unnecessary assertion.
3167
3168 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3169
3170         * method-to-ir.c: Merge SGEN changes from the old JIT.
3171
3172 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * driver.c (compile_all_methods_thread_main): Handle failure of
3175         mono_get_method ().
3176
3177 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3178
3179         * mini-ppc.c: Merged with mini-ppc64.c.
3180
3181         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3182
3183         * Makefile.am: Use the same sources for PPC and PPC64.
3184
3185         * mini-ppc64.c: Removed.
3186
3187 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3188
3189         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3190         code to mono_bb_is_fall_through.
3191         
3192         * branch-opts.c (mono_remove_critical_edges): Same.
3193
3194 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3195
3196         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3197         expect that an OP_BR_REG will be there.
3198
3199 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3200
3201         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3202         for the many branch ops. The original check miss OP_BR_REG.
3203
3204         Fixes #457574.
3205         
3206 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3207
3208         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3209
3210 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3211
3212         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3213         while holding the aot lock.
3214
3215 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3216
3217         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
3218         
3219 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3220
3221         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
3222           to release all runtime callable wrappers held by the runtime.
3223
3224         Contributed under MIT/X11 license.
3225
3226 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3227
3228         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
3229           for Winx64.
3230
3231         Contributed under MIT/X11 license.
3232
3233 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
3236         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3237
3238 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3239
3240         * cpu-mips.md: fix ckfinite length
3241
3242         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3243         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3244         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3245         
3246 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3247
3248         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3249         
3250 2008-12-08  Geoff Norton  <gnorton@novell.com>
3251
3252         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3253         size by 8 bytes as well.
3254
3255 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3256
3257         * basic-simd.cs: Fix method names for Vector16b.
3258         
3259 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3260
3261         * basic-simd.cs: Fix method names for Vector16sb.
3262
3263 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3264
3265         * basic-simd.cs: Fix method names for Vector8us.
3266         
3267 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3268
3269         * basic-simd.cs: Fix method names for Vector8s.
3270         
3271 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3272
3273         * basic-simd.cs: Fix method names for Vector4ui.
3274
3275 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3276
3277         * basic-simd.cs: Fix method names for Vector2l.
3278
3279 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3280
3281         * basic-simd.cs: Fix method names for Vector2d.
3282
3283 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3286         that are extension methods.
3287
3288 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3289
3290         * basic-simd.cs: Fix method names for Vector4f.
3291
3292 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3293
3294         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3295         as such. Fixes #456669.
3296
3297 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3298
3299         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3300         
3301 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3302
3303         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3304         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3305         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3306         (mips_adjust_stackframe): handle FP spills
3307                 
3308         * mini-ops.h: add mips_mtc1_s2
3309         
3310         * cpu-mips.md: add mips_mtc1_s2
3311         
3312 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * unwind.c: New file, move the unwind info encoding functions here from
3315         aot-compiler.c, so they could be used at runtime too.
3316
3317 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3318
3319         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3320         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3321         
3322 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3323
3324         * mini-mips.c: cleanup warnings
3325         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3326         (mips_adjust_stackframe): handle case of taking the address of stack locals
3327         
3328 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * aot-compiler.c: Implement a few functions missing from the asm writer.
3331         (emit_method_code): Only write symbols for methods when using the bin
3332         writer, since the assembler can't deal with the characters in our method
3333         names.
3334
3335         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3336
3337         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3338         call.
3339
3340         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3341         a bit to also restore %rax.
3342
3343 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3344
3345         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3346
3347 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3350         arguments.
3351
3352 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3353
3354         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3355
3356         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3357         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3358
3359         * exceptions-ppc64.c: Removed.
3360
3361         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3362
3363 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3364
3365         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3366         tramp-ppc64.c.
3367
3368         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3369
3370         * tramp-ppc64.c: Removed.
3371
3372 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3375         the TYPESPEC table.
3376
3377 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3378
3379         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3380
3381         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3382         mini-ppc.h instead of mini-ppc64.h.
3383
3384         * mini-ppc64.h: Removed.
3385
3386 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3387
3388         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3389         
3390         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3391         
3392 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3393
3394         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3395         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3396         code easier.
3397
3398 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3399
3400         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3401
3402 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3403
3404         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3405
3406 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3407
3408         * basic-simd.cs: Tests for operator == and != on Vector4f.
3409
3410 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3411
3412         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3413
3414         * simd-intrinsics.c: Kill useless enum.
3415
3416 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3417
3418         * cpu-mips.md: add long_conv_to_ovf_i4_2
3419         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3420
3421 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3422
3423         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3424         
3425         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3426
3427 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3428
3429         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3430         
3431 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3432
3433         * basic-simd.cs: Add tests for new methods.
3434
3435 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3436
3437         * simd-intrinsics.c: Add support for operator == and !=
3438         on Vector4(u)i.
3439
3440         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3441
3442 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3443
3444         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3445
3446 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3449
3450         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3451         MONO_PATCH_INFO_ICALL_ADDR.
3452
3453         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3454
3455         * aot-compiler.c: Resurrect full-aot support.
3456
3457 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3458
3459         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3460         
3461 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3462
3463         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3464         
3465 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3466
3467         * basic-simd.cs: Fix tests to work under ppc.
3468         Remove tests for methods that will be removed.
3469
3470 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3471
3472         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3473         generic type (via a typedef or typeref) correctly.
3474
3475 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3478         diagnose an assertion failure.
3479
3480 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3481
3482         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3483         Fix trampoline size.
3484
3485         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3486         conversion opcodes are implemented natively instead via emulation.
3487
3488 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3489
3490         * cpu-mips.md: remove mips_xori
3491
3492         * mini-ops.h:  remove mips_xori
3493
3494         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3495
3496         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3497         
3498         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3499         
3500 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3501
3502         * cpu-mips.md: fix instruction lengths.
3503
3504         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3505
3506         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3507
3508         * mini-ops.h: fix slti / sltiu op profiles.
3509         
3510 2008-12-02  Martin Baulig  <martin@ximian.com>
3511
3512         * method-to-ir.c (mono_method_to_ir): Disable debugging
3513         information for the init locals block to make the debugger stop
3514         after all locals have been initalized.
3515
3516 2008-12-02  Martin Baulig  <martin@ximian.com>
3517
3518         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3519         running inside the debugger.
3520
3521 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3524         is enabled.
3525
3526         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3527         alu->alu imm optimization which only shows if deadce is disabled.
3528
3529         * aot-compiler.c: Rename the function names for the binary and asm writers
3530         so they can coexist in the same process. Rework the xdebug code to use the
3531         asm writer. This avoids the need to call into the runtime to dump the
3532         debugging info. Add more debugging info for types.
3533
3534         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3535
3536         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3537         cpu description tables, they can't occur in cpu-<ARCH>.md.
3538
3539         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3540         the stack in CEE_LDFLDA. Fixes #450542.
3541
3542         * generics.cs: Add a new test.
3543
3544 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3545
3546         * mini-ops.h: updated MIPS opcodes
3547         * mini-mips.c: decompose long opts
3548         * mini-mips.h: decompose long opts
3549         
3550 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3551
3552         * cpu-mips.md: fix length on int_rem_un
3553         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3554         
3555 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3558
3559         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3560
3561 2008-11-29  Martin Baulig  <martin@ximian.com>
3562
3563         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3564         mono_debug_using_mono_debugger() in addition to the
3565         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3566
3567 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3568
3569         * mini-ops.h: updated more MIPS opcodes
3570         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3571         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3572         
3573 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3574
3575         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3576
3577 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3578
3579         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3580         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3581         * mini-ops.h: correct selected mips opcode entries
3582         
3583 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3584
3585         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3586         make them work.
3587
3588 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3589
3590         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3591
3592 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3593
3594         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3595         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3596         * mini-mips.h: disable IMT
3597         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3598         
3599 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3600
3601         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3602
3603 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3604
3605         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3606
3607 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3608
3609         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3610         consistency.
3611
3612 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3613
3614         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3615         for Set/GetVector aligned versions.
3616
3617 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3618
3619         * basic-simd.cs: Add tests for Get/SetVector.
3620
3621 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3622
3623         * mini.c: Removed g_slist_append_mempool().  Now in
3624         metadata/mempool.c.
3625
3626 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3627
3628         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3629         size properly and make the bounds check optional.
3630
3631         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3632         for SetVector and IsAligned.
3633
3634 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3635
3636         * mini.c: Remove unused mono_normalize_opcodes () function.
3637
3638 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3639
3640         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3641         using the new atomic add ops now.
3642
3643         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3644         add.
3645
3646 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3647
3648         * mini-ppc64.c: Several fixes.
3649
3650 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3651
3652         * cpu-mips.md: added jump_table
3653         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3654
3655 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3656
3657         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3658
3659 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3660
3661         * mini-ops.h: corrected a handful of MIPS opcodes.
3662
3663 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3664
3665         * aot-compiler.c: MIPS to use ELF writer
3666
3667 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3668
3669         * mini-codegen.c: remove MIPS specific assert.
3670
3671 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3672
3673         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3674         fixes.  PPC64 now passes most of the runtime regressions.
3675
3676 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3679         volatile intervals a bit.
3680
3681 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3682
3683         * basic-long.cs: New test case.
3684
3685 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * mini.c (mini_method_compile): Disable globalra for large methods for 
3688         now.
3689
3690         * regalloc2.c (order_moves): Add fp support.
3691
3692         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3693         source bblock ends with an OP_BR_REG.
3694
3695         * ratests.cs: Add a new test.
3696
3697 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3698
3699         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3700         sharing.  PPC64 now passes generics.exe.
3701
3702 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3703
3704         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3705
3706 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3707
3708         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3709         memory when mono_jit_info_table_find () can't find the method in the
3710         LMF case.
3711
3712         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3713         AOTed code too.
3714         
3715         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3716         writer too.
3717
3718 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3719
3720         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3721         Several fixes.  PPC64 now runs exceptions.exe and
3722         devirtualization.exe.
3723
3724 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3725
3726         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3727         arrays.exe and basic-math.exe.
3728
3729 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3730
3731         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3732         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3733
3734 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3735
3736         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3737
3738 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3739
3740         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3741
3742         * ir-emit.h: Move macros from method-to-ir.c to here.
3743
3744 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3745
3746         * mini-ops.h: Correct the long simd ops to use LREG.
3747
3748 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3751         
3752         * mini-ops.h: Correct the dreg type of a few long opcodes.
3753
3754         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3755         Add netbsd support.
3756
3757 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3758
3759         * mini-ppc.c: remove negative stack references in epilog
3760         for platforms that don't support the red zone.
3761
3762 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3763
3764         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3765         point regs.  Now PPC64 passes basic-calls.exe.
3766
3767 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3768
3769         * basic-simd.cs: Add tests for accessors of Vector2l.
3770
3771 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3772
3773         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3774
3775         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3776         
3777         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3778
3779 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3780
3781         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3782         PPC64 passes basic-long.exe.
3783
3784 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3785
3786         * decompose.c: Decompose carry and overflow add on PPC64 like on
3787         other 64 bit archs.  Don't decompose sub at all on PPC64.
3788
3789         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3790         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3791         basic-long.exe.
3792
3793 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3794
3795         * basic-simd.cs: Add tests for accessors of Vector2d.
3796
3797 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3798
3799         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3800
3801         * cpu-x86.md: Same.
3802
3803         * mini-x86.c (mono_arch_output_basic_block): Same.
3804         
3805         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3806
3807 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3808
3809         * basic-simd.cs: Add tests for accessors of Vector4f.
3810
3811 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3814
3815         * cpu-x86.md: Same.
3816
3817         * mini-x86.c (mono_arch_output_basic_block): Same.
3818         
3819         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3820
3821 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3822
3823         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3824
3825 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3828
3829         * cpu-x86.md: Same.
3830
3831         * mini-x86.c (mono_arch_output_basic_block): Same.
3832         
3833         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3834
3835 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3836
3837         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3838
3839 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3840
3841         * simd-intrinsics.c: Enable setters for Vector16sb.
3842
3843 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3844
3845         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3846
3847         * cpu-x86.md: Same.
3848
3849         * mini-x86.c (mono_arch_output_basic_block): Same.
3850         
3851         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3852
3853 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3854
3855         * simd-intrinsics.c: Implement setter for Vector8us.
3856
3857 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3860         for dead variables.
3861
3862 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3863
3864         * mini-ppc.c: remove references to the red zone in the prolog
3865         (for systems that don't support it).
3866
3867 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3868
3869         * cpu-ppc64.md: Fixed a few instruction lengths.
3870
3871         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3872         now.
3873
3874 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3875
3876         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3877         basic.exe now.
3878
3879 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3882
3883 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3884
3885         * mini-ops.h: Added OP_INSERT_I2.
3886
3887         * cpu-x86.md: Same.
3888
3889         * mini-x86.c (mono_arch_output_basic_block): Same.
3890         
3891         * simd-intrinsics.c: Implement setter for Vector8s.
3892
3893         * simd-methods.h: Add the names of get setters of Vector8s.
3894
3895 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3898         
3899         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3900         parameters.
3901
3902         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3903
3904 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3905
3906         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3907         for PPC64.  An empty program runs now.
3908
3909 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3910
3911         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3912
3913         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3914         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3915         info for JITted code is emitted into a shared library, loadable into gdb.
3916
3917 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3918
3919         * Makefile.am: Changes to build PPC64.
3920
3921         * mini-arch.h: Include mini-ppc64.h on PPC64.
3922
3923 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3924
3925         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3926         in PPC code up to r119147.
3927
3928 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3929
3930         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3931         cpu-ppc64.md: Changes for PPC64.
3932
3933         Based on code submitted by andreas.faerber@web.de at
3934         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3935         X11/MIT license.
3936
3937 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3938
3939         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3940         cpu-ppc64.md: Copied from the corresponding PPC files from
3941         r118846.
3942
3943 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3944
3945         * mini-ops.h: Added OP_ROUND.
3946
3947         * cpu-x86.md: Added round.
3948
3949         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3950
3951         * basic-math.cs: Added test_0_round to test rounding.
3952
3953         Contributed under MIT/X11 license.
3954
3955 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3956
3957         * aot-compiler.c : Fix the Winx64 build.
3958
3959         Contributed under MIT/X11 license.
3960
3961 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3962
3963         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3964         in OP_EXTRACT_R8 to avoid possible stack corruption.
3965
3966 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3967
3968         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3969
3970         * cpu-x86.md: Added extract_r8.
3971
3972         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3973         
3974         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3975         a couple of OP_EXTRACT_I4.
3976
3977         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3978
3979         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3980
3981 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3982
3983         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3984         and not 4.1. 
3985
3986 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3987
3988         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3989         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3990
3991         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3992         are not needed any more.
3993
3994         * mini.h: Remove the unused INS_LIST macros.
3995
3996         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3997         longer needed.
3998
3999         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4000         ir-emit.h.
4001
4002         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4003         mono_alloc_ireg () instead.
4004
4005         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4006         macros.
4007
4008         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4009         on amd64.
4010
4011         * aot-runtime.c (load_aot_module): Disable AOT when running under
4012         CAS.
4013
4014         * mini-amd64.h: Change the monitor fastpath defines to check for
4015         !PLATFORM_WIN32 so they work on *bsd too.
4016
4017         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4018
4019         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4020
4021         * mini.h (MonoCompile): Remove new_ir flag.
4022
4023         * regalloc.h regalloc.c: Remove unused code.
4024
4025         * cpu-*.md: Remove more unused opcodes.
4026
4027         * simple-cee-ops.h simple-mini-ops.h: Removed.
4028
4029         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4030         
4031 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4032
4033         * aliasing.h: Removed.
4034
4035         * *.c: Remove references to aliasing.h and inssel.h.
4036
4037         * mini.c: Remove additional unused functions.
4038
4039         * mini-ops.h cpu-*.md: Remove unused opcodes.
4040
4041 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4042
4043         Remove the old JIT code.
4044
4045         * inssel*.brg: Removed.
4046
4047         * ssa.c abcremoval.c aliasing.c: Removed.
4048
4049         * ssa2.c: Renamed to ssa.c.
4050
4051         * abcremoval2.c: Renamed to abcremoval.c.
4052
4053         * *.c: Removed all !cfg->new_ir code.
4054
4055         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4056         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4057
4058         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4059         
4060 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4063         to simplify the code and cut back on the number of global symbols in the AOT
4064         file.
4065         
4066         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4067
4068 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4071         with the got/got_info tables.
4072
4073         * mini.h: Bump AOT file format version.
4074         
4075         * unwind.h: New file, contains definitions for stack unwinding.
4076
4077         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4078         to cfg->unwind_ops.
4079         
4080         * aot-compiler.c: Generalize the emitting of unwind information to use the
4081         information in cfg->unwind_ops.
4082
4083         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4084
4085         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4086         AOT method frames. Enable writing symbols for methods by default.
4087
4088 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4089
4090         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4091         and make it work with vectors of element sizes 1, 2 and 4.
4092
4093         * simd-intrinsics.c: Enable getter for all vectors with element size
4094         1, 2 or 4.
4095
4096         * simd-methods.h: Add the names of other getters.
4097
4098         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4099
4100         * cpu-x86.md: Same.
4101
4102         * mini-x86.c: Same.
4103
4104 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4105
4106         * mini-ppc.h: portability fix.
4107
4108 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4109
4110         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4111         buggy and will overwrite it.
4112
4113 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4116         Use it to emit local symbols for all methods so AOTed methods show up with
4117         their full name in gdb/valgrind output.
4118
4119 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4120
4121         * mini-ppc.c: portability fixes.
4122
4123 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4124
4125         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4126         entries out of the if (!generic_shared...) code so it is always done.
4127         (mono_class_init_trampoline): Do the patching when running under valgrind
4128         too, newer versions of valgrind have no problems with it.
4129
4130 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4133         further sections.
4134
4135 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4136
4137         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4138         filters.
4139
4140 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4141
4142         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4143
4144 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4145
4146         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4147
4148         * cpu-x86.md: Same.
4149
4150         * mini-x86.c: Same.
4151
4152         * simd-intrinsics.c: Same.
4153
4154 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4155
4156         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4157
4158 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4159
4160         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4161         to work with more Vector types.
4162
4163 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4164
4165         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4166         store the elemens directly instead of using and intermediate.
4167
4168 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4169
4170         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4171
4172         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4173         to preserve %eax for aot plt trampolines.
4174
4175         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4176         (encode_method_ref): Flag synchronized methods so they won't go through
4177         the AOT trampoline.
4178
4179         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4180         wrappers.
4181
4182         * cpu-ia64.md (jmp): Increase max length.
4183
4184 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4187         open generic classes.
4188
4189         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4190
4191         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4192         box+brtrue optimization since it causes test failures on x86.
4193
4194 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4195
4196         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4197
4198         * cpu-x86.md: Same.
4199
4200         * mini-x86.c: Same.
4201
4202         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4203         for simd ctor values. 
4204
4205         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4206         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4207
4208 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4209
4210         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4211         LogicalRightShift.
4212
4213         * simd-instrincs.c: Same.
4214
4215         * basic-simd.cs: Same.
4216
4217 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4218
4219         * ratests.cs: Add more tests.
4220
4221         * regalloc2.c (add_spill_code): Handle more corner cases.
4222
4223 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
4226         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
4227         both the source an destination of an instruction.
4228
4229 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4230
4231         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
4232         wapihandles.c: more portability changes.
4233
4234 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
4235
4236         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4237         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4238         safe to execute in a signal handler and the kernel provides better
4239         the info in /proc/self/smaps. Avoid the assert on sigaction during
4240         cleanup.
4241
4242 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4245         do the bblock linking hack if it is actually needed.
4246
4247         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4248         up linking.
4249
4250         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4251         crash problem is fixed.
4252
4253         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4254         bblocks.
4255
4256         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4257         for catch clauses.
4258         (mini_method_compile): Set the starting value of next_vreg to 
4259         MAX_IREGS + MAX_FREGS when using globalra.
4260
4261         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4262         filter clauses with BB_EXCEPTION_HANDLER.
4263
4264         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4265
4266 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4267
4268         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4269         space for stdcall.  Fixes regressions on Win32.
4270
4271 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4272
4273         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4274         bblocks.
4275         (linear_scan): Remove an assert which doesn't seem to be needed.
4276
4277         * local-propagation.c (mono_local_deadce): Avoid a call to
4278         MONO_DELETE_INS which would screw up the instruction linking.
4279
4280         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4281
4282         * regalloc2.c: Upgrade to work the current JIT code.
4283
4284 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4287         case.
4288
4289         * aot-runtime.c: Remove some dead code.
4290
4291         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4292         consistency.
4293         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4294
4295         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4296         trampolines using sscanf since atoi doesn't work on large unsigned values.
4297
4298         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4299         Initialize code_size.
4300
4301 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4302
4303         * method-to-ir.c (mini_emit_inst_for_method): Make
4304         Interlocked.CompareExchange work for Int arguments on 32 bit
4305         archs, as well.
4306
4307 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4308
4309         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4310
4311 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4312
4313         * main.c Fix MSVC build.
4314
4315         Contributed under MIT/X11 license.
4316
4317 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4318
4319         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4320         alignment larger than 8 bytes are aligned correctly, too.
4321
4322         * mini.c: Honor the min_align field of MonoClass when laying out
4323         the stack.
4324
4325 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4326
4327         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4328
4329         * aot-compiler.c (emit_plt): Fix a warning.
4330         
4331         * aot-compiler.c: Implement ARM support in the binary writer.
4332
4333 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4334
4335         * basic-simd.cs: Add test for getter with byref arg.
4336         Fix the naming of a few tests.
4337         Add missing checks to a test.
4338
4339 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4340
4341         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4342
4343         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4344         most of the full-aot support for monitor enter/exit trampolines.
4345
4346         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4347         enter/exit trampoline creation functions.
4348
4349         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4350         make dist.
4351
4352 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4353
4354         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4355         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4356         implement the needed functionality without adding crap to the runtime.
4357
4358 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4359
4360         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4361         non-x86 builds.
4362
4363         * mini.c (mono_build_date): New global version holding the build date in
4364         string format.
4365         
4366         * Makefile.am (buildver.c): Generate a file containing the build date.
4367
4368         * main.c: Set the build date from the generated file.
4369
4370         * mini.c (mono_get_runtime_build_info): New helper function returning build
4371         information in a string format.
4372         
4373         * driver.c (mono_main): Print the build date in --version.
4374
4375         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4376         file when the bind-to-runtime-version option is used.
4377
4378 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4379
4380         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4381
4382 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4383
4384         * simd-methods.h: Rename prefetch methods.
4385
4386         * simd-intrinsics.c: Same.      
4387
4388 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4389
4390         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4391         sizes.
4392
4393 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * aot-compiler.c: Use the bundled elf header files instead of depending on
4396         the system one.
4397         
4398         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4399         mempool.
4400
4401         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4402         on every call.
4403
4404 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4405
4406         * cpu-x86.md: Add store nta ops.
4407
4408         * mini-ops.h: Same.
4409
4410         * mini-x86.c: Same.
4411
4412         * mini.h: Add an enum for simd prefetch modes.
4413
4414         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4415         of store. Use the changed code to support store nta.
4416
4417         * simd-intrinsics.c: Add prefetch ops for all vector types.
4418
4419 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4420
4421         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4422         threads.
4423         
4424         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4425         names.
4426
4427         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4428         trampolines.
4429
4430 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4431
4432         * mini-x86.c: Fixed commit.
4433
4434 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4435
4436         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4437
4438 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4439
4440         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4441         and MONITOR_EXIT, for the ASM fastpaths.
4442
4443         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4444         available.
4445
4446         * mini.c, patch-info.h: Signature and patch infos for
4447         Monitor.Enter/Exit trampolines.
4448
4449         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4450
4451         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4452         Monitor.Enter/Exit ASM fastpath for Linux.
4453
4454 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4457
4458         * objects.cs: Add a new test.
4459         
4460         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4461
4462         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4463         if MONO_LOG_LEVEL is set.
4464
4465         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4466
4467         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4468
4469         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4470         
4471         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4472         of file offsets. Align the sections belonging to the data segment to 
4473         PAGESIZE.
4474
4475 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4478         elf.h. Port it to amd64.
4479
4480 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4481
4482         * driver.c: Enable SIMD by default.
4483
4484 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * cpu-x86.md: Add prefetch op.
4487
4488         * mini-ops.h: Same.
4489
4490         * mini-x86.c: Same.
4491
4492         * mini.h: Add an enum for simd prefetch modes.
4493
4494         * simd-methods.h: Add prefetch function names.
4495
4496         * simd-intrinsics.c: Add prefetch ops for all vector types.
4497
4498 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * aot-compiler.c (emit_bytes): Speed this up a little.
4501
4502 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * aot-compiler.c: Add JIT time etc. statistics.
4505         
4506         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4507
4508         * mini.h (MonoCompile): Add 'got_offset' field.
4509
4510         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4511         method_got_offsets array.
4512
4513         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4514         wrappers.
4515
4516         * aot-compiler.c (compile_method): Add generic method instances referenced
4517         by the method to the list of methods to be compiled, this is required so if
4518         A<T> references B<T>, and another assembly references A<int>, then it will
4519         also get a copy of B<int>.
4520
4521         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4522         when checking for monitor enter/exit.
4523
4524 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4525
4526         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4527         for Monitor.Enter and Monitor.Exit if enabled.
4528
4529         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4530         Solaris.
4531
4532 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4533
4534         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4535         of an OP_MOVE. Fixes #440046.
4536
4537         * basic-long.cs: Add a new test.
4538
4539 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4540
4541         * mini.h: Add synchronization note for the managed counter-part.
4542
4543         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4544         returns the simd caps of the current cpu.
4545
4546 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4547
4548         * basic-simd.cs: Remove Console.WriteLine.
4549
4550 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * basic-simd.cs: New tests for Vector2ul.
4553
4554 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4555
4556         * simd-intrinsics.c: Add new vector type Vector2ul.
4557
4558 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4559
4560         * basic-simd.cs: New tests for Vector2l.
4561
4562 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * cpu-x86.md: Add long version of most packed int ops.
4565
4566         * mini-ops.h: Same.
4567
4568         * mini-x86.h: Same.
4569
4570         * simd-intrinsics.c: Add new vector type Vector2l.
4571
4572 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4575
4576         * simd-methods.h: Remove SN_op_BitwiseXor.
4577
4578 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4579
4580         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4581         alignment.
4582
4583 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * basic-simd.cs: Test for Vector2d.
4586
4587         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4588         value.
4589
4590 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * cpu-x86.md: Add double version of all packed float ops.
4593
4594         * mini-ops.h: Same.
4595
4596         * mini-x86.h: Same.
4597
4598         * simd-intrinsics.c: Add new vector type Vector2d.
4599
4600         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4601
4602         * simd-methods.h: Add Duplicate.
4603
4604 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4605
4606         * basic-simd.cs: Test for packing with signed saturation.
4607
4608 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4611         found in the TYPESPEC table.
4612
4613 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4616         too.
4617
4618         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4619
4620         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4621         instead of the RVA, since the RVA can be changed by tools like the cil 
4622         stripper.
4623
4624         * method-to-ir.c (mono_method_to_ir2): Ditto.
4625
4626         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4627         (deserialize_variable): Ditto.
4628
4629 2008-10-25  Martin Baulig  <martin@ximian.com>
4630
4631         * debug-mini.c (write_variable): Use
4632         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4633
4634 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * cpu-x86.md: Add unsigned variants of packd and packw.
4637
4638         * mini-ops.h: Same.
4639
4640         * mini-x86.h: Emit the right instruction for packd and packw.
4641         Add unsigned variants of packd and packw.
4642
4643         * simd-intrinsics.c: Packd and packw were used in place of their
4644         unsigned variants. Change that.
4645         Add intrinsics for (Signed)PackWithSignedSaturation.
4646
4647         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4648
4649 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4650
4651         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4652
4653 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4656
4657         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4658
4659         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4660         sse instructions.
4661
4662         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4663
4664 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4665
4666         * method-to-ir.c, mini.c: Special casing for the synchronized
4667         wrapper for the ldtoken+GetTypeFromHandle case.
4668
4669 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4672
4673         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4674         created/split bblocks.
4675
4676 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * mini-ops.h: Add packed signed mul high.
4679         
4680         * cpu-x86.md: Same.
4681
4682         * mini-x86.c (mono_arch_output_basic_block): Same.
4683
4684         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4685
4686         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4687
4688 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4689
4690         * basic-simd.cs: Tests for Vector16sb.
4691
4692 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4695
4696 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * mini-ops.h: Add packed signed min, max and compare greater.
4699         
4700         * cpu-x86.md: Same.
4701
4702         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4703         saturation.
4704
4705         * simd-methods.h: Add CompareGreaterThan.
4706
4707         * simd-methods.h: Remove CompareEquals.
4708
4709         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4710
4711         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4712
4713         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4714         CompareEqual.
4715
4716 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4717
4718         * basic-simd.cs: Fix tests due to change in the API.
4719
4720 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4723
4724 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4725
4726         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4727
4728         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4729         inst_offset as this has invalid values for LDADDR.
4730
4731 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4732
4733         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4734
4735         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4736
4737 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4738
4739         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4740         for accessing field->data.
4741
4742 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4743
4744         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4745
4746 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4747
4748         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4749
4750         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4751
4752 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4755         from the cfg mempool.
4756
4757 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4758
4759         * basic-simd.cs: Tests for new methods in Vector8us.
4760
4761 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4762
4763         * mini-ops.h: Add multiply and store high.
4764         
4765         * cpu-x86.md: Same.
4766
4767         * mini-x86.c (mono_arch_output_basic_block): Same.
4768
4769         * simd-methods.h: Same.
4770
4771         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4772         and CompareEqual.
4773
4774 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4775
4776         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4777         mono_class_setup_vtable ().
4778
4779         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4780         mono_class_get_vtable_entry () for accessing klass->vtable.
4781
4782         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4783
4784         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4785         found.
4786
4787         * method-to-ir.c (mono_save_token_info): Don't save references made from
4788         wrappers.
4789
4790         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4791         of generic instances.
4792
4793         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4794
4795 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4796
4797         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4798         OP_JMP depends on the method signature.  Calculate it properly.
4799
4800 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4801         
4802         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4803         called directly.
4804
4805         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4806         instances.
4807         (emit_extra_methods): Add another table mapping method indexes to 
4808         offsets in the extra_method_info table.
4809
4810         * mini.h: Bump AOT file format version.
4811         
4812         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4813         and mono_aot_get_method_from_token () into one function.
4814
4815 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4816
4817         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4818         separate counter.
4819
4820 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4823         methods.
4824
4825         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4826         disable_aot.
4827
4828         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4829
4830         * mini.h: Bump aot file format version.
4831
4832         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4833         AOT file can contain native code for methods which are not in the METHOD
4834         table. Generate code for non-sharable generic instances of generic methods
4835         found in the METHODSPEC table.
4836         
4837         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4838         encoding generic type handles.
4839
4840         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4841         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4842
4843         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4844         macros + MONO_ADD_INS.
4845
4846         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4847         context as well.
4848
4849         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4850
4851         * mini.h: Bump aot file format version.
4852
4853         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4854
4855 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4856
4857         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4858         platforms, with definable stack alignment value.  Set to 16 now
4859         for all platforms.
4860
4861         * mini.c, mini.h, driver.c: Command line option for disabling
4862         stack alignment.
4863
4864 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * basic-simd.cs: Tests for new methods in Vector4ui.
4867
4868 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4869
4870         * mini-ops.h: Add packed int shuffle.
4871         
4872         * cpu-x86.md: Same.
4873
4874         * mini-x86.c (mono_arch_output_basic_block): Same.
4875
4876         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4877         extract mask, max, min, shuffle.
4878
4879         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4880
4881 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4882
4883         * basic-simd.cs: Tests for new methods in Vector8us.
4884
4885 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4886
4887         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4888         RuntimeTypeHandle, not a TypedReference.
4889
4890 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4891
4892         * simd-intrinsics.c: remove relocations.
4893
4894 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4897         optimizations from the x86 backend.
4898
4899 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4900
4901         * simd-methods.h, simd-intrinsics.c: debloat method names and
4902         prepare for no relocations.
4903
4904 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4905
4906         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4907         
4908         * cpu-x86.md: Same.
4909
4910         * mini-x86.c (mono_arch_output_basic_block): Same.
4911
4912         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4913         extract mask, max, min and sum of absolute differences.
4914
4915         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4916         method name.
4917
4918 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4919
4920         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4921         Renamed one test for consistency.
4922
4923 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4924
4925         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4926         fix to the code that deal with other blocks.
4927
4928 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4929
4930         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4931
4932 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4935         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4936         able to process the source reg.
4937
4938 2008-10-16  Martin Baulig  <martin@ximian.com>
4939
4940         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4941
4942         * inssel.brg: Add `OP_HARD_NOP'.
4943
4944         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4945
4946         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4947         `OP_HARD_NOP' instruction when running inside the debugger.
4948
4949         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4950         `OP_HARD_NOP' instruction when running inside the debugger.
4951
4952 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4953
4954         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4955         now works. The issue with the regalloc tripping up no longer
4956         happens.
4957
4958         * simd-intrinsics.c (load_simd_vreg): Same.
4959
4960 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4961         
4962         * basic-simd.cs: Tests for new Vector8ui methods.
4963
4964 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4967         only for type. This fixes crashes where MonoInst::klass is checked
4968         for ops of type != VTYPE or OBJ.
4969
4970         * simd-intrinsics.c (load_simd_vreg): Same.
4971
4972 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4973
4974         * mini-ops.h: Add ops for packed shuffle/max/avg and
4975         extract mask.
4976         
4977         * cpu-x86.md: Same.
4978
4979         * mini-x86.c (mono_arch_output_basic_block): Same.
4980
4981         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4982         extract mask.
4983
4984         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4985         to emit extract mask op.
4986
4987         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4988         to emit word shuffles.
4989
4990 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4991
4992         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4993         the largest alignment needed by a variable, but at least
4994         sizeof(gpointer).
4995
4996 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4997
4998         * basic-simd.cs: Tests for the fixes in the last commit.
4999
5000 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5001
5002         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5003         no longer handles STACK_PTR input.
5004
5005         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5006
5007         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5008         get_simd_vreg   but handles STACK_PTR input.
5009
5010         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5011         as the input can be an arbitrary pointer.
5012
5013         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5014         LDADDR local optimization directly otherwise use a store op.
5015
5016 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * basic-simd.cs: Tests for dup low and dup high.
5019
5020 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * mini-ops.h: Add dup low and dup high ops.
5023         
5024         * cpu-x86.md: Same.
5025
5026         * mini-x86.c (mono_arch_output_basic_block): Same.
5027
5028         * simd-intrinsics.c (vector4f_intrinsics): Same.
5029
5030 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5031
5032         * basic-simd.cs: Tests for recently added functionality.
5033
5034 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5035
5036         * mini-ops.h: Add remaining sse1 fp ops.
5037         
5038         * cpu-x86.md: Add remaining sse1 fp ops.
5039
5040         * mini-x86.c (mono_arch_output_basic_block): Same.
5041
5042         * mini.h: Add enum for simd FP compare conditions.
5043
5044         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5045
5046         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5047         so the backed can generate the appropriate op.
5048
5049 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5050         This patch squeese one more byte from the SimdIntrinsc struct.
5051
5052         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5053         a a shift amount intead of simply or'ing it.
5054
5055         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5056
5057         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5058         byte so we can have an aditional flags field without increasing struct size.
5059
5060         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5061         against the simd_supported_versions bitmask.
5062
5063         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5064
5065 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5066
5067         * mini.c: remove rawbuffer code (the only use here is unsafe because
5068         it takes locks during signal handling and the kernel now provides much
5069         better info in proc/pid/smaps these days).
5070
5071 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5072
5073         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5074         OP_X86_PUSH_OBJ. Fixes #434620.
5075
5076         * objects.cs: Add a test.
5077         
5078 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5079
5080         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5081         that the packuswb/packusdw don't work with unsigned numbers for what
5082         would be negative numbers in signed format.
5083
5084         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5085         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5086
5087         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5088
5089         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5090
5091         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5092
5093         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5094
5095         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5096         add more ops.
5097
5098         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5099         version as the enum in mini.h.
5100
5101         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5102         for sse3 ops, check the simd_version field if present. This way the code
5103         works with all versions of sse.
5104
5105 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5106
5107         * simd-intrinsics.c: Fixed intrinsic name typo.
5108
5109         * mini.h: Added missing simd exported function.
5110
5111         * basic-simd.cs: Added tests for Vector4ui.
5112         Fixed broken test for Vector16b.
5113
5114 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5115
5116         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5117         the max length to 64.
5118
5119 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5120
5121         * method-to-ir.c: Only do the fast virtual generic method call for
5122         non-wrapper methods.
5123
5124         * mini.h, mini-trampolines.c: The new generic virtual remoting
5125         trampoline handles virtual method calls via the vtable (as done by
5126         the fast virtual generic method calls) to remoting proxies.
5127
5128         * mini.c (mono_jit_create_remoting_trampoline): For generic
5129         methods reate a generic virtual remoting trampoline.
5130
5131         * mini-amd64.h: Enable fast virtual generic method calls again.
5132
5133 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5134
5135         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5136         restore registers when doing tail calls.
5137
5138 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5139
5140         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5141         Vector4ui.
5142
5143 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5144
5145         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5146
5147 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5148
5149         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5150
5151 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5152
5153         * basic-simd.cs: Retrofit for API changes.
5154
5155 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5156
5157         * mini-ppc.c: Handle integer stack arguments for tail calls.
5158
5159 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5160
5161         * optflags-def.h: Removed sse3 optimization.
5162
5163         * driver.c: Same.
5164
5165         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5166         sse3.
5167
5168         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5169
5170         * mini.h: Added enumeration with simd versions.
5171
5172         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5173         for detecting SSE3.
5174
5175         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5176
5177         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5178
5179 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5180
5181         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5182
5183         * basic-simd.cs: Fixed test naming.
5184
5185 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5186
5187         * mini-ops.h: Added ops for packed and saturated math, shifts
5188         and packing/unpacking.
5189
5190         * cpu-x86.md: Added descriptors for the above ops.
5191
5192         * mini-x86.c: Added code to emmit the above ops.
5193
5194         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5195
5196 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5197
5198         * aot-compiler.c (compile_method): Enable AOT for generic code.
5199
5200         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5201
5202 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5203
5204         * mini.c: add a workaround for a common screwup that ends up blamed
5205         to mono (other processes blocking signal delivery).
5206
5207 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5208
5209         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5210         in the LDFLD/STFLD opcodes. Fixes #432673.
5211
5212         * iltests.il.in: Add a new test.
5213
5214 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5215
5216         * mini-arm.c: attach the thread in unmanaged->managed transitions
5217         using delegates (bug #433148).
5218
5219 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5220
5221        * basic-simd.cs: Use new ShuffleSel constants.
5222
5223 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5224
5225         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
5226
5227         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
5228         only disable simd intrinsics if no sse2 is detected.
5229
5230         * optflags-def.h: Added sse3.
5231
5232         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
5233         is disabled.
5234
5235 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5236
5237         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5238         when adding delegate-invoke wrappers.
5239
5240 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5241
5242         * Makefile.am: Reenable the simd tests.
5243
5244 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5245
5246         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5247           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5248           other vreg is allocated to that hreg.
5249
5250         Contributed under MIT/X11 license.
5251
5252 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5255         yet checked in.
5256
5257 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5258
5259         * basic-simd.cs: New test suite for SIMD intrinsics.
5260
5261         * Makefile.am: Added new tests.
5262
5263 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5264
5265         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5266
5267         * mini-ops.h: Same.
5268
5269         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5270
5271         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5272         using SSE2 aware opcodes.
5273
5274         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5275         is enabled, this code path is only reachable if conversion ops are emmited after
5276         mono_method_to_ir.
5277
5278         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5279
5280         This optimization saves 6 bytes per conversion against the old version.
5281
5282 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * aot-compiler.c (compile_method): Don't skip methods referencing 
5285         generic methods without a corresponding entry in token_info_hash, since
5286         encode_method_ref () can handle all generic methods now.
5287
5288         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5289         generic context is set.
5290         
5291         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5292         generic sharing of LDTOKEN.
5293
5294 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5295
5296         * mini-amd64.h: Temporarily disabled fast virtual generic method
5297         calls because it breaks the System.Runtime.Remoting tests.
5298
5299 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5302
5303         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5304         so inlining actually works.
5305         (check_inline_caller_method_name_limit): Ditto.
5306
5307 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5308
5309         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5310         64 bit safety (from Olaf Hering and Andreas Farber).
5311
5312 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5313         
5314         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5315         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5316         unused virtual call support code.
5317
5318         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5319         
5320         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5321         which can't use aot trampolines.
5322         (decode_patch): Don't create aot trampolines for methods which can't use
5323         them.
5324
5325         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5326         use aot trampolines.
5327
5328         * mini.h: Bump AOT image format version.
5329         
5330 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5333         to save_token_info () since cmethod is inflated for constrained calls.
5334
5335         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5336
5337 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5338
5339         * Makefile.am: Add build rules for ppc64.
5340         This avoids the build failing at pedump with unresolved symbols
5341         due to lack of arch_sources. Instead it will now fail earlier
5342         due to lack of cpu-ppc64.md.
5343
5344         Contributed under MIT/X11 license.
5345
5346 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5347
5348         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5349         tail calls.
5350
5351         * iltests.il.in: Add test case for tail call with many arguments.
5352
5353 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5356         to the fast virtual generic method code until the aot case is fixed.
5357
5358 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5359
5360         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5361
5362 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5363
5364         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5365         thunks.
5366
5367 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5368         
5369         * simd-intrinsics.c: Forgot to add this one.
5370
5371         * mini-codegen.c: Fix macro in case SIMD is not supported.
5372
5373 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5374         
5375         This patch land initial JIT support for simd intrinsics.
5376
5377         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5378
5379         * Makefile.am: Added simd-intrinsics.c
5380
5381         * simd-intrinsics.c: New file with simd instrinsic related
5382         code.
5383
5384         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5385
5386         * cpu-x86.md: Add simd related instructions.
5387
5388         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5389
5390         * driver.c: Added two new --regression variants.
5391
5392         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5393
5394         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5395
5396         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5397         extract some complicated logic to helper functions.
5398
5399         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5400
5401         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5402
5403         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5404         the specialized simplification pass.
5405
5406         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5407
5408         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5409
5410         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5411         table.
5412
5413         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5414         if MONO_ARCH_NEED_SIMD_BANK is defined.
5415
5416         * mini-ops.h: Added the new simd ops.
5417
5418         * mini-x86.c: Added mono_arch_xregname.
5419
5420         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5421
5422         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5423
5424         * mini-x86.h: Define simd related MONO_ARCH macros.
5425
5426         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5427
5428         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5429
5430         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5431         MONO_CLASS_IS_SIMD to deal with simd related IR.
5432
5433         * mini.h (MonoInst): Added spill_var to the backend union.
5434
5435         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5436
5437         * mini.h: Added forward declarations of the new simd fuctions.
5438
5439         * optflags-def.h: Added new optimization names SIMD.
5440
5441         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5442
5443         * regalloc.h: Added support for working with 3 register banks.
5444
5445         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5446
5447         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5448
5449 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5450
5451         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5452
5453 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5456         instead of one on 64 bit systems.
5457
5458         * method-to-ir.c: Remove unused includes.
5459
5460 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5463         cfg->used_int_regs, since the two are different on arm.
5464
5465 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5466
5467         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5468         mono_method_get_vtable_index() to get the vtable index.
5469
5470 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5471
5472         * method-to-ir.c (mono_method_to_ir2): Don't create native
5473         wrappers for array methods, because they're never called (and if
5474         they were called they wouldn't work).
5475
5476 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5477
5478         * method-to-ir.c (mono_method_to_ir2): Array methods are
5479         special-cased and must not be invoked indirectly via the (M)RGCTX
5480         when generic sharing is turned on.  Fixes #431413.
5481
5482 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5483
5484         * method-to-ir.c: When generic sharing is active, call
5485         non-interface virtual generic methods via the standard trampoline.
5486
5487         * mini-trampolines.c: Handle virtual generic shared methods.
5488
5489         * mini.h, mini-x86.c, mini-x86.h: New argument for
5490         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5491         method thunks and which is the trampoline to call if the lookup
5492         fails.  Enable the virtual generic method thunk for x86.
5493
5494         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5495         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5496         argument but assert that it's NULL, because these archs don't yet
5497         implement the virtual generic method thunk.  Changes in the IMT
5498         thunk data structures.
5499
5500 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5501
5502         * aot-compiler.c (emit_globals): Avoid invalid characters in
5503         the static linking symbol.
5504
5505         * objects.cs: Add a test for the range check optimization. Fix warnings.
5506
5507         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5508         optimization from the current JIT.
5509
5510         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5511         later in decompose_array_access_opts () to allow more optimizations.
5512
5513         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5514         mono_decompose_soft_float () for consistency.
5515
5516         * mini-ops.h: Fix arguments of OP_STRLEN.
5517
5518         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5519         into a separate function.
5520         (reset_cast_details): Ditto.
5521         (handle_unbox): Save cast details. Fixes #431254.
5522
5523         * method-to-ir.c: Remove some obsolete FIXMEs.
5524
5525 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5526
5527         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5528
5529 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * mini-codegen.c: More work on macros to make them
5532         ready for multiple regbanks.
5533
5534 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5535
5536         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5537
5538         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5539
5540 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * mini-codegen.c (mono_spillvar_offset): Proper support for
5543         multiple regbanks.
5544
5545 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5548         the stack overflow changes.
5549
5550 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5551
5552         * mini-codegen.c: Make all bank macros depend on reg_bank.
5553
5554         * mini-codegen.c (mono_local_regalloc): Make free mask
5555         initialization regbank aware.
5556
5557 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5558
5559         * mini-codegen.c (mono_local_regalloc): Extract callee
5560         mask selection to a function and make it regbank aware.
5561
5562 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5563
5564         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5565         code to deal with many regbanks.
5566
5567 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * mini-codegen.c: More fp->regbank changes.
5570
5571 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5572
5573         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5574         of a hardcoded constant.
5575
5576 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5577
5578         * method-to-ir.c (type_from_stack_type): Fix typo.
5579
5580 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5581
5582         * mini-ia64.c (emit_move_return_value): Convert float return values to
5583         double.
5584
5585         * objects.cs: Add a new test.
5586         
5587         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5588         VARARG methods to fix an assert later.
5589
5590         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5591         end so it at least compiles.
5592
5593 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5596
5597 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5598
5599         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5600         optimization to a new function (emit_optimized_ldloca_ir) and enable
5601         it for both ldloca and ldloca_s.
5602
5603 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5606         gshared CASTCLASS code.
5607
5608         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5609         amd64, where the libc stack unwinder encounters stack frames referring to
5610         native code in unmapped memory.
5611
5612         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5613         sharing.
5614
5615         * generics.cs: Add new test.
5616
5617 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5618
5619         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5620         add a check that one of the ARM_FPU_ constants is defined.
5621
5622         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5623         
5624         * mini-exceptions.c: Fix build on non-altstack platforms.
5625
5626         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5627         sharing of vtypes.
5628
5629         * ir-emit.h: Add a comment to NEW_PCONST.
5630
5631         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5632
5633         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5634
5635         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5636         after the changes to MonoJitDomainInfo.
5637
5638 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5639
5640         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5641
5642 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5643
5644         * mini-ppc.c: Compiler warning fixes.
5645
5646 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5647
5648         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5649         for pinvokes.
5650
5651 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5652
5653         * exceptions-ppc.c, mini-ppc.h: Compile
5654         mono_arch_handle_altstack_exception() on Darwin, too.
5655
5656 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5657
5658         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5659         work on archs which don't have generic sharing implemented, only
5660         without the vtable_arg.
5661
5662 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5663
5664         * mini.c: Added comment explaining why delegate ctor icall
5665         wrappers are compiled.
5666
5667 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5668
5669         * mini.c: Don't produce trampolines to delegate ctor icall
5670         wrappers but compile them upfront.
5671
5672 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5673
5674         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5675         runtime-set function when going back to managed code. Currently this
5676         is used to set back the protection on the soft ovf pages and/or to
5677         throw the stack overflow exception that happened in unmanaged code.
5678
5679 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5680
5681         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5682         runtime-set function when going back to managed code. Currently this
5683         is used to set back the protection on the soft ovf pages and/or to
5684         throw the stack overflow exception that happened in unmanaged code.
5685
5686 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5687
5688         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5689         the support code for restoring stack protection after stack overflows
5690         that happen in unmanaged code. Don't set the exec permission on the
5691         soft overflow area.
5692
5693 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5694
5695         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5696         delegate->method_ptr is set. Fixes #428054.
5697
5698 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * tests.cs: Rename to ratests.cs.
5701
5702         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5703         emit_get_rgctx_... functions.
5704
5705 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5706
5707         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5708
5709 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5710
5711         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5712         before asserting that method is sharable.
5713
5714 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5715
5716         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5717         whether method needs a static RGCTX wrapper used instead of
5718         complex conditions.
5719
5720         * generic-sharing.c, mini.h: A few functions moved to
5721         metadata/generic-sharing.c.
5722
5723 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5724
5725         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5726         Generic code sharing for value types, which essentially means
5727         treating value type methods like static methods.  The RGCTX is
5728         passed in the same way.
5729
5730 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5733         opcode when creating multi-dimensional arrays of open types.
5734
5735         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5736         open generic types.
5737
5738         * generics.cs: Add a test.
5739
5740         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5741
5742 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5743
5744         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5745
5746         * mini.c (mini_method_compile): Set it when running under the debugger. 
5747
5748         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5749         vreg optimization if the flag is set.
5750
5751         * driver.c (mono_main): Add --attach= option to pass options to
5752         the attach agent.
5753
5754         * mini.c (sigquit_signal_handler): Start the attach agent.
5755
5756         * ssapre.c: Disable this to save space since it is not yet ported to
5757         linear IR.
5758
5759         * regalloc2.c: Disable this to save space.
5760
5761         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5762
5763 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5764
5765         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5766         the -v option useful again.
5767
5768 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5771         --break-at-bb.
5772
5773         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5774         arrays of arrays. Fixes #428406.
5775
5776         * method-to-ir.c (mini_emit_castclass): Ditto.
5777
5778         * objects.cs: Add new test.
5779         
5780 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5781
5782         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5783         was wrong at it choked against target_type_is_incompatible for byref types.
5784
5785 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5786
5787         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5788         places.
5789
5790 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5791
5792         * mini-exceptions.c: update a few more exceptions-related counters.
5793
5794 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5795
5796         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5797         new functions to allocate from persistent mempools.
5798
5799 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5800
5801         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5802         multiple register banks in the future.
5803
5804         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5805
5806 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5807
5808         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5809
5810         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5811
5812         * mini.h: Export type_to_eval_stack_type.
5813
5814         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5815         is only ins->klass of byref types.
5816
5817 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5820         (mini_emit_memcpy2): Ditto.
5821
5822         * mini-amd64.c: Fix a warning.
5823
5824 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5825
5826         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5827         linking.
5828
5829 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5830
5831         * method-to-ir.c: Extract stloc micro-optimization to a
5832         function and apply it to all cases.
5833
5834 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5835
5836         * method-to-ir.c: Don't fail generic code sharing in cases we
5837         already support.
5838
5839 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5840
5841         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5842
5843 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5844
5845         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5846         implementation.
5847
5848 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5849
5850         * trace.c: make tracing more useful and correct, with per-thread
5851         id and indent info.
5852
5853 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5854
5855         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5856         doing a method call and the argument is an R4.
5857
5858 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5859
5860         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5861         generic methods.
5862
5863 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5864
5865         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5866
5867 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5868
5869         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5870         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5871
5872 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * driver.c: Add a --agent argument (not supported yet) to load managed
5875         agent assemblies before loading the main assembly, similarly to how the
5876         Java VM handles agents.
5877
5878 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5879
5880         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5881         function to do stack layout of local variables.
5882
5883 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5884
5885         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5886         calculation.
5887
5888 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5891         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5892         JIT if DISABLE_JIT is defined.
5893
5894         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5895         defined.
5896
5897 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5898
5899         * iltests.il.in: Disable the fconv test on PPC (the result is
5900         undefined according to ECMA).
5901
5902 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5903
5904         * iltests.il.in: Enable tail call tests for PPC.
5905
5906         * mini.h: Add variable for storing incoming valuetype argument
5907         addresses for tail calls.
5908
5909         * mini-ppc.c: Implement valuetype arguments and return values for
5910         tailcalls on Linux.
5911
5912 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5913
5914         * mini-ppc.c: Partially implement tail calls (struct arguments and
5915         return values not supported).
5916
5917         * method-to-ir.c: Enable tail calls on PPC.
5918
5919 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5920
5921         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5922         runtime-invoke wrappers to work around the problem of them getting
5923         assigned to a random class.
5924
5925         * aot-runtime.c (mono_aot_get_method): Ditto.
5926         
5927 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5930         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5931
5932 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5933
5934         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5935         until they're implemented properly.
5936
5937         * exceptions-ppc.c: Use arch-independent exception-handling code
5938         instead of custom one.
5939
5940         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5941         for Linear IR.
5942
5943         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5944
5945         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5946         applies when __powerpc__ is defined.
5947
5948 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5951         methods to their code to avoid computing the full name of wrappers and
5952         doing a lookup in a string hash table.
5953
5954 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5955
5956         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5957         we identify bblocks before method_to_ir () is ran.
5958
5959         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5960         Also avoid optimizing branches pointing to themselves.
5961
5962         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5963
5964 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5965
5966         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5967
5968 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5969
5970         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5971         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5972         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5973         'buf'.
5974
5975         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5976         jumped to the same entry in plt_jump_table.
5977
5978 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5979
5980         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5981         dynamic images.
5982
5983 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5986         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5987         #421807.
5988
5989 2008-08-29  Geoff Norton  <gnorton@novell.com>
5990
5991         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5992         segment, and doesn't properly handle .space as .text.  Fixes
5993         AOT Mach/ARM
5994
5995 2008-08-29  Geoff Norton  <gnorton@novell.com>
5996
5997         * mini.c: Disable the mach exception handler when running on 
5998         ARM
5999
6000 2008-08-29  Geoff Norton  <gnorton@novell.com>
6001
6002         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6003         globals on Darwin/ARM
6004
6005 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6008         since too many things depend on it. Instead, call 
6009         mono_runtime_set_no_exec ().
6010         
6011         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6012         the new JIT.
6013
6014         * aot-compiler.c: Add an 'asm-only' AOT option.
6015
6016         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6017                 
6018         * aot-compiler.c (compile_method): Disable gshared support for now as it
6019         doesn't yet work.
6020
6021 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6022
6023         * mini-amd64.h : Fix a compiler warning.
6024
6025         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6026           Changed to use a callback function to retrieve the unwind info.
6027           This avoids problems observed when code blocks were removed by
6028           unloading an app domain.
6029
6030         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6031           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6032           to work properly.
6033
6034         Contributed under MIT/X11 license.
6035
6036 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6037
6038         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6039           case to keep the stack aligned to 8.
6040
6041         Contributed under MIT/X11 license.
6042
6043 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6046         avoid repeated linear searches.
6047
6048 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6049
6050         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6051         methods it can't handle.
6052         
6053         * aot-compiler.c (add_method): Avoid adding a method twice.
6054         (add_wrappers): Add runtime invoke wrappers for all methods.
6055
6056         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6057         function to create an aot-compatible version of this trampoline.
6058
6059         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6060
6061 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6064
6065         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6066         with a generic sharing failure.
6067
6068         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6069
6070         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6071         CEE_RETHROW. Fixes #419634.
6072
6073         * mini.c (mono_method_to_ir): Ditto.
6074
6075         * exceptions.cs: Add a new test.
6076         
6077         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6078         to mono_type_stack_size_internal () since some callers might not pass in
6079         an rgctx.
6080
6081         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6082         instrument_prolog. Fixes #419878.
6083
6084         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6085         doubles in soft float mode volatile.
6086
6087 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6090
6091         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6092         to handle soft float correctly.
6093
6094         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6095         the fast path.
6096
6097         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6098
6099         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6100         to sp, since the generics catch code requires it.
6101
6102         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6103         copying.
6104
6105         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6106         mono_arch_emit_imt_argument ().
6107
6108         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6109
6110         * mini-arm.c tramp-arm.c: Generic sharing updates.
6111
6112 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * mini-arm.c: Fix the arm build.
6115
6116         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6117         handling enums, generic instances and generic sharing.
6118         (mini_type_stack_size_full): Ditto.
6119
6120         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6121         
6122         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6123
6124         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6125
6126         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6127         trampolines.
6128
6129         * mini-arm.c: Various small generic sharing changes.
6130
6131         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6132         this for x86.
6133         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6134         custom code.
6135
6136         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6137         helper function to return a generic class init trampoline.
6138
6139         * method-to-ir.c mini.c: Use it.
6140         
6141         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6142         arch-specfic function to return a generic class init trampoline.
6143
6144         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6145         the GENERIC_CLASS_INIT custom code.
6146
6147         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6148         a fatal error, not a sharing failure.
6149
6150         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6151         needed.
6152
6153         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6154         trampoline argument from MONO_ARCH_VTABLE_REG.
6155
6156         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6157         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6158         argument, and pass the vtable in VTABLE_REG.
6159
6160         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6161         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6162         argument, and pass the vtable in VTABLE_REG.
6163         (mono_arch_create_trampoline_code_full): Remove some special casing for
6164         the rgctx fetch trampoline.
6165
6166         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6167         Fixes #419273.
6168
6169         * iltests.il: Add a test for it.
6170
6171 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6172
6173         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6174
6175         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6176         no longer needed.
6177
6178         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6179         use mono_jit_info_table_find () to avoid recursion.
6180         (mono_delegate_trampoline): Add a sync wrapper here.
6181
6182         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6183         here.
6184
6185         * mini.c (mono_method_to_ir): Ditto.
6186         
6187         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6188         add_sync_wrapper argument. Don't add a sync wrapper here.
6189         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6190
6191         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6192         
6193 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6194
6195         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6196           of nonvolatile registers back from MonoContext to CONTEXT.
6197
6198         Contributed under MIT/X11 license.
6199
6200 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6201
6202         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6203           arguments on Winx64 there are only 4 argument registers.  For this
6204           logic to work the last argument must be pulled from the stack.  
6205
6206         Contributed under MIT/X11 license.
6207
6208 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6209
6210         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6211
6212         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6213         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6214         encode/decode_method_ref ().
6215
6216         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
6217
6218         * aot-runtime.c (decode_patch): Ditto.  
6219
6220         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
6221         MONO_PATCH_INFO_METHOD.
6222
6223         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
6224         MonoGenericJitInfo.
6225
6226         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
6227         MonoGenericJitInfo.
6228
6229         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
6230
6231         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
6232         one from the caller.
6233
6234         * aot-runtime.c (decode_generic_inst): New function to decode and
6235         return a interned generic inst.
6236         (decode_klass_ref): Use it.
6237         (decode_method_ref): Ditto.
6238
6239         * aot-compiler.c (emit_exception_debug_info): Save 
6240         jinfo->has_generic_jit_info too.
6241
6242 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6245
6246         * iltests.il.in: Add a test for fconv_to_i.
6247
6248         * liveness.c: Disable the liveness2 pass for now to save space.
6249
6250         * regalloc2.c: Include mempool-internals.h to fix warnings.
6251
6252         * aot-compiler.c (encode_method_ref): Encode the context of generic
6253         instance methods.
6254
6255         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6256         the context saved in the aot file.
6257
6258         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6259
6260         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6261
6262         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6263         volatile so they won't be optimized away.
6264
6265 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6266
6267         * ssa.c:
6268         * ssa2.c:
6269         * mini.c:
6270         * regalloc2.c:
6271         * dominators.c: Remove duplicated functions that now are in
6272         mempool-internals.h.
6273
6274 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6275
6276         * aot-compiler.c: Fix warnings.
6277
6278         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6279
6280         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6281
6282         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6283         as the patch type.
6284
6285         * mini.c (mono_resolve_patch_target): Ditto.
6286         
6287         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6288         (encode_klass_ref): Add support for encoding VARs/MVARs.
6289
6290         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6291
6292         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6293         the handling of the got entries into a separate 'decode_got_entry' function.
6294         Add support for RGCTX_FETCH.
6295
6296         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6297         clobbered by the trampoline code.
6298
6299         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6300         not clobbered by the indirect calling code.
6301
6302 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6305         to fix the build.
6306
6307 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6308
6309         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6310         signature using the compilation mempool otherwise we would leak it.
6311
6312 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6315         mono_emit_abs_call ().
6316
6317         * patch-info.h: Add GENERIC_CLASS_INIT.
6318
6319         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6320
6321         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6322         as their target as a near call.
6323
6324         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6325         ABS handling code.
6326         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6327
6328         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6329         call to a runtime function described by a patch.
6330
6331         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6332         mono_emit_abs_call, this has the advantage that the ABS handling code in
6333         mono_codegen () can handle them both, and can handle other stuff in the
6334         future without additional code.
6335
6336         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6337         entry.
6338         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6339         abs addresses.
6340
6341         * mini.h: Add missing bblock related prototypes.
6342
6343         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6344         reverse_inst_list_len fields.
6345
6346         * mini.c: Refactor this file a bit by moving branch optimizations to 
6347         branch-opts.c.
6348
6349         * method-to-ir.c: Merge generic sharing changes missed earlier.
6350
6351         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6352
6353         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6354         shared patches. Process METHODCONST as a shared patch.
6355
6356         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6357         as it crashes on the 2.0 mscorlib.
6358
6359         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6360         to cause crashes.
6361         
6362         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6363         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6364         by IMT.
6365
6366         * aot-compiler.c: Reorganize the got handling code to be a bit more
6367         understandable.
6368
6369 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6372         mono_patch_info_equals/hash, and use it to massively simplify
6373         get_plt_index ().
6374
6375         * mini.c (mono_patch_info_hash): Simplify this and add support for
6376         more patch types.
6377
6378         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6379
6380         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6381         handling code, since an offset is not enough to identify a trampoline.
6382
6383         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6384
6385 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6386
6387         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6388
6389         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6390
6391         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6392
6393         * decompose.c: PPC decompositions for various ops.
6394
6395         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6396
6397 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6400         call the generic trampoline code using a call, instead of a jump, to
6401         remove some special casing from the generic trampoline code.
6402
6403         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6404         (mono_codegen): Ditto.
6405
6406         * aot-compiler.c aot-runtime.c: Ditto.
6407
6408         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6409
6410         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6411         helper function to find the offset corresponding to a lazy fetch trampoline.
6412
6413         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6414         when doing generic sharing.
6415
6416         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6417         places.
6418         
6419         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6420         mini-trampolines.c to be with the other trampoline creation functions.
6421
6422         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6423         as it is equal to method->signature in most cases, add a 
6424         mono_emit_method_call_full variant which takes a signature and an imt
6425         argument as well.
6426
6427 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6428
6429         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6430         to this function, since it could be computed easily from the method 
6431         argument.
6432         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6433         more.
6434
6435         * method-to-ir.c mini.c: Remove references to 
6436         compile_generic_method_wo_context.
6437
6438         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6439         generic method calls.
6440         
6441         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6442         dimensional non-szarrays.
6443
6444         * mini.c (mini_init): Register mono_array_new_1.
6445
6446         * jit-icalls.c (mono_array_new_1): New jit icall.
6447
6448         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6449         pointing to the method.
6450
6451         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6452         method addresses belonging to METHOD_JUMP patches in the 
6453         jump_target_got_slot_hash.
6454         (mono_aot_load_method): Ditto.
6455
6456         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6457         METHOD_JUMP patches.
6458
6459         * mini.c (mini_create_jit_domain_info): New helper function which 
6460         initializes/frees domain->runtime_info.
6461         (mini_free_jit_domain_info): Ditto.
6462         (mini_init): Install the domain hook functions with the runtime.
6463
6464         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6465         information maintained by the JIT.
6466
6467         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6468         insertion into jump_table_hash into mono_codegen (), also implement proper
6469         locking.
6470
6471         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6472         tail calls, it is already done by the aot code.
6473         
6474         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6475         mechanism on amd64.
6476
6477         * iltests.il.in: Make the jmp test a bit more complex.
6478
6479         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6480         generic instances which doesn't have a token.
6481
6482         * aot-runtime.c (decode_method_ref): Ditto.
6483         
6484         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6485         can handle this case now.
6486         (handle_box): Ditto.
6487
6488 2008-08-15  Geoff Norton  <gnorton@novell.com>
6489
6490         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6491         debugging check.
6492
6493 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6494
6495         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6496         calling generic methods.
6497
6498         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6499
6500         * aot-runtime.c (decode_patch_info): Ditto.
6501
6502         * mini.c (mono_resolve_patch_target): Ditto.
6503         
6504         * patch-info.h: Add METHOD_RGCTX.
6505
6506         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6507
6508 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6509
6510         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6511         arguments in registers.
6512
6513         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6514         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6515
6516         * mini.c (mini_method_compile): Abort aot compilation for generic
6517         methods if generic sharing is disabled.
6518         
6519         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6520         an mrgctx.
6521
6522         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6523         requiring an mrgctx.
6524
6525         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6526         store instructions when converting a vcall to a normal call.
6527
6528         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6529         mono_arch_find_jit_info.
6530
6531 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6534         avoid calling mono_method_full_name () for every method even if the
6535         env var is not set.
6536         (check_inline_caller_method_name_limit): Ditto.
6537
6538 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6539
6540         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6541         assemblies in one run.
6542
6543         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6544         skipped methods if it is not 0.
6545
6546         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6547
6548 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6549
6550         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6551           MONO_ARCH_HAVE_UNWIND_TABLE.
6552
6553         Contributed under MIT/X11 license.
6554
6555 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6556
6557         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6558           from default optimizaton list on Winx64.
6559
6560         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6561
6562         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6563           the LMF from the MonoJitTlsData structure.
6564
6565         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6566
6567         Contributed under MIT/X11 license.
6568
6569 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * mini.c (sigsegv_signal_handler): Fix the build.
6572
6573         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6574         assembly->aot_module.
6575
6576         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6577         hash table. This simplifies and speeds up a lot of code, and fixes support
6578         for .netmodules.
6579
6580         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6581         with the runtime.
6582
6583         * mini-exceptions.c: Ditto.
6584         
6585         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6586         'native_offset' argument, since these are computed in the 
6587         mono_find_jit_info () function.
6588
6589         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6590         is used by exceptions-ppc.c.
6591
6592         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6593         mono_arch_find_jit_info ().
6594         
6595         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6596         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6597         generic code in mini-exceptions.c.
6598
6599 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6602
6603         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6604         
6605         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6606         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6607         called while holding the loader lock. Fixes #415608.
6608         (mono_aot_get_method_from_token_inner): Ditto.
6609
6610 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6611
6612         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6613         to reduce differences between this and the generic implementation in
6614         mini-exceptions.c.
6615         (ves_icall_get_frame_info): Ditto.
6616
6617         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6618
6619         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6620         longer neccesarry.
6621
6622         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6623         mono_arch_get_call_filter () and make it non-static, for consistency with the
6624         other architectures.
6625
6626 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6627
6628         * mini.c:
6629         * local-propagation.c:
6630         * mini-x86.c: Correct the name of arch defines.
6631
6632 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6633
6634         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6635         NO_EMULATE_LONG_SHIFT_OPS define.
6636
6637 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6640         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6641
6642         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6643         MACH fixes. Merged from the 2.0 branch.
6644
6645         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6646
6647         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6648         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6649
6650         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6651
6652         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6653         mono_marshal_get_native_wrapper () signature changes.
6654
6655 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6656
6657         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6658         conversion bug under arm.
6659
6660 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6661
6662         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6663
6664         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6665         with overflow checking.
6666
6667 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6668
6669         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6670         to the genmdesc.pl file
6671
6672 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6673
6674         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6675         arg_array in the soft-float versions of the LOAD/STORE macros.
6676
6677         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6678         implementation.
6679
6680         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6681
6682 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6683
6684         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6685         a float HFA. Fixes #413621.
6686
6687 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6688
6689         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6690         frame_size to args_size. Fixes build.
6691
6692 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6693
6694         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6695         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6696
6697         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6698         the stack are not unaligned. Fixes #413247.
6699         
6700 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6701
6702         * mini.c: update jitted methods performance counters.
6703
6704 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6705
6706         * mini-exceptions.c: increase the exceptions thrown performance
6707         counter in mono_handle_exception ().
6708
6709 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6712         can work with netmodules.
6713
6714 2008-07-28  Geoff Norton  <gnorton@novell.com>
6715
6716         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6717         regression tests.
6718
6719 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6720
6721         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6722         correct place.
6723
6724 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6725
6726         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6727           The float param registers and other param registers must be the 
6728           same index on Windows x64.
6729
6730         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6731           ArgValuetypeAddrInIReg argument case.  Setting the argument
6732           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6733
6734         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6735           variable computed above as the copy length for arguments of storage
6736           type ArgValuetypeAddrInIReg.
6737
6738         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6739           ArgValuetypeAddrInIReg argument case.  This case will rely on
6740           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6741
6742         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6743           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6744           jump and tail call instructoins as they do not follow the typical call behavior.
6745
6746         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6747           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6748           local variable and pass the local variable by reference to the called method.
6749
6750         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6751           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6752           of a struct is passed in a register it must be saved with the other
6753           volatile argument on the stack.
6754
6755         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6756           frame pointer the stack adjustment value must be saved to the unwind 
6757           info structure.
6758
6759         Contributed under MIT/X11 license.
6760
6761 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6762
6763         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6764         which got lost in the merge.
6765
6766 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6769         build.
6770
6771         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6772         
6773         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6774         icalls, since they won't be patched.
6775
6776         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6777         different code sequence when running under valgrind to prevent some valgrind
6778         errors.
6779
6780         * iltests.il.in: Add new regression test.
6781
6782         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6783         end with a throw.
6784
6785         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6786         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6787
6788         * iltests.il.in: Add new test.
6789
6790         * aot-compiler.c: Fix some warnings.
6791
6792         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6793         Fixes #412494.
6794
6795 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6796
6797         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6798         (mini_usage_jitdeveloper): Add a missing --wapi option.
6799
6800 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * mini-codegen.c: Simplify the is_fp macros.
6803         (free_up_ireg): Remove, use free_up_reg instead.
6804         (free_up_reg): Fix the fp case.
6805
6806 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6809         lowered earlier.
6810
6811         * exceptions-x86.c: Merge some changes which seemed to have got lost
6812         in the linear-ir merge.
6813
6814         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6815
6816         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6817         long vreg volatile even if the variable was already created.
6818
6819         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6820         volatile variables.
6821
6822 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6823
6824         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6825
6826         * mini.c (mono_jit_compile_method_inner): Add support for 
6827         MONO_EXCEPTION_BAD_IMAGE.
6828
6829         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6830         mini_method_get_context () returns NULL. Fixes #356531.
6831
6832         * mini.c (mono_method_to_ir): Ditto.
6833         
6834         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6835         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6836
6837 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6838
6839         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6840         in the LDFTN implementation.
6841
6842 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6843
6844         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6845         code, patch calls to icalls, too, even if they're not in the
6846         shared generic code hash.  Fixes #411962.
6847
6848 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * cpu-x86.md: Increase the length of the fcall opcodes.
6851
6852         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6853         calls returning floats.
6854
6855         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6856         on NEWARR.
6857         
6858         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6859         missed earlier.
6860
6861         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6862         into the domain->method_code_hash.
6863
6864         * aot-compiler.c: Fix win32 build.
6865
6866         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6867         
6868         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6869         gshared NEWARR implementation.
6870
6871         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6872
6873         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6874         can be used outside of method_to_ir.
6875
6876         * mini.h (MonoCompile): Add arg_types field.
6877
6878         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6879         
6880         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6881         the values of the local arg_array and param_types array.
6882
6883 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6884
6885         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6886         got accesses might only get generated later when NEWOBJ is decomposed.
6887         
6888         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6889         looking up the native code of the target method when a delegate is called
6890         for the first time.
6891
6892         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6893         optimization.
6894
6895         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6896
6897         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6898         AOT work on platforms without a working dlsym implementation.
6899
6900         * mini.h: Bump AOT image format version.
6901         
6902 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6903
6904         * mini-exceptions.c: Free a MonoType with
6905         mono_metadata_free_type() instead of g_free().
6906
6907         * aot-runtime.c: Free a MonoType.
6908
6909 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6912         optimization.
6913
6914         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6915         fp stack on x86.
6916
6917 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6918         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6919         profiler hook.
6920
6921 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6922
6923         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6924         NEWOBJ calls on valuetypes.
6925
6926         * iltests.il.in: Add new test.
6927
6928         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6929
6930 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6931
6932         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6933         is no longer needed.
6934
6935         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6936         non register sized integer arguments.
6937         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6938         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6939         emit_memcpy2 ().
6940
6941         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6942         CEE_MONO_RETOBJ.
6943         
6944         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6945         two a binop with different sized arguments is emitted.
6946
6947         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6948         instruction in the ins==NULL case.
6949
6950 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6953
6954         * mini-x86.c: Fix osx build.
6955
6956         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6957         opcodes as well.
6958
6959         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6960         instruction for non int sized variables.
6961
6962         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6963         implementation.
6964
6965 2008-07-23  Robert Jordan  <robertj@gmx.net>
6966
6967         * method-to-ir.c: Fix MSVC build.
6968
6969 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6972         a non int sized type, widen it to an int since newer versions of gcc seem to
6973         generate code which needs this.
6974
6975         * ssa2.c abcremoval2.c: Fix warnings.
6976
6977         * *: Merge the Linear IR branch.
6978
6979         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6980         the ChangeLog file there describes all the changes done over the years. 
6981         Further documentation can be found at www.mono-project.com/Linear_IL.
6982
6983 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6984
6985         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6986           The float param registers and other param registers must be the 
6987           same index on Windows x64.
6988
6989         Contributed under MIT/X11 license.
6990
6991 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * mini.c: Make the previous fix GC safe.
6994
6995 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6996
6997         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6998
6999 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7000
7001         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7002           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7003           ArgValuetypeAddrInIReg instead.
7004
7005         Contributed under MIT/X11 license.
7006
7007 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7008
7009         * mini-codegen.c (get_register_spilling): Fix a warning.
7010
7011 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7012
7013         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7014         for types which the initialization fails. Raises the provided exception
7015         at the right stop after cleanup.
7016
7017 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7018
7019         * aot-compiler.c: Free most of the memory allocated during compilation.
7020
7021         * mini.c (mini_parse_debug_options): Fix a leak.
7022         
7023         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7024         during aot compilation.
7025
7026 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7027
7028         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7029         it has too much register pressure.
7030
7031 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7032
7033         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7034
7035 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7038         on x86.
7039
7040         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7041         on amd64 similar to the way it is done on arm.
7042
7043         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7044
7045         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7046         consistency, normalize error messages, avoid loading aot-only modules in
7047         normal mode.
7048
7049         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7050         for consistency.
7051
7052         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7053
7054 2008-07-11  Martin Baulig  <martin@ximian.com>
7055
7056         * debug-debugger.h
7057         (MonoDebuggerInfo): Add `interruption_request'.
7058
7059 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * aot-compiler.c (emit_plt): Remove some dead code.
7062
7063         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7064
7065         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7066         return the plt info offset belonging to a given plt entry.
7067
7068         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7069         mono_aot_get_plt_info_offset.
7070         
7071         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7072         similar to the amd64 code by makeing jumps through a separate jump table 
7073         instead of embedding the jump addresses into the code.
7074
7075 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7078         method.
7079
7080 2008-07-10  Martin Baulig  <martin@ximian.com>
7081
7082         * mini.c (mini_method_compile): Disable generics sharing when
7083         running in the debugger.
7084
7085 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7088
7089         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7090         the local register allocator from running out of registers on x86 when 
7091         using aot.
7092
7093 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7094
7095         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7096         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7097         C4146.
7098
7099         Contributed under MIT/X11 license.
7100
7101 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7104         speed up the assembler.
7105
7106 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7109         support.
7110
7111         * mini.c: Move the soft float handling macros a bit earlier, add 
7112         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7113         place.
7114
7115         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7116
7117         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7118         read-only to help catch code allocation requests.
7119         
7120         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7121         and turn it off when using --aot-only or when compiling with --aot=full.
7122
7123         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7124         jump table for switches from the normal domain mempool, not the code
7125         manager.
7126
7127         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7128         unbox trampoline which handles aot-only mode too.
7129
7130         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7131         an AOTed unbox trampoline.
7132
7133         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7134
7135 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7136
7137         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7138         ""
7139
7140         Contributed under MIT/X11 license.
7141
7142 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7143
7144         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7145           the unwind information for the method at the end of the allocated block.
7146           
7147         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7148           MonoCompileArch to hold the unwind info for SEH on Winx64
7149         
7150         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7151           frame pointer info for the method being compiled.
7152           
7153         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7154           the call to mono_exception_from_token.
7155           
7156         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7157           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7158           information is stored a the end of the method block because it is all 32-bit offset based.
7159
7160         Contributed under MIT/X11 license.
7161
7162 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7163
7164         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7165
7166         * wapihandles.c: Fix warnings.
7167
7168         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7169         mode.
7170
7171         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7172         mono_jit_compile_method in aot-only mode since that calls the type 
7173         initializer.
7174         
7175         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7176         get_delegate_invoke_impl in aot-only mode.
7177
7178         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7179
7180 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7181
7182         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7183
7184         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7185         is on by default.
7186
7187         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7188
7189         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7190         init trampoline from the AOT file as well.
7191
7192         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7193         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7194         code.
7195
7196         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7197         mono_init.
7198
7199         * exceptions-amd64.c: Add _full variants for the remaining exception code
7200         creation functions as well, allow emission of relocatable code, remove
7201         caching since that is now done by the caller.
7202
7203         * mini-exceptions.c: Add _full variants for the remaining exception code
7204         creation functions as well, add aot-only support.
7205
7206         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7207         if we can determine a proper token for them.
7208         (add_wrappers): Add a few more wrappers.
7209         (emit_method_code): Remove some dead code.
7210         (emit_trampolines): Emit exception code too.
7211
7212         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7213
7214         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7215         mono_array_new_va which avoids varargs.
7216
7217         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
7218
7219         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
7220         mono_arch_create_specific_trampoline () in all places.
7221
7222         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
7223         a bit so it can be used for other things as well.
7224         
7225         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
7226         on demand as well.
7227
7228         * exceptions-amd64.c: Rename the caching from the exception code creation
7229         functions, it is done by the caller instead.
7230         
7231         * exceptions-amd64.c: Change the signature of the exception code creation 
7232         functions to allow the creation of relocatable code later.
7233
7234         * mini-exceptions.c: Add a set of functions to query the various 
7235         runtime-generated exception functions.
7236
7237         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7238         mono_arch_.. () functions.
7239         
7240 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7241
7242         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7243
7244         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7245
7246         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7247         (mini_get_vtable_trampoline): Ditto.
7248
7249         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7250         code in the AOT case by returning the code size and a list of relocations to
7251         the caller.
7252
7253         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7254
7255 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7256
7257         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7258           clean the stack.
7259
7260         Contributed under MIT/X11 license.
7261
7262 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7263
7264         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7265         so the buffer size can be computed correctly. Fixes #404735.
7266
7267         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7268         normally as cfg->debug_info is already freed.
7269
7270 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * mini-amd64.c: For calls returning vtypes in registers, don't store
7273         the return address on the stack, instead allocate a separate local for
7274         it. Fixes #404729.
7275
7276 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7277
7278         * mini-trampolines.c, mini.h: Add an argument to
7279         mono_create_jit_trampoline_in_domain() for turning off the adding
7280         of the sync wrapper.
7281
7282         * mini.c: Use the JIT trampoline without sync instead of
7283         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7284         be patched.
7285
7286 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7287
7288         * driver.c: Turn on GSHARED optimization by default.
7289
7290 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7291
7292         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7293         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7294
7295         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7296         create a variant of the generic trampoline code callable from AOTed trampolines.
7297
7298         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7299         trampoline code callable from AOTed trampolines.
7300
7301         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7302
7303 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7304
7305         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7306         pass-through manner.
7307
7308         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7309         and don't fail sharing for them anymore.
7310
7311         * mini-exceptions.c: Handle exceptions in shared generic methods.
7312
7313         * generic-sharing.c: When checking the context of a generic
7314         method, also check its class's context.  Don't treat wrappers as
7315         sharable.
7316
7317         * mini-trampolines.c: Some code factored out to
7318         metadata/generic-sharing.c.  Handle the MRGCTX case.
7319
7320         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7321         we must deal with the method being of another instantiation of the
7322         class.  Add static rgctx invoke wrappers to generic methods.
7323
7324 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7325
7326         * mini.c: Provide all jit infos of generic shared methods with a
7327         generic jit info.
7328
7329         * mini-exceptions.c: Handle the new situation that a generic info
7330         might be available, but not info about the this/vtable/mrgctx
7331         variable.
7332
7333 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7334
7335         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7336         generic methods.
7337
7338 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * dominators.c (check_dominance_frontier): Fix a warning.
7341
7342         * mini.h: Add some missing prototypes.
7343
7344         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7345
7346         * driver.c (mono_jit_init_version): Correct the comments since the first
7347         argument should be the name of the root domain, not a filename.
7348
7349         * aot-runtime.c (make_writable): Error out if this is called while running
7350         with --aot-only.
7351         (load_aot_module): Ditto.
7352
7353         * aot-compiler.c: Really fix the computation of method indexes.
7354
7355         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7356         optimizations as this is no longer called frequently.
7357
7358         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7359         method and the invoke impl code and pass it to the delegate trampoline instead of
7360         just the delegate class.
7361
7362 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * aot-compiler.c: Fixup the computation of method indexes.
7365         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7366         the method builder infrastructure.
7367
7368         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7369         has no header.
7370
7371         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7372         mode, load the method right away instead of creating a trampoline.
7373
7374         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7375
7376         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7377         some checks a bit.
7378
7379 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7382         (mono_aot_load_method): Use method_index instead of method->token.
7383
7384         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7385         can handle icalls etc. properly.
7386
7387         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7388
7389         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7390
7391         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7392         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7393         JIT_ICALL_ADDR patch type.
7394
7395         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7396
7397         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7398         request flag.
7399         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7400
7401         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7402
7403 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7406         domain->jit_code_hash.
7407
7408 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7409
7410         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7411
7412 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7415         get_this_arg_from_call, let it compute it when needed.
7416
7417         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7418         gsctx from code only when needed.
7419
7420         * mini-trampolines.c (get_generic_context): Rename this to 
7421         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7422         it can be called by the arch backends.
7423
7424         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7425
7426 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7427
7428         * driver.c (mono_main): Add experimental --aot-only command line option.
7429
7430         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7431         set.
7432
7433 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7434
7435         * driver.c (DllMain): Remove mono_module_handle.
7436
7437         Contributed under MIT/X11 license.
7438
7439 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7440
7441         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7442         for emitting methods which are not in the source assembly. Detect and report
7443         failure of assembling+linking.
7444         
7445         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7446
7447         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7448
7449 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7450
7451         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7452
7453 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7454
7455         * mini.h: Remove some obsolete prototypes.
7456
7457         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7458
7459 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7460
7461         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7462         supported by Visual Studio, so use alloca().
7463
7464 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7467         Fixes #402585.
7468
7469 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7470
7471         * mini.c: Fail sharing of a generic method if it contains an open
7472         catch clause (because we don't pass MRGCTXs yet).
7473
7474 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7475
7476         * mini.c: When compiling a method with generic sharing, insert the
7477         method instantiated with an all-Object generic context into the
7478         jit info table, instead of the context of the first instantiation
7479         of the method we happen to compile.
7480
7481 2008-06-18  Martin Baulig  <martin@ximian.com>
7482
7483         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7484         `major_version' and `minor_version'.
7485
7486 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7487
7488         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7489         mono_method_is_generic_sharable_impl() takes an additional
7490         argument specifying whether to treat type variables as reference
7491         types.
7492
7493 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7494
7495         * mini.h: Removed obsolete prototypes.
7496
7497 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7498
7499         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7500         already handle them.
7501
7502 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7503
7504         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7505         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7506         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7507         tramp-x86.c: Added a MonoGenericContext* argument to
7508         mono_arch_get_unbox_trampoline() so that it can call other
7509         functions which require it.
7510
7511 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7512
7513         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7514         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7515         mono_arch_get_this_arg_from_call() takes a
7516         MonoGenericSharingContext* as well.
7517
7518 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7519
7520         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7521         implement generic sharing of unbox.
7522
7523 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7524
7525         * mini.c: Don't compute the vtable to determine whether a field is
7526         special static, because it might not work for open types.
7527
7528 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7529
7530         * mini.c: Removed the unused token_type and token_source arguments
7531         from get_runtime_generic_context_ptr().
7532
7533 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7534
7535         * mini.c (ADD_BINOP): fix the build
7536
7537 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7538
7539         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7540         a widening op.
7541
7542 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7543
7544         * mini.h: Removed class relations enum that's not used anymore.
7545
7546 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7547
7548         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7549
7550         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7551         the lazy fetch trampoline access code.
7552
7553 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7556
7557 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7558
7559         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7560
7561         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7562
7563         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7564
7565 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7568         intrinsics.
7569
7570         * mini-ops.h: Add MIN/MAX_UN opcodes.
7571
7572         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7573         intrinsics.
7574
7575         * basic-math.cs: Add more min/max tests.
7576
7577         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7578
7579 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7580
7581         * mini.c: Small fix in the prologue of emit_castclass.
7582
7583 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7586
7587         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7588         do not work even for unsigned types. Fixes #400014.
7589
7590         * basic-math.cs: Add regression tests for unsigned Min/Max.
7591
7592 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7593
7594         * mini.c: Added additional context_used argument to several
7595         functions, which will be needed for sharing generic methods.  Use
7596         GET_RGCTX macro wherever appropriate.  Declare only one
7597         context_used in mono_method_to_ir().
7598
7599 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7600
7601         * mini.c, generic-sharing.c: Removed generic class relations.
7602
7603         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7604         functions due to MRGCTX changes.
7605
7606 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7607
7608         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7609         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7610         with calculated IMT.
7611
7612         * mini.c: Generic sharing of calls via generic interfaces.
7613
7614         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7615         generic method with non-constant MonoGenericContext*.  Instead,
7616         the context is taken out of the method itself.
7617
7618 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7619
7620         * mini.c: Generic sharing of ldvirtftn.
7621
7622 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7623
7624         * mini.c: Generic sharing of ldftn.
7625
7626 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7627
7628         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7629
7630 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7631
7632         * mini.c: Generic sharing of the special case of ldtoken followed
7633         by a call to GetTypeFromHandle.
7634
7635 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7636
7637         * mini.c: Generic sharing of box for nullable types.
7638
7639 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7640
7641         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7642         are passed on the stack. Fixes #324807.
7643
7644 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7645
7646         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7647         for the ArgValuetypeAddrInIReg case.
7648
7649         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7650         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7651
7652         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7653         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7654         local variable and pass the local variable by reference to the called method.
7655           
7656         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7657         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7658
7659         Contributed under MIT/X11 license.
7660
7661 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7664
7665         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7666         everything.
7667
7668 2008-06-10  Martin Baulig  <martin@ximian.com>
7669
7670         * debug-mini.c
7671         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7672
7673 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7674
7675         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7676         possible error when no arguments are passed.
7677
7678         Contributed under MIT/X11 license.
7679
7680 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7683         where the file name is NULL.
7684
7685 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * mini.c: Fix s390 build.
7688
7689 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * trace.c (mono_trace_parse_options): Fix warnings.
7692
7693         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7694
7695 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7696
7697         * mini.c (remove_block_if_useless): Avoid printing the method name.
7698         
7699         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7700         MONO_INST_NEW.
7701
7702         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7703         LMF. Not yet used.
7704
7705         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7706         translated code after it has been patched.
7707
7708 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7711         avoid problems during code patching on SMP systems.
7712         (emit_call): Avoid adding a patch info which is already added by 
7713         emit_call_body.
7714         (mono_arch_emit_exceptions): Ditto.
7715
7716 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7719         MONO_TYPE_ISSTRUCT already checks for it.
7720
7721 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7722
7723         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7724           structs with floats on Winx64 the float registers are not used.  
7725           The integer registers are always used..
7726         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7727           only one register will be used and only if the size of the struct 
7728           is 1,2,4, or 8 bytes.
7729
7730         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7731           to work for Winx64.
7732
7733         Contributed under MIT/X11 license.
7734
7735 2008-06-05  Martin Baulig  <martin@ximian.com>
7736
7737         * debug-debugger.c (debugger_lookup_class): Also call
7738         mono_class_setup_methods() here; we're only called from RTI.
7739
7740 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7741
7742         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7743         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7744         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7745         Post-process object files and add dtrace-generated object, if necessary.
7746
7747         Contributed under MIT/X11 license.
7748
7749 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7750
7751         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7752         element class.
7753
7754         * mini.c: Generic sharing for unbox.any and castclass.
7755
7756 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7757
7758         * mini.c: Ignore tailcall prefix in shared generic code and when
7759         doing calls which require a vtable/rgctx argument.
7760
7761 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7762
7763         * mini.c: Don't free the JIT info.
7764
7765         * driver.c: Changes in the JIT info table testing code.
7766
7767 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7768
7769         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7770         interruption. Fix some warnings.
7771
7772         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7773         interruption_checkpoint.
7774
7775 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7776
7777         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7778         from embedding applications.
7779
7780 2008-06-02  William Holmes  <billholmes54@gmail.com>
7781
7782         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7783           reserving 32 bytes on the stack when making calls. 
7784
7785         Contributed under MIT/X11 license.
7786
7787 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7788
7789         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7790         the linear IL branch.
7791
7792         * driver.c: Print out more information for --version on arm.
7793
7794 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7795
7796         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7797         bb_exit instead, since out of line bblocks might not actually be emitted
7798         out-of-line.
7799         
7800         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7801         maximum epilog size for out of line bblocks if tracing is enabled.
7802
7803         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7804
7805 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7806
7807         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7808
7809 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7812         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7813         opcodes.
7814
7815 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7818         the 'value' to store is a constant.
7819
7820         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7821
7822         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7823         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7824
7825 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7826
7827         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7828         for accessing method->generic_container.
7829
7830 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7831
7832         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7833         
7834         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7835
7836         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7837
7838         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7839         fails.
7840
7841 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7844
7845         * mini.c: Handle the case when mono_class_vtable () fails.
7846
7847 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7848         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7849         the stat profiler.
7850
7851 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7852
7853         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7854         together with domain sharing.
7855
7856 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7857
7858         * mini.c: Treat callvirts to final methods like non-virtual calls
7859         when doing generic sharing, i.e. look them up in the runtime
7860         generic context.
7861
7862 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7863
7864         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7865         with computed types (for generic sharing).
7866
7867         * mini.c: Generic sharing for mkrefany and refanyval.
7868
7869 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7872         possible.
7873
7874         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7875         the generic sharing code.
7876         
7877         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7878         when needed.
7879
7880 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7881
7882         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7883
7884 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7885
7886         * driver.c: updated copyright date
7887
7888 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7891         needed.
7892
7893 2008-05-19  Martin Baulig  <martin@ximian.com>
7894
7895         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7896         pointing to the new `_mono_debug_using_mono_debugger' variable.
7897
7898         * driver.c
7899         (mono_main): Check mono_debug_using_mono_debugger() rather than
7900         the `MONO_INSIDE_MDB' environment variable to check whether we're
7901         inside the debugger.
7902
7903 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7904
7905         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7906         argument.
7907
7908 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7909
7910         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7911
7912         * mini.c: Added mini_assembly_can_skip_verification. This
7913         function checks if the assembly requested to skip verification. 
7914         Fixes part of #387274.
7915
7916 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * mini.c (mini_get_method): Disable the check for open generic classes when
7919         using generic sharing.
7920
7921         * generics.cs: Add a test for #387034.
7922
7923         * mini.c (mini_get_method): Check whenever the method class is an open generic
7924         type, and return NULL in that case, causing a verification error. Fixes
7925         #384123.
7926
7927 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7928
7929         * driver.c (mono_main): Revert r102623. The right
7930         thing to do is to enable the verifier under verifiable
7931         unless a --security flag was passed.
7932
7933         We need this non-trivial behavior for --verify-all otherwise
7934         mcs-compileall won't be able to use it. As it needs everything to
7935         be verified under validil.
7936
7937 2008-05-06  Martin Baulig  <martin@ximian.com>
7938
7939         Fix #383749.
7940
7941         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7942         (mono_debugger_thread_cleanup): Likewise.
7943         (mono_debugger_extended_notification): Likewise.
7944
7945 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7946
7947         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7948         against both inflated and non-inflated methods. We need to check against the
7949         generic definition for cases where the instantiated method is not visible.
7950         We need to check against the inflated types for cases where the instantiation
7951         changes any super type. This fixes #382986.
7952
7953         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7954         that check for visibiliy as generic params only appears as the type subject
7955         of tokens on call opcodes. Field manipulation and ldftn must always
7956         target an exact type.
7957
7958 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7959
7960         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7961         if no related --security flag is passed.
7962
7963 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7964
7965         * mini-arch.h: Prepare support for ppc64.
7966
7967         Contributed under MIT/X11 license.
7968
7969 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7970
7971         * aot-runtime.c: Prepare support for ppc64.
7972
7973         Contributed under MIT/X11 license.
7974
7975 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7976
7977         * mini-ops.h: Prepare support for ppc64.
7978
7979         Contributed under MIT/X11 license.
7980
7981 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7982
7983         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7984
7985         Contributed under MIT/X11 license.
7986
7987 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7990         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7991         assemblies on windows.
7992
7993 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7994
7995         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7996         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7997         * main.c: Use UTF-8 encoded command line instead of Windows default code
7998         page on Windows to support Unicode.
7999         * driver.c (DllMain): New function for mixed-mode assembly support.
8000         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8001         export __stdcall functions without decoration.
8002
8003         Contributed under MIT/X11 license.
8004
8005 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8006
8007         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8008         saving it very early.
8009
8010 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8011
8012         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8013         deleted.  The only way to access the new RGCTX is via the
8014         trampline.
8015
8016         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8017         vtable instead of the RGCTX to static methods.
8018
8019         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8020         accessing the new RGCTX.
8021
8022         * generic-sharing.c: There is no separation between self, type
8023         arguments and other types in the RGCTX anymore.
8024
8025 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8026
8027         * mini-amd64.c (add_general): Remove previous stack adjustment.
8028         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8029         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8030         for 32 bytes of stack space reserved for all calls.
8031         
8032         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8033         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8034         adjustment.
8035         
8036         Code contributed under MIT/X11 license.
8037
8038 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8039
8040         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8041         against the root definition, peeling out method and type instantiations.
8042         Cache verify success results, code that fails verification is still
8043         checked multiple times.
8044
8045 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8048
8049 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8050
8051         * mini-amd64.c (add_general): Always increment stack on Win64.
8052         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8053         on Win64.
8054         
8055         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8056         stack based argument handling on Win64.
8057         
8058         Code contributed under MIT/X11 license.
8059
8060 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8061
8062         * Makefile.am (version.h): Add support for git-svn.
8063
8064 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8067         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8068         avoiding allocations and libc functions which might deadlock.
8069         
8070         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8071         'no-gdb-backtrace' option is set.
8072
8073         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8074
8075         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8076
8077 2008-04-21  Martin Baulig  <martin@ximian.com>
8078
8079         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8080         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8081
8082 2008-04-21  Martin Baulig  <martin@ximian.com>
8083
8084         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8085         `thread_vtable', `event_handler_ptr' and `event_handler'.
8086
8087 2008-04-21  Martin Baulig  <martin@ximian.com>
8088
8089         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8090         allows delayed initialization of the `executable_code_buffer' when
8091         attaching.
8092
8093 2008-04-21  Martin Baulig  <martin@ximian.com>
8094
8095         * mini.h (mono_debugger_create_notification_function): Removed.
8096         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8097
8098         * mdb-debug-info64.s
8099         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8100
8101         * mdb-debug-info32.s
8102         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8103
8104         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8105         currently only works on x86 and x86_64, so don't create it on ppc.
8106
8107 2008-04-21  Martin Baulig  <martin@ximian.com>
8108
8109         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8110
8111         * mini.c
8112         (mini_method_compile): In the fp elimination check, check
8113         `debug_options.mdb_optimizations' in addition to
8114         mono_debug_using_mono_debugger().       
8115
8116         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8117         disable some JIT optimizations which are only disabled when
8118         running inside the debugger.
8119         Added `--help-debug' option to describe the debugging options.
8120         (parse_debug_options): New static function to parse the `--debug'
8121         options, so we can easily add more stuff in future.
8122
8123 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8124
8125         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8126         the method has no body.
8127
8128 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8129
8130         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8131         assembly is not allowed in MSVC 64-bit compiler. 
8132         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8133         as we get floating point exceptions everywhere.
8134         
8135         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8136         correctly align arguments for call to throw_exception.
8137         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8138         
8139         Code contributed under MIT/X11 license.
8140
8141 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8142
8143         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8144
8145 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8148
8149         * mini-amd64.c (NEW_INS): Set cil_code.
8150
8151         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8152         from mini-amd64.c so all debugger related logic is in one place.
8153
8154         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8155         later won't have a random ip assigned to them.
8156
8157 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8160         the arch specific function initializes code_size.
8161         (mono_create_delegate_trampoline): Ditto.
8162
8163         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8164         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8165         platforms.
8166
8167         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8168         running under the debugger.
8169
8170         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8171         debugger.
8172
8173         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8174         debugger. Also move the disabling of optimizations here from driver.c.
8175         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8176         debugger.
8177
8178         * mini.h (MonoCompile): Add a few new flags.
8179
8180 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8181
8182         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8183         so the cil_code field of created MonoInst's is properly set.
8184         (mini_select_instructions): Ditto.
8185
8186         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8187         (MONO_INST_NEW_CALL): Ditto.
8188
8189         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8190         in many places so the ins->cil_code field is properly initialized.
8191
8192         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8193         place.
8194
8195 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * mini.c (mini_method_compile): Print a different message when compiling a 
8198         shared method.
8199         
8200         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8201         > 1.
8202
8203 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8204
8205         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8206         SSE2 instructions.
8207
8208         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8209         
8210 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * mini.c (handle_stack_args): Make this return void since its return value was
8213         never used. Also set cfg->unverifiable for invalid IL instead of calling
8214         G_BREAKPOINT ().
8215
8216 2008-04-10  Mark Probst  <mark.probst@gmail.com>
8217
8218         * mini.c: Make sure "this" is live in catch clauses with type
8219         variables in shared generic code.
8220
8221 2008-04-08  Mark Probst  <mark.probst@gmail.com>
8222
8223         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
8224         generic_class_is_reference_type() to ensure the proper behaviour
8225         when sharing generic code and the type in question is a type
8226         argument.
8227
8228 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
8231         race conditions when printing thread dumps. Fixes #377738.
8232
8233 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
8234         
8235         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
8236         shows up when both MonoInst arguments can cause aliasig.
8237         There is likely no way in the current JIT to trigger this problem, but
8238         it showed up in the development of generics sharing, when in a new
8239         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8240         When the generics sharing code will be committed, its tests will be
8241         valid also for this bug.
8242
8243 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8244
8245         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8246         PATCH_INFO_METHOD.
8247
8248         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8249         NULL.
8250
8251 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8252
8253         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8254         use a more detailed exception message for InvalidCastException.
8255
8256         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8257
8258         * driver.c (mono_main): Add --debug=casts option to turn on better 
8259         InvalidCastException message details.
8260
8261         * mini.c (mini_get_debug_options): New helper function to return the address of
8262         the debug_options variable.
8263
8264         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8265         the jit_tls TLS variable.
8266
8267         * mini.c (mono_jit_tls): New TLS variable.
8268
8269         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8270         option is used.
8271
8272 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8273
8274         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8275
8276         * mini.c: Removed verifer related stuff, code moved to verify.c.
8277
8278         * driver.c: Using code from verify.c instead of mini.c.
8279
8280 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8283         longer valid.
8284
8285 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8286
8287         * mini.c (check_for_method_verify): Enabling verification of
8288         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8289         have been fixed.
8290
8291 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8292
8293         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8294         caller saved registers as well.
8295         
8296         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8297         saved registers as well.
8298
8299 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8302
8303         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8304         code.
8305
8306 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8309         to get_call_info.
8310         (get_call_info): Take a gsctx argument instead of 'cfg'.
8311
8312 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8315         mono_verify_all is set.
8316
8317         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8318
8319         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8320
8321 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8324         an exception.
8325
8326         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8327         verifier and the code generated by the compiler.
8328
8329 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8330
8331         * mini.c: Generic sharing of the non-nullable case of the box
8332         instruction.
8333
8334 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8335
8336         * inssel.brg: Fix the build.
8337
8338         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8339
8340 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8341
8342         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8343         Array:Address. Fixes #372410.
8344
8345         * iltests.il.in: New tests for readonly prefix.
8346
8347 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8348
8349         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8350         mini-trampolines.c.
8351
8352         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8353         mini-exceptions.c.
8354
8355         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8356         
8357         * mini.c (mono_decompose_op_imm): New helper function.
8358
8359         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8360         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8361         return value.
8362
8363         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8364         mono_arch_output_basic_block. Fix warnings.
8365
8366         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8367         for now.
8368
8369 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8370
8371         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8372         since the extra frame is now detected automatically inside the loop.
8373
8374         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8375         opts which are now in mono_peephole_ins ().
8376         
8377         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8378
8379         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8380         frames and skip duplicate managed-to-native frames. Fixes #367665.
8381
8382         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8383         opts which are now in mono_peephole_ins ().
8384         (mono_arch_peephole_pass_2): Ditto.
8385
8386         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8387
8388         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8389         arch independent peephole optimizations.
8390
8391         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8392         opts which are now in mono_peephole_ins ().
8393
8394         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8395         
8396         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8397
8398         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8399         pattern.
8400
8401         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8402         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8403         opcode. 
8404
8405 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8406
8407         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8408         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8409         return value.
8410
8411         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8412         mono_arch_output_basic_block. Fix warnings.
8413
8414 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8417         conv.ovf.u.un.
8418
8419 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8420
8421         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8422         conv.ovf.u.un.
8423
8424         * iltests.il: Add new tests.
8425
8426 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8427
8428         * mini.c: Removed Windows version macros.
8429
8430 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8431
8432         * generic-sharing.c: Put reflection types in the extensible part
8433         of the runtime generic context.
8434
8435         * mini.c: Generic sharing of the GetTypeHandle special case of the
8436         ldtoken instruction.
8437
8438 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8439
8440         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8441
8442         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8443         
8444         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8445         consistency with the other version on the linear IR branch.
8446
8447         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8448
8449         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8450
8451         * iltests.il.in: Add new tests.
8452
8453 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8456
8457         * iltests.il.in: Add new tests.
8458
8459 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8460
8461         * mini.c: Two variables with the same name were declared in
8462         nesting contexts and one wasn't initialized.  Fixed.
8463
8464 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8465
8466         * mini.c: Generic sharing of the initobj instruction.
8467
8468 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8469
8470         * mini.c: make the test to optimize ldtoken from typeof() more
8471         precise.
8472
8473 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8474
8475         * mini.c: Generic sharing of the initobj instruction for reference
8476         types.
8477
8478 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8479
8480         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8481         the mono_breakpoint_clean_code() code to perform bound checks.
8482
8483 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8484
8485         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8486         mono_arch_patch_callsite() to include the start of the managed method
8487         to be able to perform bound checks.
8488
8489 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8490
8491         * mini.c: Generic sharing for the isinst instruction.
8492
8493 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8494
8495         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8496         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8497         with the runtime generic context argument.
8498
8499         * mini.c: Share calls to several types of unsharable methods by
8500         putting the address of the method code in the runtime generic
8501         context and doing an indirect call.
8502
8503         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8504         to switches.
8505
8506 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8507
8508         * generic-sharing.c: Change due to a change in the runtime genric
8509         context API.
8510
8511 2008-03-15  Martin Baulig  <martin@ximian.com>
8512
8513         * tramp-x86.c
8514         (mono_arch_nullify_class_init_trampoline): Add call to
8515         mono_breakpoint_clean_code() to make things work when running
8516         inside the debugger.
8517
8518         * tramp-amd64.c
8519         (mono_arch_nullify_class_init_trampoline): Add call to
8520         mono_breakpoint_clean_code() to make things work when running
8521         inside the debugger.
8522
8523 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8524
8525         * inssel-long.brg (reg): Fix 64 bit build.
8526
8527 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8528
8529         * mini.c, mini.h: Share static generic code by passing it an
8530         implicit argument pointing to the runtime generic context.
8531
8532         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8533         inssel-long32-mips.brg: New opcodes for calling shared static,
8534         which need to be passed the runtime generic context.
8535
8536         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8537         argument on the stack in the prologue if needed.  New function for
8538         finding the runtime generic context argument from the registers
8539         saved by the trampoline.
8540
8541         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8542         runtime generic context argument.
8543
8544         * tramp-amd64.c: Also restore the register used for the runtime
8545         generic context argument.
8546
8547         * mini-trampoline.c: Resolve shared static calls by consulting the
8548         runtime generic context via the new argument.
8549
8550         * generic-sharing.c: Add an argument to sharability-checking
8551         functions that specifies whether type variables should be treated
8552         as sharable type arguments.
8553
8554         * inssel-x86.brg: Removed a superfluous, buggy rule.
8555
8556         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8557         to switches.
8558
8559 2008-03-14  Martin Baulig  <martin@ximian.com>
8560
8561         * debug-debugger.c (main_thread_handler): Call
8562         mono_runtime_run_main() without sending any notifications.
8563
8564         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8565
8566 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8569
8570 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8571
8572         * tramp-x86.c: Fixed register restore offsets in the trampoline
8573         code for ECX and EDX.
8574
8575 2008-03-12  Geoff Norton  <gnorton@novell.com>
8576
8577         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8578         different ucontext_t implementations.
8579         * exceptions-arm.c: Use the above defines to get exceptions working on 
8580         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8581         * mini-arm.c: Implement iPhone icache support (based on a patch by
8582         Luke Howard lukeh@padl.com)
8583
8584 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8585
8586         * mini.c: Enable generic sharing of calls to non-static
8587         non-interface non-generic non-value-type methods.
8588
8589         * mini-trampolines.c: Resolve calls from shared generic code.
8590
8591 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8594
8595         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8596
8597 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8598
8599         * mini.c: some fixes for the AOT compiler.
8600
8601 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8602
8603         * cpu-amd64.md: Add clob:1 to some float opcodes.
8604
8605 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8606
8607         * mini.h: Added MiniVerifierMode enumeration.
8608
8609         * mini.c: Added mini_verifier_set_mode to control
8610         the usage of the new verifier.
8611
8612         * mini.c (mono_method): Integrated the new verifier.
8613
8614         * driver.c: Extended --security option with validil and
8615         verifiable options to activate the new verifier.
8616
8617 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8620         optimization to ctors taking 0 or 2 arguments too.
8621
8622         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8623         a bit.
8624
8625         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8626
8627         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8628
8629 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8630
8631         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8632         non-aot case as well.
8633
8634         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8635
8636         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8637         changes.
8638
8639         * aot-compiler.c (encode_patch): Ditto.
8640
8641         * mini.h (G_MININT32): Fix the definition of this.
8642
8643 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8644
8645         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8646
8647         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8648
8649 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8652         methods returning vtypes in registers.
8653         (mono_arch_allocate_vars): Ditto.
8654
8655         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8656
8657         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8658
8659         * generics.cs: Add a test from the linear IR branch.
8660
8661         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8662
8663         * mini.c (inline_method): Cache failed inline attempts.
8664
8665 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8666
8667         * mini.c: For shared methods of generic classes put the location
8668         of "this" into the MonoGenericJitInfo.
8669
8670         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8671         register out of a MonoContext by register number.  Add the generic
8672         sharing context as an argument to mono_arch_find_this_argument().
8673
8674         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8675         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8676         for new arch function.
8677
8678         * mini-exception.c: Handle open exception clauses in shared
8679         generic code.
8680
8681         * mini-trampolines.c: Supply additional argument to
8682         mono_arch_find_this_argument().
8683
8684 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8685
8686         * Makefile.am (regtests): Run the bench.exe tests last.
8687
8688 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8691         a bit.
8692
8693 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8694
8695         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8696         with MS.
8697
8698         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8699         
8700         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8701
8702         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8703         whose class has no cctor.
8704
8705         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8706
8707 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8708
8709         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8710         unverified.
8711
8712 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8713
8714         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8715         to be in sync with the code on the linear IR branch.
8716
8717         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8718
8719         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8720
8721 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8724
8725         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8726
8727         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8728
8729         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8730
8731         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8732         
8733         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8734         body.
8735
8736 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8737
8738         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8739         OP_LOADR4_MEMBASE emission.
8740
8741         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8742         (mono_spillvar_offset_float): Ditto.
8743
8744         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8745
8746         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8747         emission.
8748
8749         * basic-long.cs: Add regression tests for them.
8750
8751         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8752         use.
8753         (mono_arch_allocate_vars): Fix representation of single-precision float
8754         argument.
8755         (mono_arch_output_basic_block): Ditto.
8756
8757         * inssel-mips.brg: Ditto, remove duplicate items.
8758
8759         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8760         arguments of tail calls as on other platforms.
8761         (mono_arch_output_basic_block): Handle tail calls.
8762
8763         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8764         register.
8765
8766         * objects.cs (test_5_pass_static_struct): Add test for it.
8767
8768         Contributed under MIT/X11 license.
8769
8770 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * Makefile.am: Use gmcs for compiling the regression tests.
8773
8774         * *.2.cs *.2.il: Rename to *.cs and *.il.
8775
8776 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8777
8778         * regalloc.h: Make the vassign array smaller.
8779
8780         * mini.c (mini_method_compile): Remove an unused field in cfg.
8781
8782         * mini-codegen.c: Add a bunch of micro optimizations.
8783
8784 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * regalloc.h: Remove some unused fields.
8787
8788 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8789
8790         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8791
8792         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8793
8794 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8795
8796         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8797
8798         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8799         trampoline: Fetch an entry from the runtime generic context.  If
8800         it's NULL, jump to the actual trampoline to fill the runtime
8801         generic context.  Otherwise, return it.
8802
8803         * mini.c: Call the lazy fetch trampoline to get entries out of the
8804         runtime generic context.
8805
8806         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8807         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8808         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8809
8810 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8811
8812         * mini.c: Fetch data out of the extensible part of the runtime
8813         generic context instead of calling a helper function.
8814
8815         * generic-sharing.c: Some functions moved into
8816         metadata/generic-sharing.c.  Helper function for fetching other
8817         types now checks and asserts against extensible rgctx (just for
8818         debugging purposes - the helper function isn't called anymore
8819         unless for debugging).
8820
8821 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8824         for tail calls up to the point that the tests in iltests.exe run. Also add a
8825         dummy CKFINITE implementation.
8826         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8827         needed for trampoline LMF frames.
8828
8829         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8830         trampoline LMF frames.
8831
8832 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8833
8834         * mini.c (inline_method): clean any pending loader error when inlining fail.
8835         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8836
8837 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8840
8841         * aot-runtime.c (decode_patch_info): Ditto.
8842
8843         * mini.c (mono_resolve_patch_target): Ditto.
8844         
8845         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8846         icall wrappers.
8847
8848         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8849         
8850         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8851         if it references an icall address.
8852
8853 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * cpu-s390x.md: Remove some more unused opcodes.
8856         
8857         * cpu-s390x.md: Remove some unused opcodes.
8858
8859         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8860         mono_op_imm_to_op ().
8861
8862         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8863         instead of a switch statement.
8864         
8865         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8866         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8867
8868         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8869         
8870         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8871
8872         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8873         -1.
8874
8875 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8878         opened. Fixes #362607.
8879
8880         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8881
8882         * iltests.il.in: Add a test for static methods in interfaces.
8883
8884 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * genmdesc.c (build_table): Fix a crash on older glib versions.
8887
8888         * cpu-sparc.md: Remove some unused opcodes.
8889         
8890         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8891         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8892
8893         * cpu-amd64.md: Remove some unused opcodes.
8894
8895         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8896         like the other opcodes.
8897
8898 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8899
8900         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8901
8902         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8903
8904         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8905         variables 'cfg' instead of 'm' for consistency.
8906
8907         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8908
8909         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8910         argument holding the vtype return address, to avoid the ambigious use of
8911         cfg->ret for this purpose.
8912
8913         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8914
8915         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8916         
8917         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8918         new mono_print_ins () function which only takes one argument.
8919
8920 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8923         macro arguments.
8924
8925 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8926
8927         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8928
8929         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8930
8931         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8932         opcodes and other small changes.
8933
8934         * mini-ops.h: Add some new opcodes from the linear IR branch.
8935
8936         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8937
8938         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8939         opcodes, use the REG_MEMBASE opcodes instead.
8940         
8941         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8942         opcodes, use the REG_MEMBASE opcodes instead.
8943         
8944         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8945         linear IR branch.
8946
8947         * mini.c (mono_op_imm_to_op): New helper function.
8948
8949         * mini-ops.h: Add some opcodes from linear IR branch.
8950
8951 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8952
8953         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8954         <tsv@solvo.ru>.
8955
8956 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8959         OP_ICONV_TO_R4/R8.
8960
8961         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8962
8963 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * aot-compiler.c (emit_method_code): Add an assert.
8966
8967         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8968         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8969         methods.
8970
8971 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8972
8973         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8974         some load/store opcodes so they are consistent. 
8975         (mono_arch_emit_prolog): Simplify some code.
8976
8977         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8978
8979         * objects.cs: Add tests for large argument offsets on ARM.
8980
8981         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8982         stack offsets. Fixes #359651.
8983
8984         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8985
8986         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8987
8988         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8989
8990         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8991
8992         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8993
8994         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8995         rid of CEE_CONV_R_UN.
8996
8997         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8998
8999 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9002
9003         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9004
9005         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9006
9007         * cpu-amd64.md: Remove some unused opcodes.
9008
9009         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9010
9011         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9012
9013         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9014         arch specific functions for its parts. Call the peephole pass after local
9015         regalloc so the prolog can compute a more accurate max_offset.
9016         
9017         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9018         the corresponding OP_I/OP_L opcodes.
9019
9020         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9021
9022         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9023
9024 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9025
9026         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9027         as they are handled in mini.c.
9028
9029         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9030         
9031         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9032         case since it is handled in mini.c.
9033
9034         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9035
9036         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9037
9038         * *.c: Use the new opcodes in the IR and back end code.
9039
9040         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9041
9042         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9043
9044 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9045
9046         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9047         an assert because it has a race condition.
9048
9049 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9050
9051         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9052
9053         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9054
9055         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9056
9057         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9058         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9059
9060 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * cpu-amd64.md (move): Correct the maximum size of move.
9063
9064 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9065
9066         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9067         the generic class init trampoline to return quickly if the class
9068         is already inited.
9069
9070 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9073         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9074
9075 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9078         branch.
9079
9080 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9081
9082         * objects.cs: Add some soft-float tests.
9083
9084         * mini.c: Fix a couple more soft-float issues.
9085
9086         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9087
9088         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9089         avoid a REX prefix.
9090
9091 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9092
9093         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9094         exception happens while compiling a virtual method.
9095
9096 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9099         
9100         * mini-sparc.c: Fix build.
9101
9102         * mini-sparc.c (get_call_info): Add support for generic sharing.
9103
9104         * mini-exceptions.c: Add a FIXME.
9105
9106 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9107
9108         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9109         altstack handling code.
9110
9111         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9112         
9113         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9114
9115         * mini-s390.c: Add support for generic sharing.
9116
9117         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9118         Fix CAS on s390.
9119         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9120
9121         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9122
9123         * mini-s390x.c: Add support for generic sharing.
9124         
9125         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9126         Fix CAS on ia64.
9127         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9128
9129         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9130         can be used since it takes a 16 bit signed immediate.
9131
9132         * inssel-s390x.brg: Fix OP_SETRET.
9133
9134         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9135
9136         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9137
9138         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9139
9140         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9141
9142         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9143         in one place.
9144
9145         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9146         stuff.
9147
9148         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9149         of the unused mono_arch_patch_delegate_trampoline stuff.
9150
9151 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9152
9153         * basic-long.cs: Move the fp related tests to basic-float.cs.
9154
9155         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9156
9157         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9158
9159         * basic-calls.cs: Add a test for proper float argument passing.
9160
9161         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9162         if the context corresponds to an exception received through a signal.
9163
9164         * exceptions.cs: Add a test for nullref handling at the start of a try
9165         clause.
9166
9167         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9168
9169         * jit-icalls.c (mono_break): New JIT icall.
9170
9171         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9172
9173         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9174
9175 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9176
9177         * cpu-*.md: Get rid of unused opcodes.
9178
9179         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9180
9181         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9182         by all platforms.
9183
9184         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9185         define.
9186
9187         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9188         the arch independent trampoline code in mini-trampolines.c.
9189
9190         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9191
9192         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9193
9194         * mini-s390.h: Remove an unused define.
9195         
9196         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9197         the arch independent trampoline code in mini-trampolines.c.
9198
9199         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9200
9201 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9204
9205         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9206
9207         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9208
9209         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9210
9211         * cpu-amd64.md: Use smaller sizes for int opcodes.
9212
9213         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9214
9215         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9216         objects.cs.
9217
9218         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
9219         debugging.
9220
9221         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
9222         instead of though a pointer to save an indirection when accessing elements of
9223         the array.
9224
9225         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
9226         some typos.
9227         (NOT_IMPLEMENTED): New helper macro.
9228         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
9229         of a bb.
9230
9231         * *.c: Use the new helper macro.
9232
9233 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
9236
9237 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9238
9239         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9240         stack slots.
9241
9242 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9245         profiling is enabled.
9246         
9247         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9248         the end.
9249         (mono_arch_emit_prolog): Add more first bblock optimizations.
9250
9251         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9252         in order if possible.
9253         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9254         bblock, since the arguments are still in their original registers.
9255
9256         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9257
9258 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9259
9260         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9261         as well.
9262
9263         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9264         offset 0.
9265
9266         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9267
9268         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9269         process async exceptions received while in unmanaged code.
9270
9271         * mini.c (mini_init): Install a callback with the runtime which will be called
9272         when a thread receives an async exception while in unmanaged code.
9273
9274         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9275
9276         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9277
9278 2008-01-16  Wade Berrier  <wberrier@novell.com>
9279
9280         * cpu-g4.md:
9281         * cpu-arm.md:
9282         * cpu-s390x.md:
9283         fix build
9284
9285 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9288         compilation with sun cc.
9289
9290         * cpu-*.md: Fix the build.
9291
9292         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9293
9294         * mini-amd64.h: Add some comments to the MonoLMF structure.
9295
9296         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9297         
9298         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9299         in the LMF structure if possible. This saves two instructions in the
9300         managed->native wrappers.
9301
9302         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9303
9304 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9305
9306         * generic-sharing.c: New type argument lookup code which uses the
9307         runtime generic context template.
9308
9309 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9312
9313         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9314         (mono_arch_output_basic_block): Fix localloc implementation.
9315
9316         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9317
9318         * mini-ia64.c (peephole_pass): Fix ia64 build.
9319
9320         * mini-amd64.c (peephole_pass): Fix a warning.
9321         
9322         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9323         at a constant offset from sp/fp.
9324
9325         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9326         instead of obtaining it from *lmf in the managed method case.
9327
9328 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9331
9332 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9333
9334         * mini.h (MonoInstList): New type.
9335         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9336         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9337         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9338         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9339         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9340         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9341         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9342         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9343         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9344         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9345         MONO_INST_LIST_FOR_EACH_ENTRY,
9346         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9347         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9348         mono_inst_list_first, mono_inst_list_last,
9349         mono_inst_list_next, mono_inst_list_prev): New instruction
9350         list handling interfaces.
9351         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9352         list head 'ins_list'.
9353         (MonoInst): Replace next pointer with list head 'node'.
9354         (MonoCallInst): Make 'out_args' a MonoInstList.
9355         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9356         (MonoCompile): Delete reverse_inst_list and
9357         reverse_inst_list_len.
9358         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9359         mono_arch_lowering_pass, mono_arch_local_regalloc,
9360         mono_arch_output_basic_block, mono_arch_emit_prolog):
9361         Convert to new instruction lists.
9362         (insert_after_ins): Delete.
9363         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9364         instruction lists.
9365         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9366         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9367         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9368         mono_emulate_opcode, mono_emit_load_got_addr,
9369         inline_method, mono_method_to_ir, mono_print_bb_code,
9370         print_dfn, decompose_pass, nullify_basic_block,
9371         replace_out_block_in_code, remove_block_if_useless,
9372         merge_basic_blocks, move_basic_block_to_end,
9373         try_unsigned_compare, optimize_branches, mono_print_code,
9374         mini_select_instructions, remove_critical_edges): Likewise.
9375         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9376         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9377         mono_arch_output_basic_block, mono_arch_emit_prolog):
9378         Likewise.
9379         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9380         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9381         mono_arch_output_basic_block): Likewise.
9382         (inst_list_prepend, insert_after_ins): Delete.
9383         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9384         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9385         instruction lists.
9386         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9387         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9388         mono_arch_emit_prolog): Likewise.
9389         * cfold.c (mono_constant_fold): Likewise.
9390         * liveness.c (visit_bb, mono_analyze_liveness,
9391         optimize_initlocals): Likewise.
9392         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9393         * graph.c (mono_draw_code_cfg): Likewise.
9394         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9395         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9396         mono_ssa_cprop): Likewise.
9397         * abcremoval (get_relations_from_previous_bb, process_block):
9398         Likewise.
9399         * local-propagation (mono_cprop_invalidate_values,
9400         mono_local_cprop_bb): Likewise.
9401         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9402         peephole_pass, mono_arch_output_basic_block,
9403         mono_arch_emit_prolog): Likewise.
9404         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9405         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9406         mono_arch_emit_prolog): Likewise.
9407         (insert_after_ins): Delete.
9408         * aliasing.c (print_code_with_aliasing_information,
9409         mono_build_aliasing_information, mono_aliasing_deadce):
9410         Convert to new instruction lists.
9411         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9412         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9413         mono_arch_local_regalloc, mono_arch_output_basic_block):
9414         Likewise.
9415         (insert_after_ins): Delete.
9416         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9417         peephole_pass, mono_arch_output_basic_block): Convert to
9418         new instruction lists.
9419         * mini-codegen (InstList, inst_list_prepend,
9420         insert_after_ins): Delete.
9421         (insert_before_ins, get_register_force_spilling,
9422         get_register_spilling, free_up_ireg, free_up_reg,
9423         create_copy_ins, create_spilled_store, alloc_int_reg,
9424         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9425         to new instruction lists.
9426         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9427         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9428         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9429         (insert_after_ins): Delete.
9430         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9431         mono_arch_local_regalloc, mono_arch_output_basic_block,
9432         mono_arch_call_opcode): Convert to new instruction lists.
9433         (insert_after_ins): Delete.
9434         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9435         peephole_pass, mono_arch_output_basic_block,
9436         mono_arch_emit_prolog): Convert to new instruction lists.
9437
9438 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9441
9442         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9443         Fixes #353182.
9444
9445         * Makefile.am (version.h): Make this work with non-bash shells.
9446
9447 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9450
9451 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9452
9453         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9454         the InitializeArray optimization.
9455
9456 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * mini.c driver.c: Don't include os/gc_wrapper.h.
9459
9460 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * mini.c (print_jit_stats): Print GC statistics if available.
9463
9464 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9467
9468 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9469
9470         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9471
9472 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9475         
9476         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9477
9478         * driver.c (mono_main): Ditto.
9479
9480 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9481
9482         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9483
9484         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9485         in the vtable can't be encoded.
9486         (compile_method): Ditto.
9487
9488 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9491         defined.
9492
9493         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9494         lmf->rbp.
9495
9496         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9497         the top LMF entry belongs to the current method.
9498
9499         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9500
9501 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9504         
9505         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9506
9507         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9508
9509         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9510
9511         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9512
9513         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9514         implementation.
9515
9516         * basic-float.cs: Add an ulong->double cast test.
9517
9518 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9519
9520         * mini.c (mono_method_to_ir): Fix a warning.
9521
9522 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * mini-ops.h: Add OP_SWITCH.
9525
9526         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9527         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9528
9529 2007-12-11  Geoff Norton  <gnorton@novell.com>
9530
9531         * mini-s390x.c: Minor change to the MAX() define to allow
9532         it to compile with other gcc versions.
9533
9534 2007-12-11  Geoff Norton  <gnorton@novell.com>
9535
9536         * cpu-s390x.md:
9537         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9538
9539 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9540
9541         exceptions-arm.c (mono_arch_get_restore_context): Restore
9542         the frame pointer.
9543
9544         exceptions-arm.c (throw_exception): Save the frame pointer.
9545         This is a partial fix for #323747. Only the client side is
9546         fixed.
9547
9548 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9549
9550         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9551         was using an unrelated variable to log the class which
9552         needed the cctor to be called. This was crashing on arm.
9553
9554 2007-12-09  Robert Jordan  <robertj@gmx.net>
9555
9556         * mini-x86.c (mono_arch_emit_epilog):
9557         Consider all kinds of 64-bit types. Fixes #323114.
9558
9559 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9562
9563 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9564
9565         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9566
9567 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9568
9569         * mini.c: run type ctor before allocating an object, not only
9570         when running it's constructor method (fixes at least part of bug #342507).
9571
9572 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9573         
9574         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9575         
9576         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9577         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9578         function.
9579
9580         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9581         mono_generic_class_init_trampoline () the same as it is done with the other
9582         trampolines.
9583
9584         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9585         aot-runtime.c aot-compiler.c: Implement AOT support.    
9586
9587 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9588
9589         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9590         build for archs which don't have the vtable trampoline defined
9591         yet.
9592
9593 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9594
9595         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9596
9597         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9598
9599         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9600
9601         * tramp-<ARCH>.c: Use the new helper function.
9602
9603 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9604
9605         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9606         trampoline call, which takes a vtable argument.
9607
9608         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9609         OP_TRAMPCALL_VTABLEs like other calls.
9610
9611         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9612         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9613         call.  Implemented a support function which fetches the vtable
9614         from a register set.
9615
9616         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9617         Implemented a generic class init trampoline, using the
9618         OP_TRAMPCALL_VTABLE opcode.
9619
9620         * mini.c: Implemented static field access when sharing generic
9621         code.  This implies initing the class using the new
9622         OP_TRAMPCALL_VTABLE call.
9623
9624 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9625
9626         * mini.c: Don't compile methods with sharing enabled if their
9627         classes are disabled for sharing.
9628
9629 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9632         opcodes. Fixes #346563.
9633
9634         * objects.cs: Add a new test.
9635
9636         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9637
9638         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9639         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9640
9641 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9642
9643         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9644
9645 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9646
9647         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9648         code stream.
9649
9650 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9651
9652         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9653
9654         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9655         optimization in the AOT case.
9656         
9657 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9658
9659         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9660         
9661         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9662
9663         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9664
9665         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9666
9667         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9668         is created by the inlined delegate ctor.
9669
9670         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9671
9672         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9673
9674 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9675
9676         * cpu-x86.md: Fix the length of ckfinite.
9677
9678 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9679
9680         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9681         
9682         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9683         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9684
9685         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9686
9687         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9688         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9689
9690 2007-11-28  Martin Baulig  <martin@ximian.com>
9691
9692         * mini-x86.c
9693         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9694         after creating the trampoline.
9695
9696 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9697
9698         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9699
9700         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9701         the same version.
9702
9703         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9704         instead of the calling method to help AOT.
9705
9706         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9707
9708 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9711         is defined.
9712
9713 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9714
9715         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9716         
9717         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9718         (encode_method_ref): No need to handle generic method definitions specially.
9719
9720         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9721
9722         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9723         decode_klass_info.
9724
9725         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9726         encode_klass_info.
9727         (compile_method): Enable generic sharing.
9728
9729 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9730
9731         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9732         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9733
9734         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9735         generic code.
9736
9737         * mini-trampolines.c: Fix a warning.
9738
9739         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9740         NEW_PCONST.
9741         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9742         (generic_class_is_reference_type): Remove unused function.
9743
9744         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9745         in the generic vtable trampoline case.
9746
9747         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9748         
9749         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9750         return an AOT method based on a vtable slot.
9751
9752         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9753
9754         * mini.c (mini_get_vtable_trampoline): Export this.
9755
9756 2007-11-22  Martin Baulig  <martin@ximian.com>
9757
9758         * debug-debugger.h
9759         (MonoDebuggerInfo): Move `debugger_version' up.
9760
9761 2007-11-22  Martin Baulig  <martin@ximian.com>
9762
9763         * mini-amd64.c
9764         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9765
9766         * mini-trampolines.c
9767         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9768         after compiling the method.
9769
9770 2007-11-20  Martin Baulig  <martin@ximian.com>
9771
9772         * debug-mini.c
9773         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9774         (mono_debugger_remove_breakpoint): Likewise.
9775         (mono_debugger_check_breakpoints): Likewise.
9776
9777         * debug-debugger.c: Implement the new breakpoint interface here.
9778
9779 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9780
9781         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9782         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9783
9784         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9785
9786 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9787
9788         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9789
9790         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9791         mini.c.
9792
9793         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9794         mini.c.
9795
9796         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9797         returning a vtype in a register.
9798
9799         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9800         here from the arch specific code.
9801
9802         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9803         mini.c.
9804
9805         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9806         (mono_arch_emit_prolog): Increment maximum prolog size.
9807
9808         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9809         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9810
9811         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9812         MonoGenericSharingContext.
9813
9814         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9815         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9816
9817 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9818
9819         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9820         which extract fields out of the runtime generic context.  Full
9821         sharing of the NEWARR opcode.
9822
9823 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9824
9825         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9826         --enable-minimal=ssa.
9827
9828 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9831         mono_marshal_get_delegate_invoke () signature change.
9832
9833 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9834
9835         * mini.c: Removed the shared context in favor of the generic
9836         sharing context.  Allocate the MonoJitInfo structure with room for
9837         the generic sharing context if it's needed.
9838
9839         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9840         domain-internals.h now.
9841
9842         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9843
9844         * generic-sharing.c: Several changes for working without a shared
9845         context and instead operating on open types instead.
9846
9847 2007-11-12  David S. Miller  <davem@davemloft.net>
9848
9849        * inssel-sparc.brg: Fix double instruction emit.
9850
9851 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9852
9853         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9854         Get/Set/Address methods.
9855         
9856         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9857         mono_marshal_get_delegate_invoke signature change.
9858
9859 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9860
9861         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9862         This can happens with dynamic methods. Fixes the other bug in #322722.
9863
9864 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9865
9866         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9867         BX call sequence.
9868
9869         * mini-arm.c (arm_patch): Implement patching of BX call
9870         sequence. Fixes one of the bugs in #322722.
9871
9872 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9873
9874        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9875        under Linux.  We only need to flush every 32-byte cache line.    
9876
9877 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9878
9879         * mini.c:
9880         move_basic_block_to_end: Add branches when needed, eventually creating
9881         a new BB.
9882         optimize_branches: added a parameter that tells if it's ok to create
9883         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9884         and avoid calling move_basic_block_to_end when it's not ok.
9885         Fixes bug 318677.
9886
9887 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9888
9889         * mini.c: Abort inlining call to InitializeArray if something
9890         looks wrong.  Let the icall handle it, which now has proper safety
9891         checks.
9892
9893 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9894
9895         * mini.c (mono_spill_call): add support for soft-float.
9896
9897         * mini.c (mono_method_to_ir): add support for soft-float
9898         to inlined functions that return float.
9899
9900         * mini.c (mono_method_to_ir): add support for soft-float
9901         to cee_stsfld opcode on float fields.
9902
9903 2007-11-05  Geoff Norton  <gnorton@novell.com>
9904
9905         * mini-x86.h: Fix the structure access for X86 Leopard.
9906
9907
9908 2007-11-05  Martin Baulig  <martin@ximian.com>
9909
9910         * mini-trampolines.c
9911         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9912         after compiling the method to notify the debugger.
9913
9914 2007-11-05  Martin Baulig  <martin@ximian.com>
9915
9916         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9917
9918 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9921         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9922
9923 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9926         native-to-managed wrappers.
9927         
9928 2007-11-01  Geoff Norton  <gnorton@novell.com>
9929
9930         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9931         members.
9932
9933 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9934
9935         * mini.c, mini-x86.c: when getting back from unmanaged code
9936         to managed via a marshaled delegate we also need to set the
9937         right domain.
9938
9939 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9940
9941         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9942         for amd64.
9943
9944 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9945
9946         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9947         let the debugger or other external agents to tell the JIT when
9948         a sw breakpoint has been inserted in the code that the JIT needs
9949         to be able to inspect.
9950
9951 2007-10-31  Martin Baulig  <martin@ximian.com>
9952
9953         * debug-debugger.h
9954         (MonoDebuggerInfo): Remove `runtime_class_init'.
9955
9956 2007-10-30  Martin Baulig  <martin@ximian.com>
9957
9958         * debug-mini.h
9959         (mono_debugger_thread_created): Added `MonoThread *' argument.
9960         (mono_debugger_extended_notification): New public method.
9961         (mono_debugger_trampoline_compiled): New public method.
9962
9963         * debug-mini.c
9964         (MonoDebuggerThreadInfo): Added `thread' and
9965         `extended_notifications' fields.
9966
9967         * debug-debugger.c
9968         (debugger_executable_code_buffer): New static variable.
9969
9970         * debug-debugger.h
9971         (MonoDebuggerInfo): Added `executable_code_buffer',
9972         `executable_code_buffer_size', `breakpoint_info_area',
9973         `breakpoint_table' and `breakpoint_table_size'.
9974
9975 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9976
9977         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9978         that IP  either is an unused value or the vtable pointer. IMT 
9979         calls use vtable + offset now. Reduced by almost half the size
9980         of IMT entries.
9981
9982 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9983
9984         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9985         defines to access param registers. Replace long usage with
9986         gsize as sizeof(long) != sizeof(void*) on Win64.
9987
9988         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9989         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9990         instead of non-existant _GetAddressOfReturnAddress.
9991
9992         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9993         param registers. Save/restore %rdi and %rsi in MonoLMF.
9994
9995         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9996         param registers. Modify (throw_exception) signature to take 
9997         %rdi and %rsi on Win64. 
9998
9999         Code is contributed under MIT/X11 license.
10000
10001 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10002
10003         * helpers.c: unlink debugging output files.
10004
10005 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * mini.c: Move mono_create_ftnptr () to object.c.
10008
10009 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10010
10011         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10012         optional. This function can now be used to disassemble code generated
10013         outside the JIT such as trampolines and IMT thunks.
10014
10015         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10016
10017         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10018         vtable pointer from a ldr instruction.
10019
10020         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10021         new IMT call sequence.
10022
10023         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10024         call sequence for interface invocations.
10025
10026         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10027         for imt support. This function is empty since IMT on ARM requires no
10028         special handling on the IR side.
10029
10030         * mini-arm.c (mono_arch_find_imt_method): added, required for
10031         imt support.
10032
10033         * mini-arm.c (mono_arch_find_this_argument): added, required
10034         for imt support.
10035
10036         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10037         a ldr instruction to load a value stored in the code stream.
10038
10039         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10040         for imt support.
10041
10042
10043 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * mini.c (mini_init): Install the jump trampoline callback.
10046
10047 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10048
10049         * mini-trampolines.c: handle synchronized methods with the common
10050         vtable trampoline (bug #335601).
10051
10052 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10055
10056         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10057         64 bit platforms.
10058
10059         * mini-ia64.h mini-ia64.c: Add support for IMT.
10060
10061         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10062         prolog. Fixes #331958.
10063
10064 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10067
10068 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10069
10070         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10071         trampoline.
10072
10073 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10074
10075         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10076         trampoline.
10077
10078 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10079
10080         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10081         trampoline.
10082
10083 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * mini-trampolines.c: changed the magic rampoline to understand
10086         the common vtable trampoline method: the method to invoke is
10087         determined by the vtable displacement of the call.
10088
10089 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10090
10091         * mini.c, mini.h: register the common vtable trampoline if the
10092         architecture supports it.
10093
10094 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10095
10096         * cpu-amd64.md: use the correct max length for tls_get.
10097
10098 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10099
10100         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10101         CEE_STELEM_ANY. Fixes #333696.
10102
10103 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10104
10105         * exceptions-x86.c: provide more graceful handling of the case where
10106         we followed a bogus function pointer from managed code (bug #332866).
10107
10108 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10109
10110         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10111         replaces the generic_shared flag and will carry more information
10112         in the future.
10113
10114         * generic-sharing.c: Added mini_type_stack_size() which allows
10115         allows open types if given a generic sharing context.
10116         mini_get_basic_type_from_generic() takes a
10117         MonoGenericSharingContext* instead of a MonoCompile* now.
10118
10119         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10120         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10121         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10122         changes above.  Just passing arguments through to the right
10123         places.
10124
10125 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10126
10127         * mini-arm.c: unify the call emission to emit_code_seq().
10128
10129 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10130
10131         * tramp-arm.c: reduced the trampoline size.
10132
10133 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10134
10135         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10136         variable handling out of arch-specific code.
10137
10138 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10139
10140         * mini-arm.c: implemented fast delegate dispatch.
10141
10142 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10145         that fp elimination is turned off if the space required by locals is too
10146         big. Fixes #331958.
10147
10148 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10149
10150         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10151         ARM to the new style trampoline.
10152
10153 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10154
10155         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10156
10157         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10158
10159 2007-10-09  Martin Baulig  <martin@ximian.com>
10160
10161         * debug-debugger.h
10162         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10163         `field_info_offset_offset'.     
10164
10165 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10166
10167         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10168         removed more internal usage of the r11 register and made it available
10169         to the register allocator.
10170
10171 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10172
10173         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10174         when sharing generics and treat type variables as references.
10175
10176 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10177
10178         * mini-ppc.c: started removing the internal uses of register r11
10179         to eventually allow the register allocator to manage it as an
10180         additional available register.
10181
10182 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10183
10184         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10185
10186 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10187
10188         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10189         specific trampolines as they are not performance critical as a jump
10190         target (maybe align as before only for AOT code?). This saves about
10191         200 KB of native code on x86 for monodevelop startup.
10192
10193 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10194
10195         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10196         monodevelop startup.
10197
10198 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10199
10200         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10201
10202         * mini-sparc.h mini-sparc.c: Implement IMT support.
10203
10204         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10205         its smaller and doesn't clobber sparc_g1.
10206
10207         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10208
10209 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10210
10211         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10212
10213 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10214
10215         * mini-ppc.c: implemented fast delegate invocation.
10216
10217 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10218
10219         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
10220
10221 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10222
10223         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
10224         code to the new style trampoline in preparation for IMT support.
10225
10226 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10227
10228         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
10229         systems already. This also reduces the specific trampiline sizes and
10230         prepares for the use of r12 as the IMT identifier register.
10231
10232 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10233
10234         * mini-mips.h: endianess fix (simplified from a patch by
10235         Thomas Kunze <thommy@tabao.de>, bug #323737).
10236
10237 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10238
10239         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10240         to access ucontext fields and enable netbsd support
10241         (partially from Magnus Henoch <mange@freemail.hu>).
10242
10243 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10244
10245         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10246         use the preprocessor from the CPP env var if it is set.
10247
10248 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10249
10250         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10251         code, before interface_offset gets used.
10252
10253 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10254
10255         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10256         mono_class_setup_vtable () before accessing klass->vtable.
10257
10258 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10259
10260         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10261         hackish.
10262
10263 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10264
10265         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10266         IMT slots (this saves hundreds of KB of memory in programs like
10267         IronPython and Monodevelop).
10268
10269 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10270
10271         * mini.c: print the delegate counter.
10272
10273 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10274
10275         * mini-x86.c: make it easier to enable the debugging code for IMT
10276         slots.
10277
10278 2007-09-28  Martin Baulig  <martin@ximian.com>
10279
10280         * debug-debugger.h
10281         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10282         `mono_method_klass_offset' and `mono_method_token_offset'.
10283
10284 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10285
10286         * mini.c: First generics sharing implementation.  Can only share
10287         in very simple cases.  If sharing doesn't work it falls back to
10288         dedicated compilation.
10289
10290         * mini.h: Flag in MonoCompile to specify whether generic
10291         compilation is shared.  Flags enum for marking which generic inst
10292         of a context is used.  Prototypes for helper functions.
10293
10294         * generic-sharing.c: Helper functions for generic method sharing.
10295
10296         * optflags-def.h: Optimization flag (gshared) for enabling generic
10297         method sharing added.
10298
10299         * Makefile.am: generic-sharing.c added.
10300
10301 2007-09-19 Daniel Nauck <dna@mono-project.de>
10302
10303         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10304
10305 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10306         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10307         fixes bug 325507.
10308
10309 2007-09-19  Martin Baulig  <martin@ximian.com>
10310
10311         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10312         mono_debug_cleanup() is now part of mono_cleanup().
10313
10314 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * driver.c (mono_main): Fix a warning.
10317
10318 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * aot-compiler.c: Optimize various parts when processing large assemblies.
10321         Fixes ##325568.
10322
10323         * mini.c (mono_patch_info_hash): Improve hash function.
10324
10325 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10326
10327         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10328         
10329         Code is contributed under MIT/X11 license.
10330
10331 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini.c (mini_init): Fix a leak.
10334
10335         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10336
10337 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10338
10339         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10340
10341 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10344
10345 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10348         variance tests.
10349
10350         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10351
10352         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10353
10354         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10355
10356         * aot-runtime.c (decode_patch_info): Ditto.
10357
10358 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10359
10360         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10361         static case. Cache delegates in architecture specific code, 
10362         based on number of parameters.
10363         
10364         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10365         in architecture specific code, based on number of parameters.
10366         
10367         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10368         caching happen in architecture specific code now.
10369         
10370         Code is contributed under MIT/X11 license.
10371
10372 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10373
10374         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10375         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10376         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10377
10378         Code is contributed under MIT/X11 license.
10379
10380 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10381         * mini.c: (mono_thread_abort) Fixed bug #82416.
10382
10383 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10384
10385         * mini.: hook the new managed GC allocation feature into the JIT.
10386
10387 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10388
10389         * mini.c: implementation for the new runtime tls opcode.
10390
10391 2007-09-11  Martin Baulig  <martin@ximian.com>
10392
10393         * debug-debugger.h
10394         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10395         `mono_method_inflated_offset'.
10396
10397 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10400         async exceptions into a method.
10401
10402         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10403         purpose of testing whenever the unwinder works at every instruction.
10404
10405 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10406
10407         * mini.c: check accessibility of method used in ldftn (fixes
10408         bug #82635).
10409
10410 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10413
10414         * inssel.brg: Fix a warning.
10415
10416 2007-09-03  Martin Baulig  <martin@ximian.com>
10417
10418         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10419         now takes the `main_method' as argument.
10420
10421 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10424
10425 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10426
10427         * driver.c: include the cil-coff.h header on Windows.
10428         
10429         Code is contributed under MIT/X11 license.
10430
10431 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10432
10433         * mini.c, driver.c: don't include the cil-coff.h header.
10434
10435 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10436
10437         * mini.c: flag places that needs fixes fo soft-float support.
10438
10439 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10442         endian systems (partially from Dean Jenkins, bug #81924).
10443
10444 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10445
10446         * mini.c (check_linkdemand): Remove embedded reference object in
10447         call to LinkDemandSecurityException.
10448         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10449         with an IntPtr instead of a reference object.
10450
10451 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * mini.c (handle_initobj): Handle alignment properly.
10454
10455         * inssel.brg (mini_emit_memset): Ditto. 
10456
10457         * inssel.brg (mini_emit_memcpy): Ditto. 
10458
10459         * inssel-sparc.brg: Ditto.              
10460
10461         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10462
10463 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10464
10465         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10466         exceptions raised in unmanaged code. Fixes part of #82594.
10467
10468 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10469
10470         * mini.c (mono_method_to_ir), declsec.c
10471         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10472
10473 2007-08-22  Martin Baulig  <martin@ximian.com>
10474
10475         * debug-mini.h
10476         (MonoDebuggerThreadInfo): New typedef.
10477         (mono_debugger_thread_table): New global variable.
10478         (mono_debugger_thread_created): New public function.
10479         (mono_debugger_thread_cleanup): New public function.
10480
10481         * debug-debugger.h
10482         (MonoDebuggerInfo):
10483         - removed `get_current_thread' and `lookup_assembly'.
10484         - removed `data_table'.
10485         - added `thread_table'.
10486
10487         * mini.c
10488         (mono_thread_start_cb): Call mono_debugger_thread_created().
10489         (mono_thread_attach_cb): Likewise.
10490         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10491         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10492         initial domain.
10493
10494         * driver.c (mono_main): Move mono_debug_init() up, before calling
10495         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10496
10497 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10498
10499         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10500         together when passing several arguments of type double (gives a small
10501         speedup and saves a few bytes of generated code).
10502
10503 2007-08-20  Jb Evain  <jbevain@novell.com>
10504
10505         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10506
10507 2007-08-20  Jb Evain  <jbevain@novell.com>
10508
10509         * mini.c (mono_method_to_ir): throw MethodAccessException
10510         and FieldAccessException instead of InvalidProgramException.
10511
10512 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10513
10514         * mini.c: CoreCLR security checks.
10515
10516         * mini.h: Removed MonoSecurityMode (moved to
10517         metadata/security-manager.h) and mono_security_mode global var
10518         (replaced by set/get functions in security-manager.h).
10519
10520         * driver.c: Added "core-clr-test" security mode for testing.  Used
10521         set-function for setting security mode.
10522
10523 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10524
10525         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10526         the new jit_info_table.
10527
10528         * driver.c: Test code for the new jit_info_table (enabled by the
10529         define MONO_JIT_INFO_TABLE_TEST).
10530
10531 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10532
10533         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10534         detection of call <REG> instruction sequence. Fixes build on freebsd.
10535
10536 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10537
10538         * mini-exceptions.c: Fix a warning.
10539
10540 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10543         stack overflow handling code on amd64 too.
10544
10545         * mini-exceptions.c (mono_setup_altstack): Make this use 
10546         mono_thread_get_stack_bounds ().
10547
10548         * mini-x86.h: Disable sigaltstack on solaris x86.
10549
10550 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10553
10554 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10555
10556         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10557
10558 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10559
10560         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10561
10562         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10563
10564 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10565
10566         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10567         due to alignment.
10568
10569 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10570
10571         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10572         to be emitted (bug #82281).
10573
10574 2007-08-01  Martin Baulig  <martin@ximian.com>
10575
10576         Merged the `debugger-dublin' branch.
10577
10578         * debug-debugger.h (MonoDebuggerInfo):
10579         Removed the `old_*' compatibility entries.
10580         Added `debugger_version' and `data_table'.
10581         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10582         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10583
10584         * debug-mini.c
10585         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10586         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10587         instead of a `gconstpointer'.
10588         (mono_debugger_insert_method_breakpoint): Return a
10589         `MonoDebugMethodAddressList *'.
10590
10591 2007-06-28  Martin Baulig  <martin@ximian.com>
10592
10593         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10594
10595 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10598         __builtin_frame_address () since it is broken on older gcc versions.
10599
10600 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10601
10602         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10603         on the stack overflow handling and made the managed stack overflows
10604         catchable in most cases using soft guard pages.
10605         * exceptions-x86.c: added code to restore the protection in the soft
10606         guard pages at the end of exception handling.
10607
10608 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10611
10612 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10613
10614         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10615         exception handling.
10616
10617 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10618
10619         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10620         signal handling support until it has been ported to the new mechanism.
10621         * mini.c: fixed stack overflow detection and use the new
10622         architecture code  to handle signals on the altstack.
10623
10624 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10625
10626         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10627         stack overflows on the alt stack.
10628
10629 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10630
10631         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10632         stack overflows on the alt stack.
10633
10634 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10635
10636         * exceptions-ppc.c: cleanup preparing for altstack support.
10637
10638 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10639
10640         * exceptions-arm.c: cleanup preparing for altstack support.
10641
10642 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10643
10644         * mini.c (print_jit_stats): Output hazard pointer stats.
10645
10646 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10647
10648         * driver.c, mini.c: Replaced security mode flags with a single
10649         enum variable.
10650
10651 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10652
10653         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10654
10655 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10656
10657         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10658         (which doesn't do anything yet) for activating Core CLR
10659         (Silverlight) security.
10660
10661 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10662
10663         * mini-codegen.c: work around a possible gcc bug on arm.
10664
10665 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10666
10667         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10668         message for platforms that don't support AOT compilation.
10669
10670 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10671
10672         * mini.h, mini.c, driver.c: temporary smcs hack.
10673
10674 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10675
10676         * mini-arm.h, mini-arm.c: arm EABI fixes.
10677
10678 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10681         case.
10682
10683         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10684         trampolines taking a method argument.
10685
10686         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10687
10688         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10689         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10690
10691         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10692         JIT compilation throws an exception. Fixes #82050.
10693
10694 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10695
10696         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10697         with the MONO_EXCEPTION_ defines.
10698
10699 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10700
10701         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10702         #82117.
10703         
10704         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10705         the cause of an assertion.
10706
10707 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10708
10709         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10710         removed.
10711
10712 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10713
10714         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10715         assert. Should fix #82103.
10716
10717 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10720         here too. Fixes #82095.
10721
10722         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10723         addresses.
10724
10725         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10726
10727         * mini-amd64.h: Enable IMT for amd64.
10728         
10729         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10730
10731 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10732
10733         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10734
10735 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10736
10737         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10738         as soon as check_linkdemand sets an exception_type.
10739
10740 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10741
10742         * mini-x86.c: fixed offsets for IMT call sequence.
10743         * mini-x86.h: enable IMT again.
10744
10745 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * trace.c (mono_trace_enter_method): Decode MonoType too.
10748
10749         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10750
10751         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10752
10753         * mini-amd64.c: Add preliminary IMT implementation.
10754         
10755 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10756
10757         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10758         understand the new IMT-base interface invocation (thanks to
10759         Daniel Nauck for the report and the remote debugging session).
10760
10761 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10762
10763         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10764
10765 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10768
10769 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10770
10771         * mini-trampolines.c: implement AOT IMT support.
10772         * mini-x86.h: enable IMT support for wider testing.
10773
10774 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10775
10776         * inssel.brg (emit_imt_argument): Add aot support here.
10777
10778         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10779
10780 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10781
10782         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10783         of the IMT implementation, partially from massi, with my
10784         implementation of the bsearch sequence. Disabled by default until
10785         the AOT code is implemented.
10786
10787 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10788
10789         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10790
10791         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10792
10793 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10794
10795         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10796         arch-independent IMT JIT code from Massimiliano
10797         Mantione (massi@ximian.com) with small cleanups from me.
10798
10799 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10800
10801         * Makefile.am: fix svn invocation to get the svn revision to be
10802         independent of the local language (build fix).
10803
10804 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10805
10806         * mini.c (inline_method): Reset cfg->exception_type if the
10807         inlining is aborted.  Fixes: 82049.
10808
10809 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10810
10811         * mini.c: remove assert from exception handling code when exception_ptr
10812         is not set.
10813
10814 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * mini.c (mono_codegen): Add an assert.
10817
10818         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10819         enter and leave code.
10820         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10821
10822 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10823
10824         * mini-ppc.c: fixed memory corruption for localloc(0)
10825         (bug #81852).
10826
10827 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10828         
10829         * mini.c: Fix warnings.
10830
10831 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10832
10833         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10834         to emit better double->int conversions.
10835
10836 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10837
10838         * mini.c: the provided Min/Max optimizations are valid for unisgned
10839         ints.
10840
10841 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10842
10843         * mini.c (can_access_method, can_access_field): methods moved to metadata/class.c and renamed to mono_method_can_access_method and mono_method_can_acesss_field
10844
10845 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10846
10847         * mini.c (mono_running_on_valgrind): Add support for reporting the
10848         method and  its boundaries to valgrind.
10849
10850 2007-06-28  Martin Baulig  <martin@ximian.com>
10851
10852         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10853
10854 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10855
10856         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10857
10858         * generic.2.cs: Add new test case.
10859
10860 2007-06-25  Martin Baulig  <martin@ximian.com>
10861
10862         Merged the `debugger-dublin' branch.
10863
10864         * debug-mini.c
10865         (mono_debugger_insert_method_breakpoint): New public method.
10866         (mono_debugger_remove_method_breakpoint): Likewise.
10867         (mono_debugger_check_breakpoints): New static method.
10868         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10869
10870         * debug-debugger.h (MonoDebuggerInfo):
10871         Renamed (to keep backward compatibility in the vtable):
10872         `insert_breakpoint' -> `old_insert_breakpoint'.
10873         `remove_breakpoint' -> `old_remove_breakpoint'.
10874         `create_string' -> `old_create_string'.
10875         `lookup_class' -> `old_lookup_class'.
10876         `lookup_type' -> removed; changed into a dummy field.
10877         `lookup_assembly' -> `old_lookup_assembly'.
10878         Added (same functionality, but different signature):
10879         `create_string', `lookup_class', `lookup_assembly'
10880         Added new:
10881         `get_method_addr_or_bpt', `remove_method_breakpoint',
10882         `runtime_class_init'.
10883
10884         * debug-debugger.c: Merged the `debugger-dublin' branch.
10885
10886 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10887
10888         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10889         well.
10890         (peephole_pass): Likewise.
10891
10892 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10893
10894         * driver.c: hopefully make setaffinity work also for ancient
10895         versions of linux.
10896
10897 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10898
10899         * driver.c : win32 build fix.
10900
10901 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10902
10903         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10904         processor if it is set.
10905
10906 2007-06-21  Martin Baulig  <martin@ximian.com>
10907
10908         * debug-mini.h: New file.
10909
10910         * debug-mini.c
10911         (mono_debugger_insert_breakpoint_full): Moved here from
10912         ../metadata/mono-debug-debugger.c.
10913         (mono_debugger_remove_breakpoint): Likewise.
10914         (mono_debugger_breakpoint_callback): Likewise.
10915
10916 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10917
10918         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10919         changes in MonoGenericClass.
10920
10921 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10922
10923         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10924
10925 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10926
10927         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10928         removal of MonoGenericMethod.
10929
10930 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10931
10932         * mini-exceptions.c: hooks for the exception events profiling API.
10933
10934 2007-06-14  Randolph Chung  <tausq@debian.org>
10935
10936         * Makefile.ma: Add hppa target.
10937         * mini-arch.h: Include mini-hppa.h
10938         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10939         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10940         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10941
10942 2007-06-14  Randolph Chung  <tausq@debian.org>
10943
10944         * inssel.brg: Add rules for "chained" compare-branch operations so that
10945         a single compare op can affect multiple branches.  Adjust cost for
10946         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10947         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10948         cost for some rules so that they can more easily be overridden by
10949         per-arch rules (with fixes from lupus).
10950         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10951
10952 2007-06-13  Randolph Chung  <tausq@debian.org>
10953
10954         * mini-ops.h: Reorder branch ops so that they match the order of the
10955         corresponding CEE_* ops.  The code expects them this way.
10956         Add new ops for HPPA target.
10957         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10958
10959 2007-06-13  Randolph Chung  <tausq@debian.org>
10960
10961         * mini-exceptions.c: Handle cases where the stack grows towards
10962         larger addresses.
10963         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10964
10965 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10966
10967         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10968         counter.
10969         * driver.c: explain where a non-matching corlib is found.
10970
10971 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10972
10973         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10974
10975 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10976
10977         * mini-exceptions.c: Generate a method profile leave event during
10978         an exception to ensure that the profiler gets notified.
10979
10980 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10981
10982         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10983         branch.
10984
10985         * cpu-amd64.md: Add long_and/or/xor opcodes.
10986
10987 2007-06-06  Wade Berrier  <wberrier@novell.com>
10988
10989         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10990         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10991         length of instruction shr_imm (expected 8, got 10)
10992
10993 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10996
10997 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10998
10999         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11000         MonoInternalHashTable again (fixed bug in the internal hash table
11001         code).
11002
11003 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11004
11005         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11006         Have to figure out what makes it crash the SWF regression.
11007
11008 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11011
11012 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11013
11014         * mini.c: optimize out the type check when storing null in a
11015         reference array.
11016
11017 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11018
11019         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11020         MonoInternalHashTable.
11021
11022 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11023
11024         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11025         signed integer methods.
11026
11027 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11030         permanently since the current approach doesn't work.
11031
11032 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11035         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11036
11037 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11038
11039         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11040         the sreg2==rdx case.
11041         
11042         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11043         account if it contains a rex prefix.
11044         (peephole_pass): Handle OP_FMOVE as well.
11045
11046 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11049         as it causes regressions.
11050
11051 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11052
11053         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11054         static case as well.
11055
11056         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11057
11058         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11059         (mono_arch_get_this_arg_from_call): Ditto.
11060
11061         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11062
11063         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11064         invoke_impl field.
11065
11066         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11067         (mono_arch_get_this_arg_from_call): Ditto.
11068
11069         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11070         
11071         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11072         try to create optimized invoke code and use that for further invocations. 
11073         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11074
11075         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11076
11077 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11078
11079         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11080         sealed classes or methods.
11081         *devirtualization.cs: tests for the new optimization
11082
11083 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11086         by the update_volatile () function.
11087
11088 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11089
11090         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11091         require it.
11092
11093         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11094
11095 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11096
11097         * mini.c: Add configure checks for header files.
11098         * mini-x86.c: Add configure checks for header files.
11099         * trace.c: Add configure checks for header files.
11100         * aot-runtime.c: Add configure checks for header files.
11101         * aot-compiler.c: Add configure checks for header files.
11102         * driver.c: Add configure checks for header files.
11103         * mini-codegen.c: Add configure checks for header files.
11104         
11105         Code is contributed under MIT/X11 license.
11106
11107 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11110         icompare_imm -128 + op_iclt. Fixes #81703.
11111
11112 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11115
11116 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11117
11118         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11119         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11120         so that all isinst checks now use "interface_bitmap".
11121
11122 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11123
11124         * cpu-amd64.md (jmp): Fix a warning.
11125
11126         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11127
11128         * basic.cs: Add new regression test.
11129
11130         * basic.cs: Remove test which is now in basic-long.cs.
11131
11132         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11133
11134         * basic-long.cs: Add new test.
11135         
11136 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11139
11140 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11141
11142         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11143
11144         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11145         places.
11146         
11147         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11148         throwing code a bit.
11149
11150         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11151         the exception throwing code a bit.
11152
11153         * mini-x86.c (get_call_info): Allocate result from a mempool.
11154
11155 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11158
11159         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11160
11161         * mini.h (MonoCompile): Add 'token_info_hash' field.
11162
11163         * mini.c: Save token->method associations during compilation so the AOT 
11164         compiler can use it.
11165         
11166         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11167         which reference generic classes and methods.
11168
11169 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11172
11173         * aot-compiler.c (compile_method): Fix a typo in a comment.
11174
11175         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11176
11177         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11178         everything generic.
11179
11180         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11181
11182 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * mini.h (MonoCompile): Add 'args' field.
11185
11186         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11187         into cfg->args.
11188
11189         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11190
11191 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11192
11193         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11194
11195         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11196
11197         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11198         opcodes for some opcodes.
11199
11200         * mini.h *.brg *.c: Use the new opcodes.
11201
11202 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11203
11204         * mini.h: Bumped aot revision.
11205
11206         * inssel.brg: modified code generation of type checks for interfaces
11207         to use the new "MonoClass.interface_bitmap" instead of the old
11208         "MonoClass.interface_offsets".
11209
11210 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11213
11214 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
11217         64 bit platforms.
11218
11219 2007-04-27  Neale Ferguson <neale@sinenomine.net>
11220
11221         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
11222
11223 2007-04-27  Wade Berrier  <wberrier@novell.com>
11224
11225         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
11226         mini.h) to fix build.
11227
11228 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11229
11230         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
11231         
11232         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
11233         causes the corlib unit tests to fail.
11234
11235 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11238
11239         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11240
11241         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11242         opcodes to the comparison relations.
11243
11244         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11245         opcodes to their types.
11246         
11247         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11248
11249         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11250         it in cfg->arch.cinfo.
11251
11252         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11253
11254         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11255         cfg->cil_offset_to_bb.
11256
11257 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11260         created becase of initlocals.
11261
11262 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11263
11264         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11265         Sergey Tikhonov <tsv@solvo.ru>.
11266
11267 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11268
11269         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11270
11271 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11272
11273         * cpu-s390.md (break): Correct the length of break instruction.
11274
11275 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11276
11277         * mini.c: fix a couple of soft-float issues and comments.
11278
11279 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11280
11281         * trace.c (is_filenamechar): - is also a filename char.
11282
11283 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11284
11285         * mini-s390.c: Correct checking for enum type in return value processing.
11286
11287 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11288
11289         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11290         (version.h): Makefile is in the build directory.
11291
11292 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11293
11294         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11295
11296 2007-04-11  Martin Baulig  <martin@ximian.com>
11297
11298         * mini.c (can_access_member): Fix handling of generic classes;
11299         fixes #81259.
11300
11301 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11302
11303         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11304
11305 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11306
11307         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11308
11309 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11310
11311         * mini-codegen.c: make sure the right spill amount is
11312         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11313
11314 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11315
11316         * mini-ppc.c: fixes for the fp_branch_nan test.
11317
11318 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * basic.cs: Comment out new test which still fails on ia64.
11321
11322 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11323
11324         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11325
11326 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11327
11328         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11329
11330 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11333         on 64 bit machines. Fixes part of #80738.
11334
11335         * basic.cs: Add regression test.
11336
11337 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11338
11339         * inssel.brg basic.cs: Revert previous change to fix build.
11340
11341         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11342         platforms.
11343         
11344         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11345
11346         * basic.cs: Add new regression test.
11347
11348 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11349
11350         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11351         many arguments.
11352
11353 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11354
11355         * cpu-s390x.md: Correct length of break instruction.
11356
11357 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11358
11359         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11360         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11361
11362 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11363
11364         * *.c: Begin WIN64 port.
11365         * mini.c:  Use correct register in profiler.
11366         * mini-amd64.c: No inline assembly on Win64.
11367         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11368         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11369         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11370         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11371         mono_arch_ip_from_context for Win64.
11372         
11373         Contributed under MIT/X11 license.
11374
11375 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11376
11377         * exceptions-amd64.c (seh_handler): Ditto.
11378
11379         * exceptions-x86.c (seh_handler): Fix a memory leak.
11380
11381 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11382
11383         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11384         mini-s390x.c: fixed peephole optimizations to deal
11385         correctly with 1 and 2 byte reload avoidance.
11386
11387 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11388
11389         * cpu-s390.md, cpu-s390x.md: update localloc length.
11390
11391 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11392
11393         * cpu-g4.md: added missing descriptions.
11394
11395 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11396
11397         *  Makefile.am: Add support so the tail tests are not executed on
11398         PowerPC as that is a known limitation of the PowerPC port.
11399
11400 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11401
11402         * runmdesc.bat:  Move to msvc directory.
11403         
11404 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11405
11406         * runmdesc.bat:  Run executable that was produced by the current
11407         target and sent via an argument.
11408         
11409 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11410
11411         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11412         #81102.
11413
11414         * generics.2.cs: Add regression test.
11415
11416 2007-03-09  Wade berrier  <wberrier@novell.com>
11417
11418         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11419
11420 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11423         AOT code depends on this.
11424
11425 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11426
11427         * mini.c: more precise tracking of types in the eval stack
11428         (part of fix for bug #81044).
11429
11430 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11433
11434         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11435
11436 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11439
11440         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11441
11442 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11445         a pointer on 64 bit systems. Fixes #80190.
11446
11447         * iltests.il: Add new regression test.
11448
11449 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11450
11451         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11452
11453 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11454
11455         * trace.c: Remove an erroneous alignemnt check when tracing.
11456           Fixes --trace on OSX86.
11457
11458 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11459
11460         * mini-$(arch).h: initialize SP in context for all the archs.
11461
11462 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11463
11464         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11465         regressions in the thread tests.
11466
11467 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11470         - fixed implementation of LOCALLOC opcode
11471         - implemented non-un compare for floats
11472         - code cleanup
11473         - implementation of FDIV and CKFINITE opcodes
11474         - fixes for latest mono updates
11475         - additional arch opcodes
11476
11477 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11478
11479         * Makefile.am: simplify and merge rules for cross-compilation.
11480
11481 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11482
11483         * local-propagation.c: Actually *apply* the fix for bug 80591...
11484
11485 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11486
11487         * mini-exceptions.c: backuot part of the last change
11488         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11489
11490 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11491         * inssel.brg: Fix bug 59286.
11492
11493
11494 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11495
11496         * mini-exceptions.c: patch from Zoltan to correctly check for
11497         stack boundaries (using the stack register, not the frame register),
11498         fixes bugs #80724, #79717.
11499
11500 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11503         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11504
11505         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11506         presence of frame pointer elimination.
11507
11508 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11509         
11510         * mini-x86.h: NetBSD UCONTEX_REG defines.
11511
11512 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11513
11514         * inssel-amd64.brg: Fix amd64 build.
11515
11516 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11517
11518         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11519         on amd64.
11520
11521 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11522
11523         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11524         ends.
11525
11526         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11527
11528 2007-01-30 Mark Mason <mason@broadcom.com>
11529
11530            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11531            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11532            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11533            beginning support for CEE_JMP [not quite working yet]
11534            * tramp-mips.c: LMF handling now works
11535         
11536 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11539
11540         * mini.h (NULLIFY_INS): New macro.
11541
11542 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11543
11544         * mini.c: statistical profiler fix for windows, patch
11545         from Tor Lillqvist (tml@novell.com).
11546
11547 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11548         * local-propagation.c: Fix bug 80591.
11549
11550 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11551
11552         * Makefile.am: put back the --export-dynamic option as with
11553         the previous gmodule flags (thanks to Robert Jordan).
11554
11555 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11556
11557         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11558
11559         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11560         simplify and speed up the local register allocator. Also rename some fields
11561         like iassign->vassign.
11562         
11563         * regalloc.c: Remove some functions which are no longer used since their
11564         inlined version is in mini-codegen.c.
11565         
11566         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11567
11568         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11569
11570 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11573         narrowing. Fixes #80622.
11574
11575         * iltests.il: Add new regresssion test. 
11576
11577 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11578
11579         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11580         debug-debugger.c, debug-debugger.h: warning fixes.
11581         * driver.c: updated copyright year and made it fit in one line.
11582
11583 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11584
11585         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11586
11587 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11588
11589         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11590
11591         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11592
11593         * iltests.il: Add new test for bug #80507.
11594
11595 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11596
11597         * mini-arm.h: use soft-float also on vfp for now.
11598
11599 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11600
11601         * mini.c: fix some more soft-float issues.
11602
11603 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11606
11607 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11608         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11609         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11610         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11611
11612 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11613
11614         * mini-arm.c: typo fix.
11615
11616 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11617
11618         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11619
11620 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11623         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11624
11625         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11626
11627         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11628
11629         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11630         
11631         * inssel.brg: Fix a warning.
11632
11633         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11634
11635         * abcremoval.c ssa.c ssapre.c: Update after this change.
11636         
11637         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11638
11639         * dominators.c (df_set): Use mono_bitset_union_fast.    
11640
11641 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11642
11643         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11644         mini-codegen.c: reduce relocations and memory usage for the cpu
11645         description.
11646
11647 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11648
11649         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11650
11651         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11652         to reduce their size.
11653
11654 2007-01-19 Mark Mason <mason@broadcom.com>
11655
11656         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11657         * mini-mips.c: more configuration macros, support long conditional branches, additional
11658         asserts, fix epilog instrumentation.
11659         * mini-mips.h: use standard stack walk
11660         * cpu-mips.md: increase size of div, rem and conditional branches
11661         
11662 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11663
11664         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11665         to cpu spec data.
11666
11667 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11668
11669         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11670         (compile_method): Ditto.
11671
11672         * aot-runtime.c (decode_klass_info): Ditto.
11673
11674         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11675         needed by the code generated by inssel.brg. Also fix a warning.
11676
11677 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11678
11679         * mini.c: deal with enums that become genericinsts by
11680         being nested in a generic class (bug #79956).
11681
11682 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11683
11684         * mini.c: match the generic definition to check for
11685         private access with generic types (bug #78431).
11686
11687 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11688
11689         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11690         to make life easier for people cross-compiling that insist on not
11691         using scratchbox.
11692
11693 2007-01-17 Mark Mason <mason@broadcom.com>
11694
11695         * inssel-long.brg: patch to deal with mips missing flags
11696         * inssel-long32-mips.brg: implement overflow checks
11697         * insset-mips.brg: implement overflow checks
11698         * mini-mips.h: implement conditional exception handling
11699         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11700           Remove unused code, minor cleanups.
11701         * exceptions-mips.c: minor cleanups
11702         * mini-ops.h: add mips conditional exception ops
11703         * cpu-mips.md: add mips conditional exception ops
11704
11705         
11706 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11707
11708         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11709         to deal with mips missing of flags.
11710
11711 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11712
11713         * exceptions-ppc.c: execute fault handlers.
11714
11715 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11716
11717         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11718
11719 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11720
11721         * mini.c: handle also floating point values in initialize_array.
11722
11723 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11724
11725         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11726         array initialization and make it conditional on the intrins option.
11727
11728 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11729
11730         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11731         relocations and put the patch info names close to the enum definition.
11732
11733 2007-01-15 Mark Mason <mason@broadcom.com>
11734
11735         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11736
11737 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11738
11739         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11740
11741 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11742
11743         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11744
11745 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11746
11747         * Makefile.am: distribute the mips sources.
11748
11749 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11750
11751         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11752         directly.
11753
11754 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11755
11756         * cpu-x86.md: back out for now as this triggers other regressions.
11757
11758 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11759
11760         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11761         to eax:edx, so ecx can't get allocated to them (bug #80489).
11762
11763 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11764
11765         * mini.c, mini-exceptions.c: enabled running fault handlers
11766         (bug #80469).
11767
11768 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11769
11770         * driver.c: If nothing fail, do not use the string "failed",
11771         because it makes it very annoying to view test result logs on the
11772         web. 
11773
11774 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11775
11776         * debug-debugger.c (mono_debugger_main): Rename "main" to
11777         "main_method" to prevent a warning.
11778
11779         Remove a warning for unused field.
11780
11781 2006-12-28  Martin Baulig  <martin@ximian.com>
11782
11783         * debug-debugger.c
11784         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11785
11786 2006-12-22  Martin Baulig  <martin@ximian.com>
11787
11788         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11789         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11790         seperate `.mdb_debug_info' section, so we can access it from the
11791         debugger even if the binary is stripped.
11792
11793         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11794         from the `.mdb_debug_info' here to prevent the linker from
11795         removing that section.
11796
11797         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11798         mdb-debug-info64.s.
11799
11800 2006-12-19  Robert Jordan  <robertj@gmx.net>
11801
11802         * mini-x86: enable the code to return small structures in
11803         registers for FreeBSD as well. Fixes bug #80278.
11804         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11805
11806 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11807
11808         * mini-x86.c: align the stack when calling the profiler
11809         function instrumenting the prolog (on OSX).
11810
11811 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11812
11813         * mini.c: emit a break opcode where Debugger.Break () is called.
11814
11815 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11816
11817         * mini.c (mono_method_to_ir): Provide useful information on this
11818         assert, to prevent others from debugging like I did.
11819
11820 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11821
11822         * mini.c: enable code which was incorrectly commented
11823         (bug #80235).
11824
11825 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11826
11827         * mini-x86.c: enable on OSX, too, the code to return small
11828         structures in registers.
11829
11830 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11831
11832         * mini-x86.c: remove the use of the dynamic code manager here, too.
11833
11834 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11835
11836         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11837         mono_debugger_create_notification_function() to use
11838         mono_global_codeman_reserve () instead of a dynamic code manager.
11839
11840 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11841
11842         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11843         ves_array_element_address() jit icall and use a generated
11844         managed method instead (which is about 4 times faster for a rank 3
11845         array access).
11846
11847 2006-11-29  Mark Mason  <mason@broadcom.com>
11848
11849         * basic-calls.cs: additional tests for passing
11850         structures as function arguments.
11851
11852 2006-11-29  Mark Mason  <mason@broadcom.com>
11853
11854         * mini-mips.h: disable custom exception handling
11855         * mini-mips.c: throw/rethrow should use jalr to call
11856         exception stubs.  Fixed bug with passing structures
11857         by value. More support for tracing floating point
11858         functions.
11859
11860 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11861
11862         * mini.c: fixed typo in the soft-float ldind.r4 handling
11863         (bug #80086).
11864
11865 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11866
11867         * mini.c, mini.h, driver.c: added --runtime command line
11868         option to select a different runtime than the autodetected one.
11869         * jit.h: added API for embedders to initialize with a specific
11870         runtime version.
11871
11872 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11873
11874         * mini.c: handle also boxing of r4 values (bug #80024).
11875
11876 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11877
11878         * mini-ppc.c: force indirect calls until we reserve
11879         enough address space for all the generated code.
11880
11881 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11882
11883         * exceptions-arm.c: workaround bugs in the libc definition
11884         of struct ucontext.
11885
11886 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11887
11888         * inssel.brg: fixes from me and Mark Mason.
11889
11890 2006-11-23  Dick Porter  <dick@ximian.com>
11891
11892         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11893         semaphore display now we've fixed the initial value
11894
11895 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11896
11897         * inssel.brg: partially revert the last change to fix the build.
11898
11899 2006-11-21  Mark Mason  <mason@broadcom.com>
11900
11901         * inssel.brg: Add and use compare-and-branch macros to support
11902         architectures that do not have condition code registers (ie. MIPS).
11903         * *-mips.{c,brg,md}: Fix copyright statements
11904
11905 2006-11-20  Mark Mason  <mason@broadcom.com>
11906
11907         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11908         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11909         * mini.h: Added declaration for mono_print_ins()
11910         * mini-codegen.c: added ins_spec initializer for MIPS
11911         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11912         vreg to be virtual and hreg to be non-virtual.
11913         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11914         is not yet working/implemented correctly.
11915         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11916         non-static, fixup calls to print_ins() from other parts in the file.
11917
11918 2006-11-20  Mark Mason  <mason@broadcom.com>
11919
11920         * basic-calls.cs: added tests for passing structures as arguments
11921         to calls.
11922
11923 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11924
11925         * inssel-long32.brg: optimize signed division by power of two.
11926
11927 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11928
11929         * mini-arm.c: added support for interworking with thumb code
11930         (mono must be still be built using the ARM instruction encoding).
11931
11932 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11933
11934         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11935         verifier has different rules for it.   Fixes a few verifier issues
11936         in the test suite.
11937
11938         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11939         at the end, so people know what happened.
11940
11941 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11942
11943         * brach-opts.c: in optimize_exception_target() make sure we
11944         are in a catch clause (fixes bug #79871).
11945
11946 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11947
11948         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11949         more soft-float support fixes.
11950
11951 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11952
11953         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11954         that are passed half on the stack and half in registers.
11955
11956 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11957
11958         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11959         more mips integration work from Mark E Mason 
11960         <mark.e.mason@broadcom.com>.
11961
11962 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11963
11964         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11965         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11966         tramp-mips.c: added sources for the mips port, not
11967         integrated in the build yet. Contributed by
11968         Mark E Mason <mark.e.mason@broadcom.com>.
11969
11970 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11971
11972         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11973
11974 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11975
11976         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11977         put the soft-float rules in its own file since it seems to
11978         break s390 compilation.
11979
11980 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11981
11982         * mini-arm.c: fixed wrnings.
11983
11984 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11985
11986         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11987         inssel-arm.brg: ARM support for soft-float.
11988
11989 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11990
11991         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11992         loads and stores of 32 bit fp values.
11993
11994 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11997
11998         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11999         works. Fixes #79852 and #79463.
12000
12001 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12004         more soft-float support WIP and fixes.
12005
12006 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12007
12008         * mini-arm.c: some VFP updates.
12009
12010 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12011
12012         * mini-exceptions.c: 0 is a valid local var offset in some
12013         architectures, don't assert (bug #78508).
12014
12015 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12016
12017         * exceptions-arm.c: fixed off by one error in stack walk code.
12018
12019 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12020
12021         * mini.h, mini.c: more precise tracking of type load exceptions.
12022
12023 2006-11-03  Robert Jordan  <robertj@gmx.net>
12024
12025         * Makefile.am: [WIN32] Add monow.exe target.
12026         * driver.c: [WIN32] Don't detach the console when debugging.
12027         Fixes bug #79797.
12028         
12029 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12030
12031         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12032
12033 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12036
12037         * driver.c (mini_regression): Fix --regression with AOT.
12038
12039         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12040
12041 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12042
12043         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12044
12045         * mini-sparc.h: Don't use sigaction on sparc/linux.
12046
12047         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12048
12049         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12050
12051         * mini-exceptions.c: Add proper include files for getpid ().
12052
12053 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12054
12055         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12056         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12057         method.
12058
12059         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12060         name cache to reduce its size.
12061
12062         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12063
12064 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12067         the mono_lmf TLS variable.
12068
12069         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12070         trampoline lmf frames.  
12071
12072         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12073
12074 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12075
12076         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12077         the mono_lmf TLS variable.
12078
12079         * mini-exceptions.c: Access the LMF structure through accessors.
12080
12081         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12082         variable instead of in jit_tls->lmf.
12083
12084         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12085         
12086         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12087         trampoline lmf frames.
12088
12089         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12090
12091 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12092
12093        * mini.c trace.c mini-x86.c: Revert these too.
12094         
12095        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12096        signature change.
12097
12098 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12099
12100         * genmdesc.c: removed now dead code.
12101
12102 2006-10-09  Robert Jordan <robertj@gmx.net>
12103
12104         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12105
12106 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12107
12108         * mini.h: do not leave gaps in the opcode values.
12109
12110 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12111
12112         * jit-icalls.h: flag functions as internal here, too.
12113
12114 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12115
12116         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12117         functions with the internal attribute.
12118
12119 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12120
12121         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12122
12123 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12124
12125         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12126         for soft-float.
12127
12128 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12129
12130         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12131         tail calls as on other platforms.
12132
12133         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12134
12135         * iltests.il: Add a few tailcall tests.
12136
12137 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12138
12139         * driver.c: fix loop for old compilers (bug #79521).
12140
12141 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12144
12145         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12146
12147         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12148         metadata without any code.
12149
12150         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12151         more precise debugging information using gdb.
12152
12153 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12154
12155         * inssel-ia64.brg: Make the helper methods static.
12156
12157 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12158
12159         * inssel-x86.brg: make the helper methods static.
12160
12161 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12162
12163         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12164
12165 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12166
12167         * mini.c: updates for monoburg changes.
12168         * inssel.brg: make a few helper functions static as they should.
12169
12170 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12171
12172         * Makefile.am: Move mini-codegen.c to common_sources.
12173
12174 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12175
12176         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12177         instructions.
12178         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12179         mini-ppc.h: port to use the common local register allocator.
12180
12181 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * mini.h: Remove the comment too then.
12184
12185 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12186
12187         * mini.h: put back backend.data which is to be used shortly and
12188         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12189         pointers on 4 byte boundaries it'd have much bigger issues running
12190         and you can ifdef it out anyway.
12191
12192 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12193
12194         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12195         MonoInst size by 4 bytes on 64 bit machines.
12196
12197 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12198
12199         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12200         replacement with more meaningful field names. Arch maintainers, please
12201         check the assigned names are good enough for your arch.
12202
12203 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12206         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12207
12208 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12209
12210         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12211         relocations and memory requirements, put the optimization flags
12212         definitions in their own file.
12213
12214 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12215
12216         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
12217
12218         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
12219
12220 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
12221
12222         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
12223
12224 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
12225
12226         * inssel.brg: use the correct function to get the size of an item
12227         in an array, given an element class.
12228         * aot-compiler.c: do not access class->class_size directly.
12229
12230 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12231
12232         * mini.h, debug-mini.c: added a debugging function to print
12233         info about local variables and arguments in a jitted method.
12234
12235 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
12236
12237         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12238
12239         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12240
12241 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12242
12243         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12244         inner and outer loops when passing vtypes.
12245
12246 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12247
12248         * mini-ppc.c: take into account the cpu errata for cache flushing
12249         which caused some random errors (bug #79381).
12250
12251 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12252
12253         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12254         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12255
12256 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12257
12258         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12259         loaded.
12260
12261         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12262         freebsd ports tree.
12263
12264         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12265         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12266
12267         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12268         displacement.
12269
12270 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12271
12272         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12273
12274 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12277         macro does not have to be changed during debugging.
12278
12279         * 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>.
12280
12281         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12282
12283         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12284         
12285         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12286         MONO_ARCH_NO_EMULATE_MUL is defined.
12287
12288         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12289
12290         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12291
12292         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12293
12294         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12295         
12296 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12297
12298         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12299         stuff to mini-exceptions.c where it is used.
12300
12301         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12302         setup code, the real one is in mini-exceptions.c.
12303
12304         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12305         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12306         some changes from the freebsd ports tree.
12307
12308         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12309         constants.
12310         
12311         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12312
12313 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12314
12315         * mini.c: on Linux, check for /proc to be mounted
12316         (bug# 79351, novell bug#201204).
12317
12318 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12319
12320         * mini.c: handle cases where pthread_attr_getstack() behaves
12321         incorrectly (bug #78096).
12322
12323 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12324
12325         * mini-arm.c: support larger stack frames (bug #79272).
12326
12327 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12328
12329         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12330
12331         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12332         tokens.
12333
12334         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12335         mono_class_from_name () to find a class from its name.
12336
12337         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12338
12339 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12342
12343 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12344
12345         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12346
12347 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12350         callinfo->trampoline.
12351
12352         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12353         fixes #79271.
12354         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12355         future.
12356
12357 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12360
12361 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12362
12363         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12364         stats.method_trampolines, it is already done by the generic trampoline code.
12365
12366         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12367         
12368 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12369
12370         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12371
12372         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12373
12374         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12375
12376         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12377         
12378         * mini.c (print_jit_stats): Print new stats.
12379
12380         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12381
12382 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12385         Address on two dimensional arrays. Fixes #78729.
12386
12387         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12388
12389         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12390         a method.
12391
12392         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12393
12394         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12395         #79130.
12396         
12397         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12398         a race condition.
12399         (mini_get_ldelema_ins): Ditto.
12400
12401 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12402
12403         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12404         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12405         Fixes #79213.
12406
12407 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12408
12409         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12410         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12411
12412         * exceptions-s390x.c: Cosmetic change.
12413
12414         * tramp-s390.c: Fix warning.
12415
12416         * cpu-s390.md: Correct length of mul_imm.
12417
12418 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12419
12420         * aot-compiler.c: added binary writer with ELF backend
12421         implementation (only on Linux/x86 for now).
12422
12423 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * Makefile.am: Don't run net 2.0 AOT tests.
12426
12427         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12428         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12429
12430         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12431
12432 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12433
12434         * aot-compiler.c: simplified and refactored the asm-writing code
12435         to allow different backends.
12436
12437 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12440
12441         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12442         little. Share patches of type TYPE_FROM_HANDLE as well.
12443
12444         * mini.c (mono_patch_info_equal): New helper function.
12445         (mono_patch_info_hash): Ditto.
12446
12447         * aot-compiler.c (emit_method_code): Fix s390 build.
12448
12449         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12450         is not handled because it is stored as a flag and not as a type ctor. Fixes
12451         #79016.
12452
12453 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * aot-compiler.c: Fix computation of GOT slot statistics.
12456         
12457         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12458         Also remove support for not PIC AOT.
12459
12460         * mini.h: Bump AOT file format version.
12461
12462         * objects.cs: Add a test for #78990.
12463
12464         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12465         (peter.dettman@iinet.net.au). Fixes #79087.
12466
12467         * basic-long.cs: Add a test for the above.
12468
12469 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12470
12471         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12472         
12473         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12474         code somewhat.
12475
12476 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12479         exceptions.
12480
12481 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12482
12483         * mini.c: Don't verify COM proxy invoke calls
12484         
12485
12486 2006-08-10  Dick Porter  <dick@ximian.com>
12487
12488         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12489         which process is holding semaphores locked.
12490
12491 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * mini-ia64.c mini-amd64.c: Fix #79027.
12494
12495         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12496
12497         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12498
12499         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12500         implicit arguments in a vararg call. Fixes #79027.
12501
12502 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12503
12504         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12505         (mono_get_array_new_va_signature): Ditto.
12506
12507 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12508
12509         * aot-runtime.c: Call init_plt lazily.
12510
12511         * inssel-long.brg: Fix unsigned long->int conversion.
12512
12513         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12514
12515         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12516         that most data is now in the .rss/.data section.
12517
12518 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12519
12520         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12521
12522         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12523
12524         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12525
12526         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12527
12528         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12529         virtual call. Fixes #79010.
12530
12531         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12532         and use the result as the this argument in the real call.
12533
12534         * generics.2.cs: Add a new test for #79010.
12535         
12536 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12537
12538         * mini-x86.c: Fix a warning.
12539
12540         * aot-compiler.c: Add a bunch of statistics.
12541
12542         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12543
12544 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12545
12546         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12547
12548 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * 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>.
12551
12552 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12553
12554         * mini.c (mono_method_to_ir): Obtain the original method in the
12555         CIL stream and use this to perform validation.
12556
12557         Fixed: #78816
12558
12559 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12562         (mono_arch_call_opcode): Ditto.
12563
12564         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12565         #78826.
12566
12567         * mini.c (mono_patch_info_dup_mp): New helper function.
12568         
12569         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12570         compilation. Fixes #78827.
12571
12572 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12573
12574         * declsec.c: Use original security informations for
12575           MONO_WRAPPER_MANAGED_TO_MANAGED.
12576
12577 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12578
12579         * mini.c: Allow Com Interop methods/classes and
12580         don't verify COM wrapper calls
12581         
12582
12583 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * inssel-long32.brg: Fix long->i4 checked conversion.
12586
12587         * exceptions.cs: Add a test for the above.
12588
12589 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12592
12593         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12594         leaks.
12595
12596         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12597         #78775.
12598
12599 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12600
12601         * mini.c: Fix solaris/x86 exception handling.
12602
12603         * Makefile.am: Get rid of $(ICU_LIBS).
12604
12605 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12606
12607         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12608         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12609         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12610
12611         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12612
12613         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12614         this function causes a SIGSEGV.
12615
12616 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12617
12618         * mini.c: Remove unused solaris/x86 includes.
12619
12620 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12621
12622         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12623
12624 2006-06-20  Jb Evain  <jbevain@gmail.com>
12625
12626         * cpu-g4.md: fix max length of start_handler instruction.
12627
12628 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12629         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12630
12631 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12632         * ssa.c: Fixed bug 78653 for SSA based deadce.
12633         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12634         MonoInst.flags, used in SSA based deadce.
12635         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12636         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12637
12638 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12639
12640         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12641         it can end up using non executable memory on ppc64 systems
12642         running ppc32 userspace (fix from Johannes Berg).
12643
12644 2006-06-14  Dick Porter  <dick@ximian.com>
12645
12646         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12647         4.1.1
12648
12649 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12650         * mini.c: Made so that inline is locally disabled if it would
12651         trigger a .cctor, because too many apps depend on this behavior
12652         (which seems to be also the one of the MS CLR).
12653
12654 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12657         No idea why this worked before.
12658
12659         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12660         which branch to outer exception clauses since they could skip the
12661         inner finally clauses. Fixes #78633.
12662
12663         * exceptions.cs: Add a test for the above.
12664
12665         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12666         Fixes #78629.
12667
12668         * iltests.il: Add a test for the above.
12669
12670 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12671
12672         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12673         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12674
12675         * iltests.il: Add a test for the above.
12676
12677 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12680         
12681         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12682         methods as instrinsics.
12683
12684 2006-06-09  Wade Berrier <wberrier@novell.com>
12685
12686         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12687         (simple-cee-ops.h ssapre-mini-ops.h)
12688
12689 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12690
12691         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12692         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12693         instruction).
12694         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12695         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12696
12697 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12698
12699         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12700
12701 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12702
12703         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12704         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12705         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12706         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12707         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12708         of opcodes, so that bug 78549 should not happen again.
12709         * ssapre.c: Updated to use the renamed files.
12710
12711 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12714         in OP_ATOMIC_EXCHANGE_I4.
12715
12716 2006-06-07  Wade Berrier <wberrier@novell.com>
12717
12718         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12719         in mono_debugger_create_notification_function)
12720
12721 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12722
12723         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12724         
12725         * mini.c (type_from_stack_type): Disable some changes which do not
12726         seem to work.
12727
12728         * driver.c: Reenable opts.
12729
12730         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12731         of the evaluation stack.
12732         
12733         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12734         evaluation stack trace at entry to the bblock.
12735
12736         * mini.c (merge_stacks): New function to perform verification of stack merges.
12737         Turned off by default.
12738
12739         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12740         STACK_MP.
12741         
12742 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12743
12744         * local-propagation.c: Fixed bug 78549.
12745
12746 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12747
12748         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12749
12750 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12751
12752         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12753         tramp-arm.c, tramp-ia64.c
12754         (mono_debugger_create_notification_function): Update signature to
12755         new signature and use new protocol for creating the notification
12756         function.  
12757
12758         Should fix the build.
12759
12760 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12761
12762         * exceptions-ppc.c (mono_jit_walk_stack)
12763         (ves_icall_get_frame_info): Fix the build
12764
12765 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12766
12767         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12768
12769 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12770
12771         * il2tests.2.il: New file for generics CIL tests.  Add test for
12772         #78019.
12773         * Makefile.am: Update.
12774
12775         Fix #78019
12776         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12777         to nullable types.
12778
12779 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12780
12781         * aliasing.c: Fixed bug 78311.
12782
12783 2006-05-29  Martin Baulig  <martin@ximian.com>
12784
12785         * mini-exceptions.c (mono_find_jit_info): When computing the
12786         native offset, check whether we're actually inside the method's
12787         code; call mono_debug_print_stack_frame() to format the frame.
12788         (ves_icall_System_Exception_get_trace): Call
12789         mono_debug_print_stack_frame() to format the stack frame.
12790         (ves_icall_get_trace): Update to the new debugging API.
12791         (mono_jit_walk_stack_from_ctx): Likewise.
12792         (ves_icall_get_frame_info): Likewise.
12793
12794         * mini.c (get_method_from_ip): Use the new debugging API.
12795         (mono_print_method_from_ip): Likewise.
12796
12797         * exceptions-ppc.c
12798         (mono_jit_walk_stack): Use the new debugging API.
12799         (ves_icall_get_frame_info): Likewise.   
12800
12801 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12804
12805 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12806
12807         * mini.c: Added "limitator" to inline for debugging.
12808
12809 2006-05-24  Martin Baulig  <martin@ximian.com>
12810
12811         * debug-debugger.c (mono_debugger_init): Create a private,
12812         malloc()-based code manager for the notification function and
12813         intentionally leak it on exit.  This fixes the crash-on-exit race
12814         condition.
12815
12816         * tramp-amd64.c
12817         (mono_debugger_create_notification_function): Added
12818         `MonoCodeManager *' argument.
12819
12820         * tramp-x86.c
12821         (mono_debugger_create_notification_function): Added
12822         `MonoCodeManager *' argument.
12823
12824 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12825
12826         * aliasing.c: Fixed 64 bit issue.
12827         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12828         default since all known bugs are fixed (one more time!).
12829
12830 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12831
12832         * mini.c: write barrier support.
12833
12834 2006-05-23  Martin Baulig  <martin@ximian.com>
12835
12836         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12837         check at the top of the file.
12838
12839 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12840
12841         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12842         reverting changes without reason and without changelog entries.
12843
12844 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12845
12846         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12847         to a few opcodes. Fixes #78439.
12848
12849         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12850         consistency with other archs.
12851
12852         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12853
12854 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12855
12856         * debug-debugger.c: fix the build.
12857
12858 2006-05-17  Martin Baulig  <martin@ximian.com>
12859
12860         * debug-debugger.c
12861         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12862         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12863         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12864         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12865
12866 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12869
12870 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12871
12872         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12873         MONO_TYPE_GENERICINST.
12874         
12875         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12876         MONO_TYPE_GENERICINST.
12877
12878 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12881         #78325.
12882
12883 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12884
12885         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12886         mempool.
12887         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12888
12889 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12892         mono_trace_cleanup ().
12893
12894         * iltests.il: Fix problem with the newly added test.
12895
12896         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12897         due to register constraints, free up the previous hreg. Fixes #78314.
12898
12899         * iltests.il: Add new test for #78314.  
12900
12901         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12902         Interlocked.Add. Fixes #78312.
12903
12904         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12905         
12906 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12909
12910 2006-05-05  Martin Baulig  <martin@ximian.com>
12911
12912         * debug-mini.c (mono_debug_open_block): New method.
12913
12914         * mini-amd64.c
12915         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12916         the beginning of each basic block.
12917
12918         * mini-x86.c
12919         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12920         the beginning of each basic block.
12921
12922 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12923
12924         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12925         default until I understand why they break the build on amd64.
12926
12927 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * mini.c (mini_cleanup): Call mono_cleanup ().
12930
12931         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12932         errors.
12933
12934 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12935
12936         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12937         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12938         default since all known bugs are fixed, and I cannot reproduce bug
12939         77944... I'm asking Matt Hargett to test again after this commit.
12940
12941 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12942
12943         * mini-codegen.c: Fixed typo that thrashed inline.
12944
12945 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12946
12947         * dominators.c (compute_dominators): Avoid using a worklist since
12948         it is not correct in some cases. Instead, iterate over all bblocks as
12949         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12950
12951 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12952
12953         * mini.c (mono_jit_compile_method_inner): Use
12954         mono_prepare_exception_from_error that resets the value
12955         internally.
12956
12957 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12958
12959         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12960         
12961 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12962
12963         * aliasing.c: Fixed bug 78210.
12964
12965 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12966
12967         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12968         default until all their problems (or the ones they trigger) are fixed.
12969
12970 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12973         
12974         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12975         as loaded only after resolving patches since that could invoke the same method.
12976
12977         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12978
12979         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12980         functions.
12981
12982         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12983         AOT loader.
12984
12985         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12986         stack.
12987
12988         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12989         made from AOT code through the PLT table.
12990
12991         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12992         holding the plt offset when a call is made to the aot plt trampoline.
12993         
12994 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12995
12996         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12997         amd64 AOT support.
12998
12999         * Makefile.am (common_sources): Fix build breakage.
13000
13001         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13002         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13003         intra-assembly calls if possible.
13004         
13005         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13006
13007         * mini-trampolines.c: Handle PLT entries.
13008
13009         * mini.c: Avoid creating a GOT var for calls.
13010
13011         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13012         from mscorlib code.
13013
13014         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13015         from mscorlib code.
13016
13017         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13018         AOT code.       
13019
13020         * mini.h: Bump AOT file format version.
13021         
13022         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13023         covers more cases.
13024
13025 2006-04-25  Martin Baulig  <martin@ximian.com>
13026
13027         * driver.c: Disable copyprop, consprop and inline when running
13028         inside the debugger.
13029
13030 2006-04-25  Martin Baulig  <martin@ximian.com>
13031
13032         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13033         with `get_current_thread' and added `detach'.
13034         (MonoDebuggerMetadataInfo): Added `thread_size',
13035         `thread_tid_offset', `thread_stack_ptr_offset' and
13036         `thread_end_stack_offset'.
13037
13038 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13039
13040         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13041         aot-runtime.c.
13042
13043         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13044         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13045
13046         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13047
13048         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13049
13050         * aot.c: Add support for ADJUSTED_IID.  
13051
13052 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * aot.c (emit_method_order): Don't align method_order_end.
13055
13056         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13057         the interface ID changes.
13058
13059 2006-04-21  Dick Porter  <dick@ximian.com>
13060
13061         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13062         cleaning up a thread.  Fixes the new part of bug 77470.
13063
13064 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13065
13066         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13067         to managed wrapper.
13068                      
13069 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13070
13071         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13072         
13073         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13074         SIGSEGV. Fixes #78072.
13075
13076         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13077         unregister our SIGABRT handler.
13078
13079 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13080
13081         * mini.c: Disabled inline where it can alter the call stack in a
13082         way visible from managed code.
13083         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13084         default.
13085
13086 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13087
13088         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13089         on other platforms. Fixes #78089.
13090
13091 2006-04-13  Martin Baulig  <martin@ximian.com>
13092
13093         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13094         determine whether we're inside the debugger.
13095
13096         * debug-debugger.h
13097         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13098
13099 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13100
13101         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13102         handler clauses. Fixes #78024.
13103
13104         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13105         in the CALL_MEMBASE opcodes. Fixes #78088.
13106         (mono_arch_get_vcall_slot_addr): Ditto.
13107
13108 2006-04-10  Martin Baulig  <martin@ximian.com>
13109
13110         * debug-debugger.c: The thread handling code has now been moved
13111         into ../metadata/threads.c.
13112
13113 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * driver.c (mono_main): Fix --with-gc=none build.
13116
13117         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13118         (mono_spillvar_offset_float): Ditto.
13119         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13120         hreg, not when its !global, since on ia64, there is a third category: stacked
13121         registers.      
13122
13123 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13124
13125         * mini.c: set MonoInst->klass for load field address and a few other
13126         places.
13127
13128 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13131
13132 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13135         the branch opt changes.
13136
13137 2006-04-06  Dick Porter  <dick@ximian.com>
13138
13139         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13140         
13141         * wapihandles.c (mini_wapi_seminfo): 
13142         * driver.c (mono_main): Add semaphore info option
13143
13144 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13147         branch optimization changes. Fixes #78009.
13148
13149 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13150
13151         * mini.c: ignore accessibility of methods in managed->native wrappers.
13152
13153 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13156         
13157         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13158
13159 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13160
13161         * mini.c: Modify the branch optimizations to preserve the invariant that
13162         the entries inside the in_bb and out_bb arrays are unique.
13163         (mono_unlink_bblock): Avoid creation of new arrays.
13164
13165 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13166
13167         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13168         change (#77992).
13169
13170 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13171
13172         * mini.c (optimize_branches): Remove the "optimizations" in
13173         the cbranch1/cbranch2 -> branch cases which were causing several
13174         problems in the past. Fixes #77986.
13175
13176 2006-03-31  Chris Toshok  <toshok@ximian.com>
13177
13178         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13179         default optimizations :(
13180
13181 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13184         branch.
13185
13186 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13187
13188         * local-propagation.c: Added comments to structs and removed
13189         "Mono" prefixes from local tree mover types.
13190
13191 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13192
13193         * Makefile.am (arch_sources): Define this for each architecture so 
13194         libmono_la_SOURCES is defined in one place.
13195
13196 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13197
13198         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13199         from handles/.
13200
13201 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13202
13203         * driver.c: print the GC name supplied by configure.
13204
13205 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13206
13207         * local-propagation.c: Added tree mover, and moved here all the
13208         local propagation code from mini.c
13209         * mini.c: Added support for treeprop, and moved all the local
13210         propagation code to local-propagation.c
13211         * mini.h: Added support for treeprop
13212         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13213         treeprop, inline and deadce by default
13214         * Makefile.am: Added local-propagation.c
13215
13216 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
13219
13220 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
13221
13222         * debug-debugger.c: make it compile without the Boehm GC.
13223
13224 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13225
13226         * mini.c: fixed issue with mismatch when an icall is registered
13227         with multiple names but same address.
13228
13229 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13230
13231         * declsec.c, mini-exceptions.c: use write barrier to set reference
13232         fields of managed objects.
13233
13234 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13237         (can_access_internals): Fix a warning.
13238
13239         * mini.c (print_method_from_ip): Rename this to 
13240         mono_print_method_from_ip so it gets exported.
13241
13242         * trace.c: Deal with strings inside StringBuilder's containing garbage
13243         and fix memory leaks. Fixes #77848.
13244
13245 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13246
13247         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13248         fixes #77787.
13249
13250 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13251         
13252         * mini-s390.c: Remove OP_X86_TEST_NULL.
13253
13254 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13255
13256         * mini.c: use the correct GetHashCode() for the moving collector.
13257
13258 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13259
13260         * liveness.c: Regalloc spill cost tuning.
13261
13262 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13263         
13264         * mini-s390x.h: Correct S390_LONG macro.
13265
13266         * mini-s390x.c: Cleanup unused code.
13267
13268 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * jit-icalls.h: New file.
13271
13272         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13273         icalls and include that instead of including jit-icalls.c.
13274
13275         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13276         OP_X86 opcodes.
13277
13278 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13279
13280         * mini.c: when checking for member accessibility, also check for
13281         friend assemblies and for explicit interface implementations.
13282
13283 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13284
13285         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13286
13287         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13288
13289         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13290         common cases are done first.    
13291
13292         * mini-ops.h: Only define platform specific opcodes on the given platform.
13293
13294         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13295         branch.
13296         
13297 2006-03-14  Martin Baulig  <martin@ximian.com>
13298
13299         Revert Paolo's change from r57348:
13300
13301         * mini.h: don't use gboolean for bitfields.
13302         * mini.c: verifier changes for fields and methods accessibility.
13303
13304 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13305
13306         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13307
13308         * mini-s390x.c: Fix conv_r_un.
13309
13310         * cpu-s390, cpu-s390x.md: Fix lengths.
13311
13312 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13313
13314         * mini.c: nested types have access to all the nesting
13315         levels, not just the enclosing types.
13316
13317 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13318
13319         * mini.c: added a few more verification checks.
13320
13321 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * liveness.c: Merge optimizations from the linear-il branch.
13324
13325 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * mini-ia64.c (emit_call): Add a comment.
13328
13329         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13330
13331         * tramp-ia64.c: Fix some warnings.
13332
13333 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13334
13335         * mini.h: don't use gboolean for bitfields.
13336         * mini.c: verifier changes for fields and methods accessibility.
13337
13338 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13339
13340         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13341         lazy icall wrapper changes.
13342
13343         * dominators.c: Replace all the dominator algorithms with faster
13344         ones from the linear-il branch.
13345
13346         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13347         the mempool.
13348
13349         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13350         common cases are done first.
13351
13352         * mini-amd64.c: Fix some warnings.
13353
13354         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13355         from the mempool.
13356
13357         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13358         added code.
13359
13360         * mini.h: Add a missing prototype.
13361
13362 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13363
13364         * mini.c: Compile icall wrappers lazily.
13365
13366         * mini-codegen.c: Use printf instead of g_print since its much faster.
13367
13368         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13369         function.
13370
13371         * mini.c (optimize_branches): Cache the negative result from 
13372         remove_block_if_useless ().
13373
13374         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13375         Also fix some bblock linking issues.
13376
13377         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13378         assembly files.
13379
13380         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13381
13382         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13383         accessed fields first, for better cache behavior.
13384         
13385 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13386
13387         * mini.c: speedup IList<T> array accesses.
13388
13389 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13390
13391         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13392         inline_costs counter. Fixes #77190.
13393
13394 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13397         trace messages. Fixes #77706.
13398
13399 2006-03-04  Martin Baulig  <martin@ximian.com>
13400
13401         * tramp-amd64.c, tramp-x86.c
13402         (mono_debugger_create_notification_function): Use
13403         mono_global_codeman_reserve() to allocate a buffer at runtime and
13404         return it.
13405
13406         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13407
13408         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13409         notification function at runtime and then call `initialize' in the
13410         `MONO_DEBUGGER__debugger_info' vtable.
13411
13412 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * iltests.il: Fix a visibility problem.
13415
13416 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13417
13418         * driver.c, mini.c: add hooks for the counters API.
13419
13420 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13421
13422         * driver.c: show disabled options.
13423
13424 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13425
13426         * linear-scan.c: always use cost-driven selection.
13427
13428 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13429
13430         * jit-icalls.c (helper_compile_generic_method): Revert change from
13431         2006-02-24.
13432
13433 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13434
13435         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13436
13437 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13438
13439         * inssel.brg: style fixes, mostly to force the updated monoburg
13440         to run for people using svn.
13441
13442 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13443
13444         * mini.c: match monoburg changes.
13445
13446 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13447
13448         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13449         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13450         declaration in the header file.
13451
13452 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13453
13454         * helpers.c: reduce relocations and mem usage.
13455
13456 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13457
13458         * mini.h, mini-codegen.c: disable logging features if
13459         requested by configure.
13460
13461 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13462
13463         * mini.c: tiny verifier changes.
13464
13465 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13466
13467         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13468         cpu-pentium.md: stack alignment changes for osx/x86,
13469         partially from Geoff Norton <gnorton@customerdna.com>.
13470
13471 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13472
13473         * jit-icalls.c (helper_compile_generic_method): Update to changes
13474         in metadata/class.c.
13475
13476 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13477         
13478         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13479         
13480         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13481         interface calls with large offsets.
13482
13483 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13484
13485         * jit-icalls.c (helper_compile_generic_method): Document the
13486         special-case we depend on so that we can inflate the method twice
13487         with the same context with no bad side-effects.
13488
13489 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13490
13491         * mini-x86.c, mini-amd64.c: fix for case when xen support
13492         is disabled.
13493
13494 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13495
13496         * mini-x86.c, mini-amd64.c: generate code to access tls items
13497         in a faster way for Xen systems.
13498
13499 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13500
13501         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13502         updates and compilation fixes for the OSX/x86 port, mostly from
13503         Geoff Norton <gnorton@customerdna.com>.
13504
13505 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13506
13507         * inssel.brg: faster interface call implementation
13508         to sync with the interface_offsets MonoVTable changes.
13509
13510 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13511
13512         * mini.c: more verification checks.
13513
13514 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13515
13516         * mini.c: added a few more verification checks.
13517
13518 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13519
13520         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13521         facility on the processor and use it if available.
13522
13523 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13524
13525         * driver.c, aot.c, mini.c: throw exception if the IL code is
13526         invalid or unverifiable.
13527
13528 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13529
13530         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13531         m.StructField.
13532
13533 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13534
13535         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13536
13537 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13538
13539         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13540         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13541         handling of instantiated generic valuetypes.
13542
13543 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13544
13545         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13546         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13547         instead.
13548
13549         * generics.2.cs: Revert the nullable reftypes tests.
13550
13551 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13552
13553         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13554         using __builtin_frame_address (1) as it doesn't work in the presence
13555         of optimizations. Hopefully fixes #77273.
13556
13557         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13558         -> generics.cs change as it doesn't work with some automake versions.
13559
13560 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13561
13562         * mini.c: handle systems that sue a different way to
13563         retrieve the stack address of the current thread.
13564
13565 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13566
13567         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13568         it specially in the makefile.
13569
13570         * generics.2.cs: Add tests for nullable reference types.
13571
13572 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13573
13574         * mini.c: always handle the case when mono_jit_init()
13575         is called in a thread different from the main thread,
13576         confusing libgc (bug #77309).
13577
13578 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13579
13580         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13581
13582 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13583
13584         * mini.c: change optimize_branches () to use a single loop
13585         and introduce a new optimization to simplify some range checks.
13586
13587 2006-02-03  Martin Baulig  <martin@ximian.com>
13588
13589         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13590         and merged with debugger_thread_manager_add_thread().
13591         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13592         inform the debugger about the main thread.
13593
13594 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13595
13596         * basic.cs: Add test for div.un/rem.un constant folding.
13597
13598 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13599
13600         * cpu-s390x.md: correct int_xor_imm length
13601
13602 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * generics.2.cs: New test for #77442.
13605
13606         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13607         #77442.
13608
13609 2006-02-02  Martin Baulig  <martin@ximian.com>
13610
13611         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13612         <mono/metadata/mono-debug-debugger.h>   
13613
13614         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13615
13616 2006-02-02  Martin Baulig  <martin@ximian.com>
13617
13618         * debug-debugger.h: New header file for debug-debugger.c.
13619
13620         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13621         function is a separate thread anymore; add support for attaching.
13622
13623 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * tramp-x86.c: Fix a warning.
13626
13627 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13628
13629         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13630         on very large methods.
13631
13632         * aot.c (load_patch_info): Fix a warning.
13633
13634 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13635
13636         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13637         mini-ops.h: alu membase optimizations.
13638
13639 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13640
13641         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13642         to speedup StringBuilder.
13643
13644 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * dominators.c (mono_compute_natural_loops): Fix detection of
13647         loop body start blocks.
13648
13649         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13650
13651 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13652
13653         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13654         #75145.
13655
13656 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13657
13658         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13659
13660 2006-01-25  Martin Baulig  <martin@ximian.com>
13661
13662         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13663         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13664         started to cleanup this file a little bit.
13665
13666 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13667
13668         * mini.c: optimize a codepath frequently happening in generics code.
13669
13670 2006-01-23  Martin Baulig  <martin@ximian.com>
13671
13672         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13673
13674         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13675         functions directly.
13676
13677         * driver.c: debug-debugger.c is only available if
13678         `MONO_DEBUGGER_SUPPORTED' is defined.   
13679
13680 2006-01-23  Martin Baulig  <martin@ximian.com>
13681
13682         * debug-debugger.c: Only enable this on platforms where the Mono
13683         Debugger is working (x86 and x86_64).
13684
13685 2006-01-21  Martin Baulig  <martin@ximian.com>
13686
13687         The Mono Debugger is now using the normal `mono' instead of the
13688         `mono-debugger-mini-wrapper' when executing managed code.
13689
13690         * debug-debugger.c: New file; previously known as
13691         debugger/wrapper/wrapper.c.
13692
13693         * debug-mini.c (mono_init_debugger): Removed.
13694
13695         * driver.c (mono_main): Added new `--inside-mdb' command line
13696         argument which is used when running inside the debugger.
13697
13698 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13699
13700         * liveness.c (mono_analyze_liveness): Remove some unused data
13701         structures.
13702
13703 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13704
13705         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13706
13707 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13708
13709         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13710         depends on implementation details of monobitset.
13711
13712         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13713         Fixes #77271.
13714
13715 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13716
13717         * liveness.c: Update after monobitset changes.
13718
13719 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13720
13721         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13722
13723 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13724
13725         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13726
13727         * mini-s390x.c: Remove warning messages.
13728
13729 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13730
13731         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13732
13733 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * generics.2.cs: Add ldelem/stelem_any test.
13736
13737 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13738
13739         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13740
13741 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13744         
13745 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * generics.2.cs: Reenable vtype tests.
13748
13749         * inssel-x86.brg: Remove an icorrect valuetype rule.
13750
13751 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13752
13753         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13754         initial support for OP_ABS.
13755
13756 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13757
13758         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13759
13760 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13761
13762         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13763         conversion and implement LADD/LSUB.
13764
13765         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13766         architectures.
13767
13768 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13769
13770         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13771
13772         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13773         architectures.
13774
13775 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13776
13777         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13778         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13779         (stack walk problem).
13780
13781 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13782
13783         * aot.c (mono_aot_load_method): Fix a warning.
13784
13785 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13786
13787         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13788
13789 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * iltests.il: Add test for #77148.
13792
13793         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13794         #77148.
13795
13796 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13797
13798         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13799
13800 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13801
13802         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13803         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13804
13805         * basic-long.cs: Add lconv-to-r4/r8 tests.
13806
13807 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13808
13809         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13810
13811         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13812         here as on other archs.
13813
13814 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13815
13816         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13817
13818 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13819
13820         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13821         
13822         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13823
13824         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13825         instrument_prolog; Add memory_barrier instruction.
13826
13827 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13830
13831 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13834
13835         * aliasing.c inssel.brg: Fix warnings.
13836
13837         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13838         could skip initialization of some parts of memory.
13839
13840         * mini.c mini-ia64.c: Fix warnings.
13841
13842         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13843
13844 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13847         a crash seen on sparc.
13848
13849         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13850         
13851         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13852
13853 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13854
13855         * mini-ops.h: Add s390_backchain instruction
13856
13857         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13858
13859         * cpu-s390.md: Add s390_backchain instruction
13860
13861         * mini-s390.c: Significant ABI changes
13862
13863         * mini-s390.h: Cater for zero length structures
13864
13865 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13866
13867         * mini-s390.c: ABI fixes
13868
13869         * inssel-s390.brg: Remove debug statements
13870
13871         * cpu-s390.md: Fix length of ATOMIC_xx operations
13872
13873 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13874
13875         * basic-float.cs: Add float<->long conversion tests.
13876
13877 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13878
13879         * mini-s390.c: Fix LOCALLOC processing.
13880
13881         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13882
13883 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13884
13885         * iltests.il: Add tests for some opcodes not covered by the other
13886         tests.
13887
13888 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13889
13890         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13891         register loading for Tail processing; Correct trace output.
13892
13893         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13894
13895         * cpu-s390.md: Correct size of jmp instruction. 
13896
13897 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13898
13899         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13900
13901 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13902
13903         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13904           Bring s390 up to current level.
13905
13906 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13907
13908         * generics.2.cs: Disable the newly added tests as they do not work yet.
13909         
13910         * generics.2.cs: Add valuetype tests.
13911
13912 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * basic-long.cs: Add i4->u8 test.
13915
13916         * objects.cs: Add tests for JIT intrinsic.
13917
13918         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13919         optimizations lost by a mistake.
13920
13921 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * basic-long.cs: Remove a test moved to objects.cs.
13924
13925         * arrays.cs: Add more array tests.
13926
13927 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * arrays.cs: Add new tests for multi-dimensional arrays.
13930
13931 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13932
13933         * Makefile.am (test_sources2): Add generics.2.cs.
13934         (EXTRA_DIST): Add test_sources2.
13935
13936 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13937
13938         Support for boxing and unboxing nullable types as well as the
13939         isinst operation on nullables, per the CLI ammendment.
13940
13941         * inssel.brg (CEE_ISINST): Special case for nullable
13942
13943         * mini.c (handle_unbox_nullable): new method
13944         (handle_box): Special case for nullable types
13945         (mono_method_to_ir): Call handle_unbox_nullable in correct
13946         places.
13947
13948         * generics.2.cs: New test suite
13949
13950         * Makefile.am: Support for regression tests with generics.
13951
13952 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13953
13954         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13955         allocated to registers. Fixes #76800.
13956
13957 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13958
13959         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13960
13961 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13962
13963         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13964         of platforms.
13965
13966 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13967
13968         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13969         objects.cs.
13970
13971         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13972         
13973         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13974 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13975
13976         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13977         single precision before storing to a single precision location.
13978
13979 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13980
13981         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13982
13983 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13986         correct files.
13987
13988         * basic.cs: Remove test_0_byte_compares test which was moved to
13989         objects.cs a long time ago.
13990
13991 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13992
13993         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13994
13995 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13998         handlers are called.
13999
14000         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14001         throwing code.
14002
14003          * mini-ia64.c: Add support for the throw->branch exception 
14004         optimization.   
14005
14006         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14007
14008 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14009
14010         * mini.c: Enabled "fastpath" deadce :-)
14011         
14012 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14013
14014         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14015         alias analysis pass to support it.
14016         * mini.h: Likewise.
14017         * ssa.c: Likewise.
14018         * liveness.c: Likewise (liveness computation can use aliasing
14019         information to be more accurate).
14020         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14021         moreover made so that "--compile-all" uses the given optimization
14022         flags and not the default ones.
14023         * aliasing.c: Alias analysis (new file).
14024         * aliasing.h: Likewise.
14025         * Makefile.am: added "aliasing.c" and "aliasing.h".
14026         
14027 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14028
14029         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14030         OP_L opcodes.
14031
14032 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14033
14034         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14035         fp >= end_of_stack exit condition, as it is not needed, and it might
14036         become true for fp eliminated frames.
14037
14038 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14039
14040         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14041         coded offsets.
14042
14043 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14044
14045         * mini-arm.c: fixed alignment of doubles/longs to match
14046         the C ABI (bug #76635).
14047
14048 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14049
14050         * aot.c: fix compilation with --enable-minimal=aot.
14051
14052 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14053
14054         * mini-arm.c: fixed compatibility with the new
14055         floating point emulator package for compares.
14056
14057 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14058
14059         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14060
14061 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14062
14063         * mini-exceptions.c (print_stack_frame): Output to stderr.
14064         (mono_handle_native_sigsegv): Ditto.
14065
14066 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14067
14068         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14069         OP_LCONV_TO_OVF_I implementation.
14070
14071         * mini-amd64.c: Add support for the throw->branch exception 
14072         optimization.
14073
14074         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14075         when the catch clause catches a more general exception, i.e. Object.
14076
14077 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14078
14079         * cpu-ia64.md: Remove unused opcodes.
14080
14081         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14082         specific defines for architectures defining USE_SIGACTION.
14083
14084         * mini-ia64.c: Fix some warnings.
14085
14086         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14087         version seemed to skip a frame.
14088
14089 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14092         only calls which are made to native code use this flag.
14093
14094 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14095
14096         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14097         varargs methods as well.
14098         
14099         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14100         which have save_lmf set. Reorganize methods prologs a bit.
14101
14102         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14103         debugger to the proper place.
14104
14105 2005-10-29  Martin Baulig  <martin@ximian.com>
14106
14107         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14108         when running inside the debugger until the debugger has support
14109         for it.
14110
14111 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14112
14113         * mini.h: Fix a warning.
14114
14115 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14116
14117         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14118         we expose publicly, this returns the string.
14119
14120 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14121
14122         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14123         with fp elimination.
14124
14125 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14128         native stacktrace using the glibc 'backtrace' function if available.
14129
14130 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14131
14132         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14133
14134         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14135         handle SIGSEGVs received while in native code.
14136
14137         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14138         code, call mono_handle_native_sigsegv which will abort the runtime
14139         after printing some diagnostics, instead of converting it into a
14140         confusing NullReferenceException.
14141
14142 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14143
14144         * cpu-pentium.md: Remove unused opcodes.
14145
14146 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14147
14148         * mini-amd64.h (MonoLMF): Add rsp field.
14149
14150         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14151         the lmf too.
14152
14153 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14154
14155         * mini-codegen.c (get_register_spilling): Fix some warnings.
14156
14157 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14158
14159         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14160         elimination during exception handling. Enable fp elimination by
14161         default.
14162
14163         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14164         elimination.
14165
14166 2005-10-16  Martin Baulig  <martin@ximian.com>
14167
14168         * mini-exceptions.c
14169         (mono_debugger_run_finally): New public method for the debugger.
14170
14171 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14172
14173         * debug-mini.c (mono_debug_init_method): Fix warning.
14174
14175         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14176         the 'exname' parameter const to fix some warnings.
14177
14178 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14181         introduced by the previous patch.
14182
14183 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * basic-float.cs: Add test for precision of float arithmetic.
14186
14187         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14188         when loading/storing single values from/to memory.
14189
14190         * mini.c (mono_jit_compile_method_with_opt): Create the function
14191         pointers in the correct domain.
14192
14193 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14194
14195         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14196         introduced by previous patch.
14197         
14198         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14199         when out_filter_idx is NULL.
14200
14201         * mini-exceptions.c: Don't run filter clauses twice during exception
14202         handling. Fixes #75755.
14203
14204 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * aot.c: Add support for ldflda wrappers.
14207
14208         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14209         #75902.
14210
14211 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14212
14213         * mini.c, mini.h: do not consider exception handlers blocks when
14214         setting up interface variables.
14215
14216 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
14217
14218         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
14219
14220 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
14223         causes a regression.
14224
14225         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
14226
14227 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
14228
14229         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
14230         of the OP_P definitions.
14231
14232         * TODO: Add a proposal for dealing with the CEE/OP mess.
14233
14234         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
14235         optimizations from the x86 port.
14236
14237         * cpu-amd64.md: Ditto.
14238
14239         * basic.cs basic-long.cs: Add tests.
14240
14241 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14242
14243         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14244         Patrik Torstensson's implementation of my exception-handling
14245         optimization idea, when the exception object is not used
14246         (bug #62150).
14247
14248 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14251         of the mul_imm optimizations from the old jit.
14252
14253 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14254
14255         * mini.c, liveness.c: patch by Patrik Torstensson and
14256         Zoltan Varga to improve performance in methods with
14257         exception clauses.
14258
14259 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14260
14261         * driver.c: Remove 'Globalization' entry from --version.
14262
14263 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14264
14265         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14266         there is a profiler interested in JIT events.
14267
14268         * aot.c: Load profile files produced by the AOT profiling module, and
14269         reorder methods based on the profiling info. Add a 'method_order' table
14270         to the AOT file to make mono_aot_find_jit_info work with the reordered
14271         methods.
14272
14273         * mini.h: Bump AOT file version info.
14274
14275 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14276
14277         * mini-arm.h: work around what looks like a gcc bug when optimizations
14278         are enabled.
14279
14280 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14281
14282         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14283         conditionals.  Use ...
14284         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14285
14286 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14287
14288         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14289         to determine the amount of memory to copy when passing valuetypes.
14290
14291         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14292         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14293
14294 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14297         information about aot.
14298
14299 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14300
14301         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14302         macros. This will allow a deadlock debugger to easily be plugged
14303         in.
14304
14305 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14306
14307         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14308
14309 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14310
14311         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14312         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14313         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14314         ($(arch_built)) [CROSS_COMPILING]: Error out.
14315
14316 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * aot.c: Add support for the no_special_static flag for classes.
14319
14320 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14321
14322         * Reapply reverted patches.
14323
14324         * *: Revert r50174 as well.
14325
14326         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14327
14328 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14329
14330         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14331
14332 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14333
14334         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14335         part of the SIG_HANDLER_SIGNATURE.  
14336
14337 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14338
14339         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14340         statistics.
14341
14342         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14343         introduced by previous patch.
14344
14345 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14346
14347         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14348         saved registers too.
14349
14350         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14351         upon the information returned by get_call_info ().
14352         
14353         * mini-x86.c (add_float): Fix stack size calculation.
14354         (mono_arch_call_opcode): Rewrite this so it works based up the
14355         information returned by get_call_info ().
14356         (mono_arch_get_this_vret_args): Ditto.
14357
14358 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14359
14360         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14361         in cinfo to determine the registers which need to be used.
14362
14363 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14364
14365         * driver.c (mono_main): Add --server and --desktop flags. 
14366
14367 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14368
14369         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14370         registers as global registers.
14371
14372         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14373         longer needed with the new register allocator.
14374
14375         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14376
14377         * cpu-ia64.md: Remove unused opcodes.
14378         
14379         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14380         
14381 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14382
14383         * cpu-amd64.md: Remove unused opcodes.
14384
14385         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14386         needed with the new register allocator.
14387
14388         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14389         reg-reg moves.
14390
14391 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14392
14393         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14394
14395 2005-09-16  Martin Baulig  <martin@ximian.com>
14396
14397         * exceptions-amd64.c
14398         (throw_exception): Don't call mono_debugger_throw_exception() if
14399         we're a rethrow - see the FIXME in the code.
14400
14401 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14402
14403         * mini.c (mono_init_exceptions): This only works on some architectures.
14404         
14405 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14408         on ia64.
14409
14410         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14411
14412         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14413         now in mini-exceptions.c.
14414
14415 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14416
14417         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14418         now in mini-exceptions.c.
14419
14420 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14421
14422         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14423         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14424
14425         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14426         code into mini-exceptions.c. Add some assertions to it.
14427
14428 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14429
14430         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14431         (<software@solmersa.com>). Fix as errors on windows.
14432
14433 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14434
14435         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14436         method info into the LMF.
14437
14438 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14439         
14440         * mini-ia64.c: Add proper unwind info for method epilogs.
14441
14442         * exceptions-ia64.c: Add some code to help debugging.
14443         
14444         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14445
14446         * mini-exceptions.c: Fix warning.
14447
14448 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14449
14450         * mini.c: Really fix build.
14451
14452         * mini-x86.c mini-amd64.c: Fix build.
14453
14454 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14455
14456         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14457
14458         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14459         some Interlocked methods as intrinsics.
14460
14461         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14462         for Thread methods as well.
14463
14464         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14465
14466         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14467
14468         * mini-ia64.c mini-x86.c mini-amd64.c 
14469         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14470         OP_MEMORY_BARRIER.
14471         
14472         * mini.c (mono_init_exceptions): Fix build breakage.
14473
14474 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14477         of instructions. Use the new ia64_unw_op macros for emitting unwind
14478         info.
14479
14480         * mini.c (mono_init_exceptions): Initialize exception handling
14481         related trampolines at startup.
14482
14483 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14484
14485         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14486
14487 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14488
14489         * mini.c: Handle type loading errors gracefully during compilation and
14490         throw the appropriate exception.
14491
14492 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14493
14494         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14495         for the mono binary.
14496
14497 2005-09-09  Martin Baulig  <martin@ximian.com>
14498
14499         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14500         the release.
14501
14502 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14503
14504         * mini-arm.h: use emulation for conv.r.un for the release.
14505
14506 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14507
14508         * mini-arm.c, objects.cs: more fixes and tests for them.
14509
14510 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14511
14512         * mini-arm.c: align structures to at least 4 bytes to be able
14513         to keep our current optimized memcpy.
14514
14515 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14518
14519 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14520
14521         * mini.c: ignore SIGPIPE.
14522
14523 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14524
14525         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14526
14527         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14528
14529 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14530
14531         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14532
14533 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14534
14535         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14536         exception handling support.
14537         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14538         patch by Brian Koropoff <briank@marakicorp.com>).
14539
14540 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14541
14542         * mini.c: revert another 'optimization' which breaks when
14543         items on the eval stack need to be saved at a basic block end
14544         (bug #75940).
14545
14546 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14547
14548         * jit-icalls.c: for arrays, ensure we always provide
14549         lower bounds.
14550
14551 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14554         
14555         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14556
14557 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14558
14559         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14560         arguments in their original register.
14561
14562 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14563
14564         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14565         memset/memcpy.
14566
14567         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14568         when ssapre is enabled.
14569
14570         * inssel-long.brg: Fix bug in previous patch.
14571
14572         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14573         multiplication by a constant.
14574
14575 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14576
14577         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14578         icc.
14579
14580         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14581         saving registers.
14582
14583 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14584
14585         * inssel-arm.brg: apply changes tested by Brian Koropoff
14586         <briank@marakicorp.com>.
14587
14588 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14589
14590         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14591         
14592 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14595         to the same register if dreg is just a base register.
14596         (print_ins): Improve printing of membase opcodes.
14597
14598         * inssel-x86.brg: Add optimized ldind(reg) rules.
14599
14600         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14601
14602 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14603
14604         * mini.c: when running under valgrind, set the stack bottom for
14605         the GC at the actual approximate stack for the app (fixes running
14606         mono with valgrind).
14607
14608 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14609
14610         * mini.c: do no break at the first valuetype to init found
14611         (fixes bug #75791).
14612
14613 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14614
14615         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14616
14617 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14618
14619         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14620
14621 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14622
14623         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14624
14625 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14626
14627         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14628
14629         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14630         code.
14631
14632         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14633         code.
14634
14635         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14636         methods.
14637
14638 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14639
14640         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14641
14642 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14643
14644         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14645         in the tail recursion optimization.
14646
14647         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14648         debug info into the assembly file.
14649
14650         * iltests.il: Add test for filter regions.
14651
14652         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14653         initial stack of filter regions. Fixes #75755.
14654
14655 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14656
14657         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14658         stack requirements.
14659
14660 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14661
14662         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14663         the check for an already compiled method on non-ia64 platforms.
14664         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14665         proper domain.
14666
14667         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14668
14669         * inssel-x86.brg: Add some optimized call rules.
14670
14671 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14672
14673         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14674         method here.
14675
14676         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14677         mono_arch_patch_delegate_trampoline.
14678
14679         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14680
14681         * mini-trampolines.c: Fix build.
14682
14683         * mini-amd64.h: Add delegate trampolines.
14684
14685         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14686
14687         * inssel-amd64.brg: Add optimized call rules.
14688         
14689         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14690
14691         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14692
14693 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14694
14695         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14696         change.
14697
14698         * mini-ia64.c: Remove LMF fixmes.
14699
14700         * mini-ia64.h: Remove most fields from LMF.
14701
14702         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14703
14704         * mini-trampolines.c: Add support for IA64 function descriptors.
14705
14706         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14707         for IA64 function descriptors.
14708
14709 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14710
14711         * tramp-arm.c: patch the vtable for virtual calls. Added
14712         support code to register/unregister the LMF.
14713         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14714         more LMF work.
14715
14716 2005-08-19  Dick Porter  <dick@ximian.com>
14717
14718         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14719         bit value if needed.
14720
14721 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14722
14723         * mini.c (mini_get_method): Move handling of wrapper data here.
14724
14725         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14726
14727         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14728         virtual.
14729
14730         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14731         bblock->code does not remain empty.
14732
14733 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14734
14735         * arrays.cs: Add regression test for #75832.
14736
14737         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14738         rules. Fixes #75832.
14739
14740         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14741         instruction scheduling.
14742
14743 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14744
14745         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14746
14747 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14748
14749         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14750
14751         * mini-codegen.c: Fix VC build.
14752
14753         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14754
14755 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14756
14757         * mini.h: fix signature for mono_register_opcode_emulation.
14758
14759 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14760
14761         * mini.c: Get rid of most of the helper_sig_... constants using
14762         mono_create_icall_signature ().
14763
14764 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14765
14766         * jit-icalls.c (helper_ldstr): New helper function.
14767
14768         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14769
14770         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14771         throw, load the string using a helper call instead of creating a string object.
14772
14773         * aot.c: Update after LDSTR changes.
14774
14775         * mini.h: Bump AOT file version.
14776         
14777         * aot.c: Save class size info into the AOT file. Print more statistics during
14778         compilation.
14779
14780         * mini.h: Bump AOT file version.
14781
14782         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14783         ordering of disasm cases. Fixes #74957.
14784
14785 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14786
14787         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14788         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14789         the generic code needed for the ARM port.
14790
14791 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14792
14793         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14794         inssel-arm.brg: more ARM features and fixes.
14795
14796 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14797
14798         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14799         ARM port work in progress.
14800
14801 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14802
14803         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14804
14805         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14806
14807         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14808
14809         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14810
14811         * *-ia64.*: Ongoing IA64 work.
14812         
14813         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14814
14815 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14816
14817         * TODO: Remove out-of-data todo stuff.
14818
14819         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14820         dead code.
14821
14822         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14823
14824         * mini.h: Bump corlib version.
14825
14826 2005-07-27  Martin Baulig  <martin@ximian.com>
14827
14828         * mini-codegen.c
14829         (create_copy_ins): Added `const unsigned char *ip' argument; set
14830         `copy->cil_code' from it.
14831
14832 2005-07-27  Martin Baulig  <martin@ximian.com>
14833
14834         * mini-exceptions.c (mono_handle_exception): Don't call
14835         mono_debugger_handle_exception() for filters.
14836
14837 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14838
14839         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14840         as well.
14841
14842 2005-07-26  Martin Baulig  <martin@ximian.com>
14843
14844         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14845
14846         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14847         helper_compile_generic_method() if the method is actually virtual
14848         and non-final.
14849
14850 2005-07-26  Martin Baulig  <martin@ximian.com>
14851
14852         * mini.c
14853         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14854         public; this is now accessed directly by the debugger.
14855         (mono_generic_trampoline_code): Removed.
14856
14857         * debug-mini.c
14858         (mono_debug_init_method): Also add interncalls and wrappers.
14859
14860 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14861
14862         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14863
14864 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14865
14866         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14867
14868 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14869
14870         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14871
14872 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14873
14874         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14875         getting TLS offsets on AMD64 too.
14876
14877 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14878
14879         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14880
14881 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14882
14883         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14884         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14885
14886 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14887
14888         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14889
14890         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14891         to mini.c.
14892
14893         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14894         mono_sparc_is_virtual_call ().
14895         
14896         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14897
14898         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14899         trampoline parameters.
14900
14901         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14902         
14903         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14904         to mono_arch_get_vcall_slot_addr.
14905
14906         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14907         trampoline code.
14908
14909         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14910
14911 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14914
14915 2005-07-19  Martin Baulig  <martin@ximian.com>
14916
14917         * exceptions-amd64.c (throw_exception): Call
14918         mono_debugger_throw_exception() here like we're doing it on i386.
14919
14920 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14921
14922         * mini-ia64.c: Add optimized TLS access support.
14923
14924 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14925
14926         * mini-exceptions.c: Ongoing IA64 work.
14927
14928         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14929
14930         * mini.c: Use the default optimization set when embedding. Fixes
14931         #75194.
14932
14933 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14936         of trampolines to a separate file.
14937
14938         * mini-trampolines.c: New file.
14939
14940         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14941         separate file.
14942         
14943         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14944         amd64/ia64 code.
14945
14946         * mini-codegen.c: Fix cygwin build.
14947
14948 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14949
14950         * mini.c: Add some minor changes needed by the IA64 port.
14951
14952         * *-ia64.*: Ongoing IA64 work.
14953
14954 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14955
14956         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14957         trampolines into arch-independent and arch-dependent parts.
14958
14959         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14960
14961 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14964
14965         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14966         the xp-regalloc-branch for amd64.
14967
14968         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14969         xp-regalloc-branch for x86.
14970
14971 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14972
14973         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14974
14975 2005-07-06  Martin Baulig  <martin@ximian.com>
14976
14977         * mini.c
14978         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14979         (mono_jit_runtime_invoke): Likewise.
14980
14981 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14982
14983         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14984         on x86 too.
14985         
14986         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14987         without loading their metadata. Reorganize the file format so exception handling+
14988         debug info is kept separate from normal method info. Create MonoJitInfo 
14989         structures for methods lazily.
14990
14991         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14992         loading metadata.
14993         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14994
14995         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14996
14997         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14998         in AOT code.
14999
15000         * mini.h: Bump AOT file version.
15001
15002 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15003
15004         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15005
15006 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15007
15008         * Makefile.am (check-local): Call semdel-wrapper.
15009
15010 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15011
15012         * mini-x86.c: Revert the last change as it seems to break the build..
15013
15014 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15015
15016         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15017         
15018         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15019
15020 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15021
15022         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15023         outside of the macro, so strange stuff doesn't happen with gcc4
15024         (NEW_AOTCONST_TOKEN): Likewise.
15025
15026 2005-06-28  Martin Baulig  <martin@ximian.com>
15027
15028         * mini.c (mini_class_is_system_array): New static method; use this
15029         instead of `klass->parent == mono_defaults.array_class' everywhere
15030         since this also works for the new generic array class.
15031
15032 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15033
15034         * inssel.brg: Remove warnings.
15035
15036 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15037
15038         * mini-ia64.c: Ongoing IA64 work.
15039
15040         * basic-float.cs: Add float->i1 conversion test.
15041
15042         * iltests.il: Add conv.u4 test.
15043
15044 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15045
15046         * inssel-long.brg: Fix bug caused by last change.
15047
15048 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15049
15050         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15051         BSDs.  Allows the x86 JIT to work on OSX86
15052
15053 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15054
15055         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15056         u4->i8 conversion.
15057
15058         * mini-ia64.c: Ongoing IA64 work.
15059
15060 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15061
15062         * mini-ia64.c: Ongoing IA64 work.
15063
15064         * driver.c: Clean up jit_code_hash as well when using --regression.
15065
15066         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15067
15068         * basic-long.cs: Add tests for long->u4 conversion.
15069
15070 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15071
15072         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15073         that we do not depend on undefined C behavior: the order stuff
15074         gets evaluated within an expression. Fixes mono when compiled on
15075         GCC 4.
15076
15077 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15078
15079         * *-ia64.*: Ongoing IA64 work.
15080
15081         * aot.c: Lower memory usage while loading AOT methods.
15082
15083         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15084
15085         * mini.h: Bump AOT file format version.
15086
15087 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15088
15089         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15090
15091 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15092
15093         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15094         not on callee assembly). Fixed some comments.
15095
15096 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15097
15098         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15099         it gets proper disassembly.
15100         (emit_method_info): Remove some dead code.
15101
15102         * mini.c (mini_method_compile): Allways allocate the GOT var in
15103         mono_method_to_ir for emulating opcodes.
15104
15105 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15106
15107         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15108         before freeing the code memory. Fixes #74990.
15109
15110         * objects.cs: Add regression test for #74992.
15111
15112         * liveness.c: Extend live ranges of arguments to the beginning of the
15113         method. Fixes #74992.
15114
15115         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15116         so it points into the faulting instruction.
15117
15118 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15119
15120         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15121
15122         * *-ia64.*: Ongoing IA64 work.
15123
15124         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15125
15126 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15127
15128         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15129
15130         * *-ia64.*: Ongoing IA64 work.
15131
15132 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15133
15134         * basic-long.cs: Add tests for add/sub.ovf.
15135
15136         * basic.cs: Add tests for sub.ovf.
15137
15138         * *-ia64.*: Ongoing IA64 work.
15139
15140 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15141
15142         * *-ia64.*: Ongoing IA64 work.
15143
15144         * basic.cs: Add conv.ovf.i4.un test.
15145
15146 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15147
15148         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15149         
15150 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15151
15152         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15153
15154 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15155
15156         * *-ia64.*: Ongoing IA64 work.
15157
15158 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15159
15160         * trace.[ch]:
15161         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15162
15163 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15164
15165         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15166
15167 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15168
15169         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15170
15171         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15172         of a call is callable by a near call.
15173
15174 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15175
15176         * mini-ia64.c: Ongoing IA64 work.
15177
15178 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * genmdesc.c: Make the generated array non-static.
15181
15182         * inssel-long.brg: Fix LSHR_IMM rule.
15183
15184         * *-ia64.*: Ongoing IA64 work.
15185
15186         * *-ia64.*: Ongoing IA64 work.
15187
15188 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15189
15190         * *-ia64.*: Ongoing IA64 work.
15191
15192         * *-ia64.*: Ongoing IA64 work.
15193         
15194         * mini-ia64.c: Ongoing IA64 work.
15195
15196         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15197
15198 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15199
15200         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15201         
15202         * objects.cs basic-long.cs: Move some tests to objects.cs.
15203
15204 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15205
15206         * *-ia64.*: Ongoing IA64 work.
15207
15208         * iltests.il: Add a new test.
15209
15210         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15211         newobj. Fixes #75042.
15212
15213 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15214
15215         * *-ia64.*: Ongoing IA64 work.
15216         
15217         * *-ia64.*: Ongoing IA64 work.
15218         
15219         * *-ia64.*: Ongoing IA64 work.
15220
15221         * basic.cs objects.cs: Move tests accessing static variables as well.
15222
15223         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
15224
15225 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
15226
15227         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
15228
15229         * driver.c: Always print failed tests.
15230
15231         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
15232         frame pointer.
15233
15234         * *ia64*: Ongoing IA64 work.
15235
15236 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15237
15238         * basic.cs: Add tests for add.ovf. Fix warnings.
15239
15240 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15241
15242         * driver.c (mono_main): Avoid crash if no argument is passed to
15243         --break;  Do not use g_error, but f_printf.   And fix all other
15244         ocurrences of the same crash.
15245
15246 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15247
15248         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15249         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15250         Fixes #74742.
15251
15252 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15253
15254         * *-ia64.*: Add beginnings of IA64 backend.
15255
15256         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15257
15258 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15259
15260         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15261         Fixes #74925.
15262
15263         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15264
15265         * mini-amd64.c: Fix a warning.
15266
15267 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15268
15269         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15270         in float_neg. Fixes #74897.
15271
15272         * mini-amd64.c (emit_call): Fix another near call bug.
15273
15274 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15275
15276         * declsec.c: Keep the appdomain information in the structure. Added a 
15277         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15278         value gets overwritten).
15279         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15280         an MonoAppDomain member to MonoSecurityFrame.
15281         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15282         used in the stack walk. Now use a MonoArray which grow (double) when
15283         it gets full.
15284
15285 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15286
15287         * mini.c: Re-enabled runtime cleanup, since running threads should
15288         now properly stop when exiting.
15289
15290 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15291
15292         * mini-codegen.c: New file contaning the arch-independent local
15293         register allocator. Not used by any architectures yet.
15294
15295         * mini.h linear-scan.c: Merge some changes from the 
15296         mini-xp-local-regalloc branch.
15297
15298 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15299
15300         * mini-amd64.c (emit_call): Fix calls to native functions when the
15301         runtime is compiled as a shared library. Fixes #74756.
15302
15303         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15304         on a literal field. Fixes #74751.
15305
15306 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15307
15308         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15309
15310 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15311
15312         * objects.cs: Add missing null casting test.
15313
15314 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15315
15316         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15317         in wrapper methods. Also rename 'address' variable to 'offset'.
15318
15319 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15320
15321         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15322         warnings.
15323         
15324         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15325
15326         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15327         work on windows.
15328
15329 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15330
15331         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15332
15333 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15334
15335         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15336         just the last bytes.
15337
15338 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15339
15340         * aot.c (mono_compile_assembly): Fix warning.
15341
15342         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15343         by the _MSC_VER stuff.
15344
15345 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15346
15347         * inssel-long.brg: Fix #74588.
15348
15349         * cpu-amd64.md: Fix #74591.
15350
15351         * iltests.il: Add new regression tests.
15352
15353 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15354
15355         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15356         valuetype.
15357
15358 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15359
15360         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15361
15362         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15363         from Bill Middleton <flashdict@gmail.com>.
15364
15365 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * arrays.cs: Add new regression test. Fix warnings.
15368
15369 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15370
15371         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15372         and leakage in CKFINITE.
15373
15374         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15375         this to a null op since it is called on amd64 too.
15376
15377         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15378
15379         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15380         body since this is not used on amd64.
15381         
15382         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15383
15384         * mini-amd64.c: Remove obsolete fixmes.
15385
15386         * mini.c (print_method_from_ip): Fix debugging support.
15387
15388 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15389
15390         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15391         so that expressions that don't give much gain are not reduced.
15392         * ssapre.h: Likewise.
15393
15394 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15395
15396         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15397
15398         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15399
15400         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15401
15402 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15403
15404         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15405
15406         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15407
15408 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15409
15410         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15411         stack touching.
15412
15413         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15414
15415         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15416
15417         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15418
15419         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15420         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15421
15422         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15423
15424         * mini-x86.c: Fix up stack overflow handling.   
15425
15426         * exceptions.cs: Add new regression test.
15427
15428 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15429
15430         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15431         mono_jit_thread_attach.
15432
15433         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15434
15435 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15436
15437         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15438         avoid calling constructors using callvirt.
15439
15440         * inssel.brg: Fix #74073.
15441
15442 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15443
15444         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15445         compilation with non-GCC compilers.
15446         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15447         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15448
15449 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15450
15451         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15452         klass->interface_offsets (will likely fix bug#74073).
15453
15454 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15455
15456         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15457
15458 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15459
15460         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15461         to amd64_div_reg_size ().
15462         
15463         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15464
15465 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15466
15467         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15468
15469 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15470
15471         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15472
15473 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15474
15475         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15476         
15477         * mini.c (mono_precompile_assembly): Load and precompile referenced
15478         assemblies as well. Fixes #74015.
15479
15480 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15481
15482         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15483
15484 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15485
15486         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15487         a lot of checks and (anyway) permissions cannot work until corlib is 
15488         loaded.
15489
15490 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15491
15492         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15493
15494 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15495
15496         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15497         calls (fixes bug#72824).
15498
15499 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15500
15501         * mini.c: fix tail recursion elimination (see test in bug#73936).
15502
15503 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15504
15505         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15506         some fp functions in sse2 mode.
15507
15508 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15509
15510         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15511
15512 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15513
15514         * mini.h mini.c: Add mono_get_jit_tls_key ().
15515
15516         * mini-x86.c: Enable fast TLS support on windows.
15517
15518 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15519
15520         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15521         * mini.c: Check for p/invoke method when generating code. If a
15522         p/invoke method, or it's class, isn't decorated with [Suppress
15523         UnmanagedCodeSecurity] then generate code to call System.Security.
15524         UnmanagedDemand (only if the security manager is active).
15525
15526 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15527
15528         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15529         last change as it seems to cause strange crashes.
15530         
15531 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15532
15533         * *.c: handle unsafe function pointers where needed.
15534
15535 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15536
15537         * mini.c (mono_jit_free_method): Remove the fixme too.
15538
15539 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15540
15541         * mini.c: As discussed, make the code actually free the delegate
15542         thunk now, to enable the debugging of delegate problems, use
15543         MONO_DEBUG=1 when running Mono. 
15544
15545         This takes also care of parts of the leaks as seen by Joe.
15546
15547 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15550         thread_tls_offset calculation.
15551
15552 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15553
15554         * declsec.c: Reworked linkdemand checks for icall. The previous code
15555         was using the declaration code (untrusted) and didn't work as expected
15556         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15557         specific case.
15558
15559 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15560
15561         * iltests.il: Add new localloc test.
15562
15563         * mini-amd64.c: Handle large stack allocations the same way as on
15564         windows if stack overflow handling is working.
15565         
15566         * mini-amd64.c: Allocate the signal stack using mmap.
15567
15568         * mini.c (sigsegv_signal_handler): Fix reading of context.
15569
15570         * mini-exceptions.c: Fix up stack overflow handling.
15571
15572         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15573
15574         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15575
15576         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15577
15578         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15579
15580         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15581         tramp_init functions as they are no longer needed.
15582
15583 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15584
15585         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15586         
15587         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15588
15589         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15590         
15591         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15592         support that now.
15593
15594         * mini-ops.h: Add OP_LMUL_IMM.
15595
15596         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15597         long mul/div opcodes as intrinsic.
15598
15599         * mini-amd64.c (emit_call): Handle the case when the callee might be
15600         an AOT method.
15601
15602 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15603
15604         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15605         extra safe.
15606         
15607         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15608
15609         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15610
15611 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15612
15613         * mini.c (mono_codegen): Don't leak here, to help people running
15614         monogrind.
15615
15616 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15617
15618         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15619         conversions in sse2 mode.
15620
15621         * basic-float.cs: Add regression test.
15622         
15623         * mini-amd64.c: Reenable sse2.
15624
15625 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15626
15627         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15628
15629 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15630
15631         * driver.c: Copyright text should include 2005.
15632         
15633 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15634
15635         * cpu-amd64.md (load_membase): Fix more max lengths.
15636
15637 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15638
15639         * cpu-amd64.md (load_membase): Fix max length.
15640
15641         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15642
15643         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15644
15645         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15646         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15647
15648         * basic-float.cs: Add rounding regression test.
15649
15650         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15651
15652 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15653
15654         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15655         structures in registers for pinvoke wrappers.
15656
15657 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15658
15659         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15660
15661 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15662
15663         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15664         wrapper to mono_jit_thread_attach.
15665
15666         * mini.c (mini_jit_thread_attach): New jit icall.
15667
15668         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15669         native->managed wrappers.
15670
15671         * exceptions.cs: Add new regression test.
15672
15673         * mini.c (optimize_branches): Check regions in the cbranch to throw
15674         block case as well. Fixes #73242.
15675
15676 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15677
15678         * mini.c: thread safety fixes.
15679
15680 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15681
15682         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15683         patching stuff, since delegates use jump trampolines so there is
15684         no caller.
15685
15686         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15687         jump trampolines.
15688         
15689         * tramp-amd64.c: Fix build.
15690
15691         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15692         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15693
15694         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15695         Rename this to mono_arch....
15696         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15697
15698         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15699
15700         * mini-amd64.c (emit_call): If both the caller and the callee is
15701         guaranteed to have 32 bit addresses, emit a normal call.
15702
15703         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15704
15705         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15706         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15707         method_ptr inside delegates.
15708
15709 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15710
15711         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15712         invalidated. Fixes #73001.
15713
15714         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15715
15716         * mini-x86.c: Only use stdcall for pinvokes on windows.
15717
15718 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15719
15720         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15721         * mini-x86.c: remove unreliable __thread var offset detection,
15722         use the correct accessors and enable by default.
15723
15724 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15725
15726         * mini.c (mono_jit_free_method): Fix memory leak.
15727
15728 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15729
15730         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15731
15732 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15733
15734         * cpu-amd64.md: Fix lengths of atomic opcodes.
15735
15736 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15737
15738         * driver.c: try to not imply using ICU is any good.
15739
15740 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15741
15742         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15743         functions as inline ops.
15744
15745         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15746         some Interlocked functions as inline ops.
15747
15748         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15749
15750         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15751
15752         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15753
15754         * mini.c: Add support for OP_NOT_TAKEN.
15755
15756         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15757         structures in registers for pinvoke wrappers.
15758
15759         * mini-amd64.c: Fix warnings.
15760
15761 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15762
15763         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15764
15765         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15766
15767         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15768         address instead of loading the address from it.
15769
15770         * mini-x86.c: Add support for returning small structs in registers
15771         on Win32. Fixes part of #70864.
15772         
15773 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15774
15775         * trace.c (get_token): Improve error checking.
15776
15777 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15778
15779         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15780
15781 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15782  
15783         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15784         it can be reused for MonoClass.
15785         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15786         _LINKDEMAND.
15787
15788 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15789
15790         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15791         instead of a MonoReflectionMethod. The method information wasn't used
15792         when displaying SecurityException details (but will be now).
15793
15794 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15795
15796         * Makefile.am : windows build fix.
15797
15798 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15799
15800         * iltests.il: Add new regression test.
15801
15802         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15803         #72522.
15804
15805 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15806  
15807         * mini.c: Moved linkdemand check into helper function check_linkdemand
15808         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15809         LDFTN, LDVIRTFTN).
15810
15811 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15812
15813         * declsec.c: Added statistics counter for different kinds of 
15814         LinkDemands.
15815         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15816         (and commented) declaration.
15817         * mini.c: Added statistics counter for security Demand code 
15818         generation. Added display of security statistics.
15819
15820 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15821
15822         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15823         Fix compilation errors under gcc-2.95.
15824
15825 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15826
15827         * mini.c, driver.c: Use the new jit trampoline hashtable
15828
15829 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15830
15831         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15832
15833 2005-02-11  Martin Baulig  <martin@ximian.com>
15834
15835         * debug-mini.c (mono_debug_close_method): Free the line number array.
15836
15837 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15838
15839         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15840         icalls.
15841
15842         * mini.h: Bump AOT file format version. 
15843
15844 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15845
15846         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15847         APTC and P/Invoke.
15848         * declsec.h: Added macros to get/set lazyly initialized security 
15849         informations about assemblies. Added new enum for different type of
15850         possible LinkDemand violation. Added function to check LinkDemands.
15851         * mini.h: Added a field to MonoCompile to hold any security violation
15852         detected when JITting a method (so it can be thrown later).
15853         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15854         and CEE_CALLVIRT. Added code to throw exception at the end of
15855         mini_method_compile (note: the exception is unhandled right now).
15856
15857 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15858
15859         * mini.c, jit-icalls.c: use the managed implementation of
15860         memset for initobj and memset, to avoid managed <-> unmanaged
15861         transitions.
15862
15863 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15864
15865         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15866         optimization if it would need a GOT var.
15867
15868         * basic.cs: Add tests for constant propagation and switch statements.
15869
15870         * ssa.c: Fix out-of-range constant propagation and switch statements.
15871
15872 2005-02-09    <vargaz@freemail.hu>
15873
15874         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15875
15876 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15877
15878         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15879
15880 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15881
15882         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15883
15884 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15885
15886         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15887         arithmetic operations.
15888
15889 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15890
15891         * mini-ppc.c: add a workaround for broken user code that
15892         DllImports vararg functions with non-vararg signatures.
15893
15894 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15895
15896         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15897         meaningfull error message for assemblies written in Managed C++.
15898
15899         * tramp-amd64.c mini-amd64.h: Add support for 
15900         create_trampoline_from_token ().
15901
15902         * aot.c mini-x86.c abcremoval.c: Applied patch from
15903         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15904
15905 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15906
15907         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15908         which takes a MonoImage/token as parameter instead of a MonoMethod.
15909
15910         * aot.c: Use the new trampoline for initializing vtables.
15911
15912         * aot.c: Add support for ldfld/stfld_remote wrappers.
15913
15914         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15915         rules for compare <MEM>, IMM.
15916
15917         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15918
15919         * aot.c: Handle inherited finalizers correctly.
15920
15921 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15922
15923         * inssel.brg (stmt): Add a missing _setup_... ().
15924
15925         * aot.c: Save some parts of the class state to the AOT file and use it
15926         to recompute that state when a class is initialized.
15927
15928         * mini.c: Install AOT hooks into the runtime.
15929
15930         * mini.h: Bump AOT file format version.
15931         
15932         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15933         Fixes #72148.
15934
15935         * iltests.il: Add new test.
15936
15937 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15938
15939         * mini.c: fix typo.
15940
15941 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15942
15943         * mini.c: setup the statistical profiler in the thread attach
15944         callback to cope with the new single thread code.
15945
15946 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15947
15948         * mini-ppc.c: ensure we have enough room for the profiler
15949         calls (fixed bug#72084).
15950
15951 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15952
15953         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15954         it.
15955
15956 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15957
15958         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15959
15960 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15961
15962         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15963         to succesfully execute parrotbench).
15964         * ssapre.h: Likewise.
15965
15966 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15967
15968         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15969         variable for stores to method arguments (fixes a SSAPRE issue).
15970
15971 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15972
15973         * mini.c: handle value types in dup, fixes gen-112.cs.
15974
15975 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15976
15977         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15978         sequence for calls in dynamic methods to avoid thunks.
15979
15980 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15981
15982         * mini.c: correctly remove dynamic methods from the hashtable.
15983
15984 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15985
15986         * driver.c: Disabled SSAPRE until fix the bug that appears
15987         in IronPython's parrotbench.
15988
15989 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15992
15993         * mini.c (mono_method_to_ir): Revert the previous change.
15994         
15995         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15996         when AOT compiling.
15997
15998         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15999         mono_jit_info_table_find () etc. when running under valgrind.
16000
16001         * inssel.brg: Fix warnings.
16002
16003         * mini-exceptions.c: Fix warnings.
16004
16005 2005-01-31  Martin Baulig  <martin@ximian.com>
16006
16007         * driver.c (compile_all_methods_thread_main): Don't try to compile
16008         generic methods or anything which has type parameters.
16009
16010 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16011
16012         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16013
16014         * TestDriver.cs: Add --verbose flags.
16015
16016         * graph.c ssa.c: Fix 64 bit warnings.
16017         
16018         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16019         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16020         Fix 64 bit warnings.
16021
16022         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16023         variable not spotted by gcc.
16024         
16025         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16026         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16027         X86_COMPARE_MEMBASE opcodes.
16028
16029         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16030
16031 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16032
16033         * *: MonoMethod->signature might be NULL now. You *MUST* use
16034         mono_method_signature.
16035
16036 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * driver.c (compile_all_methods_thread_main): Compile the methods
16039         without invoking cctors.
16040
16041 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16042
16043         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16044         * basic-calls.cs: test for the above.
16045
16046 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16047
16048         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16049         MonoJitInfo changes.
16050
16051 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16052
16053         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16054         eagerly if it contains dynamic methods.
16055         
16056         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16057
16058         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16059         trace, it is now computed by an icall from trace_ips.
16060         
16061         * mini-exceptions.c: Fix a warning.
16062
16063 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini-exceptions.c: don't bother getting stack trace info if
16066         it's not going to be used.
16067
16068 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16069
16070         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16071         ssapre-mini-ops.h.
16072
16073 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16076
16077         * aot.c: Avoid calling mono_method_get_header () if not needed.
16078
16079         * mini.h: Bump AOT file format version.
16080         
16081         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16082
16083         * mini.c (mono_print_tree): Print more info for calls.
16084
16085 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16086
16087         * declsec.h: Remove warning by adding missing include for marshal.h
16088
16089 2005-01-26  Martin Baulig  <martin@ximian.com>
16090
16091         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16092         `ip' twice.
16093
16094 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16095
16096         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16097         flags.
16098
16099         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16100
16101         * aot.c (mono_compile_assembly): Fix a warning.
16102
16103 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16104
16105         * declsec.c: Look for security attributes on the original MonoMethod 
16106         (and not the wrapped one). This fix permissions on icalls.
16107
16108 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16111
16112         * mini.c (mono_allocate_stack_slots): Add a fixme.
16113
16114         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16115
16116 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16117
16118         * inssel.brg: optimize casts of sealed types (more
16119         optimizations waiting for fixes in remoting).
16120
16121 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16122
16123         * inssel.brg (stmt): Add another dummy rule.
16124
16125         * driver.c: Fix warnings.
16126
16127         * driver.c (mono_main): If running under valgrind, instruct glib to use
16128         the system allocation functions so valgrind can track the memory
16129         allocated by the g_... functions.
16130
16131         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16132
16133         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16134
16135         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16136
16137         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16138         variables in try regions.
16139
16140         * mini.c (mini_method_compile): Don't disable optimizations on large
16141         methods when AOT compiling.
16142
16143         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16144         allocate stack slots. Not yet used.
16145
16146 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16147
16148         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16149
16150 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16151
16152         * mini-ppc.c: make the branch info relative as the code
16153         buffer can be reallocated.
16154
16155 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16156
16157         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16158         * driver.c: Removed the AOT/security restriction. Now initialize the
16159         security manager (in metadata) if --security is used.
16160         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16161         rather than the pointer to declarative security, when AOT is used.
16162
16163 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16164
16165         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16166         basic blocks, reduced intrinsic exception throwing code size.
16167
16168 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16169
16170         * driver.c (mini_usage): Reorder the usage screen.
16171
16172 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16173
16174         * mini.c (mono_resolve_patch_target): Fix warning.
16175
16176 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16177
16178         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16179         previous patch.
16180
16181         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16182
16183         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16184         breaks the amd64 build.
16185
16186         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16187         register allocation. Fixes #71454.
16188
16189         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16190
16191         * arrays.cs: Add new regression test.   
16192
16193 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16194
16195         * ssapre.c: Turned usage of snprintf to GString.
16196         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16197         (I left it on by mistake in my previous commit).
16198
16199 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16200
16201         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16202         on cond branch optimization (fixes bug# 71515).
16203
16204 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16205
16206         * abcremoval.c: Fixed bug 71062.
16207         * abcremoval.h: Likewise.
16208
16209 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16210
16211         * mini.c: Added a new functionality to optimize_branches, the removal
16212         of useless basic blocks, and fixed some problem in the removal of
16213         critical edges; some utility functions added for both purposes.
16214         * ssapre.c: Added complex expression support, and fixed bug 70637.
16215         * ssapre.h: Likewise.
16216         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
16217         enabled in SSAPRE.
16218         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16219         * driver.c: Re-enabled SSAPRE.
16220
16221 2005-01-19  Martin Baulig  <martin@ximian.com>
16222
16223         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
16224         the result of mono_get_method_constrained().
16225
16226 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
16227
16228         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
16229         manager.
16230
16231 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
16232
16233         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
16234         be detected.  Fixes #59296.
16235
16236 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16237
16238         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16239         which can happen. Fixes #71361.
16240
16241 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16242
16243         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16244         manager.
16245
16246 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16247
16248         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16249         appdomain-unload.exe to fail.
16250         
16251         * mini.c: Fix some memory leaks.
16252
16253 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16254
16255         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16256         Fixed bug and sped up some codepaths.
16257
16258 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16259
16260         * mini.c: Fix some memory leaks.
16261
16262         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16263         conversion.
16264
16265         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16266
16267         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16268         #71320.
16269
16270         * iltests.il: Add regression test for #71320.
16271
16272 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16273
16274         * mini.c (mono_codegen): Fix installation of profiler hooks.
16275
16276         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16277
16278 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16279
16280         * mini.h, mini.c, cfold.c: optimize access to enum
16281         readonly fields, too. Eval conditional branches if possible
16282         to perform unreachable code removal in more cases.
16283
16284 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16287
16288         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16289         code manager.
16290
16291         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16292         WinXP DEP. Fixes #71244.
16293
16294 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16295
16296         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16297
16298 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16299
16300         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16301
16302 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16303
16304         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16305         changes.
16306
16307         * mini.h: Bump AOT version.
16308
16309         * mini.h (MonoCompile): Change exvar to a hash table.
16310
16311         * mini.c: Allocate a separate exvar for each handler block.
16312
16313         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16314
16315         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16316         ex var with the pending exception and only throw if the two are equal.
16317         Fixes #68552.
16318         
16319         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16320
16321         * mini-x86.c: Fix warnings.
16322
16323         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16324         used by all the ports now.
16325
16326         * aot.c: Add write-symbols and save-temps options.
16327
16328 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16329
16330         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16331
16332 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16333
16334         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16335         operations.
16336
16337         * tramp-s390.c: Check vtable slot belongs to the domain.
16338
16339         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16340         as per other platforms.
16341
16342         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16343
16344 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16345
16346         * driver.c: we don't run the Main() code in a subthread anymore.
16347
16348 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16349
16350         * mini.c: added experimental rtc support in the statistical
16351         profiler: if the user has the permission, more accurate statistics
16352         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16353         The MONO_RTC value must be restricted to what the linux rtc allows:
16354         power of two from 64 to 8192 Hz.
16355
16356 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16357
16358         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16359
16360 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16361
16362         * mini-ppc.c: better icache flush for smp.
16363
16364 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16365
16366         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16367
16368         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16369         amd64 port, not yet used.
16370
16371 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16372
16373         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16374         a struct type.
16375
16376 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16377
16378         * driver.c: Added --security option to activate the security manager.
16379         Right now this will allow code generation for declarative demands and
16380         is disabled when AOT is specified.
16381         * mini.c: Add code generation for declarative security demands.
16382         * mini.h: Add mono_use_security_manager as an extern gboolean.
16383
16384 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16385
16386         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16387         emitting more dense assembly code.
16388
16389         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16390         exception throwing stuff.
16391
16392 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16393
16394         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16395         dead code.
16396
16397         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16398         left in by mistake.
16399
16400         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16401         fixed.
16402
16403         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16404
16405         * tramp-*.c: Only patch vtable slots if the object is in the current
16406         domain. Fixes appdomain-unload.exe.
16407
16408         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16409         
16410         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16411         x86 branch.
16412
16413 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16414
16415         * mini.c (reverse_branch_op): New helper function.
16416
16417         * mini.c (optimize_branches): Run the new optimization only on 
16418         platforms which support it. Also reverse all kinds of branches.
16419
16420         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16421
16422         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16423         a throw statement.
16424
16425         * mini.c (optimize_branches): Reverse not-equals branches if the false
16426         bblock is a throw. This happens a lot of time with argument checking in
16427         corlib.
16428
16429         * mini.c (mono_codegen): Add support for placing basic blocks after
16430         the function epilogue.
16431
16432         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16433         function epilogue.
16434         
16435 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16436
16437         * mini.c (setup_stat_profiler): Only set this up if the platform
16438         supports ITIMER_PROF.
16439
16440 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16441
16442         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16443         previous patch.
16444
16445         * inssel.brg: Fix a warning.
16446
16447 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16448
16449         * mini.c: added support for statistical profiler 
16450         (run with: --profile=default:stat).
16451
16452 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16455
16456         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16457
16458         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16459         related to global registers from the amd64 port.
16460
16461 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16464
16465         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16466         with global registers.
16467         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16468
16469         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16470
16471 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16472
16473         * debug-mini.c (encode_value): Fix off-by-one.
16474
16475         * aot.c (encode_value): Likewise.
16476
16477         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16478
16479 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16480
16481         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16482         AOT.
16483
16484         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16485         
16486         * aot.c (emit_method_info): Increase size of temp buffer.
16487
16488         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16489         the AOT case.
16490
16491 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16492
16493         * aot.c (emit_method_info): Fix build.
16494         
16495         * aot.c: Further rework of the AOT file format to reduce the size of
16496         the method info data.
16497
16498         * mini.h: Bump AOT file format version.
16499
16500 2004-12-27  Martin Baulig  <martin@ximian.com>
16501
16502         * mini.c (mini_get_method): New static method; call
16503         mono_get_method_full() and mono_get_inflated_method().
16504         (mono_method_to_ir): Use mini_get_method() instead of
16505         mono_get_method_full(). 
16506
16507 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16508
16509         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16510
16511 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16512
16513         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16514
16515         * inssel-amd64.brg: Add some optimization rules.
16516
16517 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16518
16519         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16520         standard not GC'd stuff is fine.
16521
16522 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16523
16524         * aot.c: Rework the AOT file format to get rid of most of the global
16525         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16526
16527         * mini.h: Bump AOT file format version.
16528         
16529 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * mini.h: Bump AOT file format version.
16532
16533         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16534         address is inside a GOT.
16535
16536         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16537
16538         * cpu-pentium.md: Increase the maximum size of some instructions which
16539         might involve a got access.
16540         
16541         * mini.c (get_method_from_ip): Another debug helper function.
16542
16543         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16544         when got var accesses are created during the decompose phase.
16545
16546         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16547
16548         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16549         argument mini_compile_method and to MonoCompile, and use this to
16550         determine whenever a given method is compiled for AOT. This allows the
16551         other methods compiled during AOT compilation to be free of AOT stuff,
16552         so the backends does not need to add special support for them by
16553         creating a fake GOT etc.
16554
16555         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16556         longer needed.
16557
16558 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16559
16560         * mini.c (mono_method_to_ir): It turns out that some of the
16561         x-appdomain wrappers are lax with types, so just ignore this for
16562         all wrappers.
16563
16564         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16565         at the vtable->klass. If it is non-shared code we can just use the
16566         vtable.
16567
16568 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16569
16570         * mini-ppc.c: access MonoDomain from tls, too.
16571
16572 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16573
16574         * declsec.c: Removed unused variable (and related warning ;-)
16575
16576 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16577
16578         * iltests.il: New test for LDELEMA on an array of ref types.
16579
16580         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16581         all ldelema's on reftypes.
16582         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16583         it was the wrong place to put it.
16584
16585         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16586         register to pop to make this cleaner, at the request of Paolo.
16587
16588 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16589
16590         * mini-ops.h (OP_GETHASHCODE): New op.
16591
16592         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16593
16594         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16595         operation.
16596
16597         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16598         by 25%.
16599         
16600         * mini-x86.c (mono_arch_output_basic_block): Rather than
16601
16602         add ebp, 4
16603
16604         Emit
16605
16606         pop edx
16607
16608         The first is 3 bytes while the second is 1. This saves 36 kb on
16609         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16610         see a small boost because of icache locality.
16611
16612         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16613
16614 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16615
16616         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16617         started code sharing with the generic code.
16618
16619 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16620
16621         * mini-ppc.c, cpu-g4.md: added code for direct access to
16622         tls data slots.
16623
16624 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16625
16626         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16627          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16628         to OP_TLS_GET.
16629
16630 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16631
16632         * declsec.c|h: Added functions to cache the declarative stack modifiers
16633         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16634         structure.
16635         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16636         created. Register internal calls for System.Security.SecurityFrame::
16637         _GetSecurityFrame and _GetSecurityStack.
16638         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16639         the definitions for the new stack walk/callback mechanism.
16640         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16641         first security frame for LinkDemands and InheritanceDemands) and
16642         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16643         from lupus.
16644         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16645         walk initialization (lupus).
16646
16647 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16648
16649         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16650         idiom.
16651         (handle_loaded_temps): Do not create a temporary variable for
16652         things that we know are temps. They will never be modified.
16653         (mono_spill_call): Set MONO_INST_IS_TEMP
16654         (mono_emulate_opcode): ditto
16655         (emit_tree): ditto
16656         (mono_method_to_ir.CEE_DUP): ditto
16657
16658 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16659
16660         * mini.c (type_to_eval_stack_type): Make this handle the void type
16661         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16662         (emit_tree): use ip_in_bb to special case some common idioms
16663         Update all callers to pass in the IP.
16664         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16665
16666         This gives us a nice 2% speedup in mcs bootstrap.
16667
16668         * mini-x86.c (peephole_pass): Peephole pass to make
16669         mov  [foo], eax
16670         push [foo]
16671
16672         into
16673
16674         mov [foo], eax
16675         push eax
16676
16677         * mini.c (ip_in_bb): new method.
16678         (mono_method_to_ir): use this method rather than doing the hash
16679         lookup ourselves.
16680
16681         * linear-scan.c (mono_linear_scan): When expiring actives, you
16682         don't need to keep around variables that expire on this
16683         instruction. This makes it so that:
16684              a = b + 1
16685         will turn into:
16686              store (ebx add (ebx, 1))
16687         which will become
16688              add ebx, 1
16689
16690 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16691
16692         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16693         combination to avoid doing two copies. Fix up problems with previous
16694         patch.
16695
16696         * mini.c: Fix 64 bit warnings.
16697
16698         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16699
16700 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16701
16702         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16703         changes from the x86 code.
16704
16705         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16706
16707 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16708
16709         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16710         throwing code to reduce its size, unify the AOT and non-aot code and 
16711         get rid of relocations in the AOT case.
16712
16713         * mini-x86.h mini.c exceptions-x86.c 
16714         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16715         raise corlib exceptions which doesn't require relocations in the 
16716         caller.
16717
16718         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16719
16720 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16721
16722         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16723         needed.
16724
16725         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16726         in the AOT case.
16727
16728 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16729
16730         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16731         with add function when used from Inc/dec atomic 
16732         functions. Re-enabled optimization on x86.
16733         * mini-ops.h: renamed atomic_add functions to
16734         allow _add to match the Interlocked::Add and
16735         _add_next to match Interlocked::Inc/Dec.
16736
16737 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16738
16739         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16740         linking of BBs to the end BB, and enabled SSAPRE also with
16741         consprop and copyprop (which was prevented by that bug).
16742
16743 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16744
16745         * mini-x86.c: disabling the Interlocked optimizing code. 
16746
16747 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16748
16749         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16750         file version check.
16751         
16752 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16753
16754         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16755         interlocked optimization due lack of support on x86, rewrote 
16756         exchange to take into account that base may be in eax.
16757         
16758         xsp works again; activated Interlocked optimizing code.
16759         
16760 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16761
16762         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16763
16764 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16765
16766         * mini-ops.h: Add new opcodes.
16767
16768         * mini.h: Add new patch types. Add got_var to MonoCompile.
16769
16770         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16771         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16772         make it work with all kinds of patchable code.
16773
16774         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16775         address of the GOT, and referencing entries in the GOT.
16776
16777         * mini.c: Add code to load the GOT address if needed by an opcode.
16778
16779         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16780         independent AOT code on the x86 using an elf-style Global Offset Table.
16781
16782 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16783
16784         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16785
16786 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16787
16788         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16789         when running xsp.
16790
16791 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16792
16793         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16794         of Interlocked:Increment/Decrement/Add as inline ops.
16795         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16796
16797 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16798
16799         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16800         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16801
16802 2004-12-12  Duncan Mak  <duncan@ximian.com>
16803
16804         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16805         again. `patch_info->table_size' is no longer valid after Zoltan's
16806         commit #37636.
16807
16808 2004-12-12  Martin Baulig  <martin@ximian.com>
16809
16810         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16811         if we are the "real" method, ie. not an inlined method inside it.
16812
16813 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16814
16815         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16816         before we look in the special fields table. This fixes
16817         ../tests/thread-static-init.cs.
16818
16819 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16820
16821         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16822         for Array get_Rank and get_Length. Fixes bug #70465.
16823
16824 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16827         separate structure to reduce the size of MonoJumpInfo.
16828
16829 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16830
16831         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16832
16833 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16834
16835         * mini.c (mini_get_inst_for_method): Changed to allow ports
16836         to return a MonoInst instead of opcode 
16837         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16838         
16839         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16840         Allow ports to return a created MonoInst instead of op-code, will enable
16841         new optimizations.
16842         (renamed mini_get_opcode_for_method to better reflected the functionality)
16843
16844 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16847
16848 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16849
16850         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16851         Fixes #69985.
16852
16853 2004-12-08  Martin Baulig  <martin@ximian.com>
16854
16855         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16856         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16857
16858 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16859
16860         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16861         correctly.
16862
16863         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16864         arithmetic.
16865
16866 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16867
16868         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16869
16870 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16873         bug introduced by the previous patch.
16874
16875 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16876
16877         * mini-ppc.c, objectc.cs: handle large structs passed by value
16878         (fixes bug #69972).
16879
16880 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16881
16882         * mini-ppc.c: OP_ARGLIST implementation from
16883         Geoff Norton  <gnorton@customerdna.com>.
16884
16885 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16886
16887         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16888         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16889
16890 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16891
16892         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16893
16894 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16895
16896         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16897         support.
16898
16899 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16900
16901         * mini-sparc.c: Zero out localled-ed memory.
16902
16903         * iltests.il: Add tests for zeroing out localloc-ed memory.
16904
16905 2004-12-04  Martin Baulig  <martin@ximian.com>
16906
16907         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16908         mono_method_get_signature_full().       
16909
16910 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16911
16912         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16913         and some utility functions (always for SSAPRE), integrated SSAPRE.
16914         * mini.h: Likewise.
16915         * driver.c: Added ssapre option.
16916         * ssa.c: Small fix on OP_ARG handling.
16917         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16918         * Makefile.am: Likewise.
16919
16920 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16921
16922         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16923         now in the xp code.
16924
16925         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16926         icall.
16927
16928 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16929
16930         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16931         
16932         * cpu-s390.md : Increase instruction length of oparglist.
16933
16934         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16935
16936 2004-11-30  Martin Baulig  <martin@ximian.com>
16937
16938         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16939         virtual generic methods.  We call a special helper_compile_generic_method()
16940         icall to retrieve the method from the vtable, inflate and compile
16941         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16942
16943         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16944
16945 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16946
16947         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16948
16949 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16950
16951         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16952         Fixes #69929.
16953
16954 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16955
16956         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16957         platforms with PIC aot.
16958
16959 2004-11-28  Martin Baulig  <martin@ximian.com>
16960
16961         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16962         Fixes gen-112.cs.
16963
16964 2004-11-28  Martin Baulig  <martin@ximian.com>
16965
16966         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16967         the result of mono_type_get_underlying_type() to check whether
16968         we're byref.
16969
16970 2004-11-26  Martin Baulig  <martin@ximian.com>
16971
16972         * mini.c
16973         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16974         in the g_assert().
16975
16976 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16979         the same way as the other arguments so they won't get clobbered.
16980
16981         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16982         calls through R11 since it is clobbered by the trampoline code.
16983
16984 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16985
16986         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16987         pick up in-tree mscorlib.dll.
16988
16989 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16990
16991         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16992
16993         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16994         runtime data/code are now stored in a table similar to the GOT in ELF. 
16995         This allows the code itself to be position independent.
16996
16997         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16998         loading changes.
16999
17000         * aot.c: Attach ELF type (object/function) directives to all global
17001         symbols.
17002
17003         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17004
17005         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17006
17007         * mini-amd64.h: Turn on PIC AOT code.
17008
17009         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17010         returning the offset within an OP_AOTCONST instruction where the GOT
17011         offset needs to be added.
17012
17013         * mini.h: Bump AOT file format version.
17014
17015 2004-11-25  Martin Baulig  <martin@ximian.com>
17016
17017         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17018         uninflated generic methods.
17019
17020 2004-11-25  Martin Baulig  <martin@ximian.com>
17021
17022         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17023
17024 2004-11-24  Martin Baulig  <martin@ximian.com>
17025
17026         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17027         original klass (this only applies for generic instances).
17028
17029 2004-11-24  Martin Baulig  <martin@ximian.com>
17030
17031         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17032         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17033         that array).
17034
17035 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17036
17037         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17038         localloc. Fixes #69678.
17039
17040         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17041         
17042 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17043
17044         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17045         used SSE registers on pinvoke calls. Fixes #69774.
17046
17047 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17048
17049         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17050         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17051
17052 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17053
17054         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17055         Refer directly to the mcs/ tree.
17056
17057 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17058
17059         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17060         Check if a trampoline for a synchronized method is required. 
17061
17062 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17063
17064         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17065         with localloc if needed. Throe arithmetric exception in
17066         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17067         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17068
17069 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17070
17071         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17072         types before switching on type.  Fixes #69622.
17073
17074 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17075
17076         * Makefile.am (check-local): New.  Integrate into 'make check'.
17077         (MCS,RUNTIME): Define using in-tree mono and mcs.
17078         (ILASM): New.
17079         (%.exe): Use $(ILASM).
17080
17081 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17082
17083         * mini-ppc.c: adjust initial prolog size (bug #69691).
17084
17085 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17086
17087         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17088         #69664.
17089
17090 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17091
17092         * Makefile.am (clean-local): Rename from 'clean'.
17093
17094 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17095
17096         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17097         to mono_arch_is_int_overflow. 
17098         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17099         SIGFPE events.
17100
17101 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17102
17103         * declsec.c|h: New files to support declarative security attributes.
17104         Added function to check if a method has (applicable) security.
17105         * mini.c|h: Add check for declarative security attributes in
17106         mono_method_check_inlining.
17107         * Makefile.am: Added declsec.c and declsec.h to the build.
17108
17109 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17110
17111         * mini.c, mini.h: update to keep dynamic code info per-domain.
17112
17113 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17116         (mini_init): Get rid of it from here too.
17117
17118 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17119
17120         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17121         implemented OP_RETHROW (patch by Geoff Norton
17122         <gnorton@customerdna.com>).
17123
17124 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17125
17126         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17127         between appdomains.  Fixes appdomain-unload on PPC.
17128
17129 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17130
17131         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17132         mini-exceptions.c: handle the new wrapper types.
17133         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17134         token value as a MonoClass* when compiling a wrapper.
17135         mono_jit_create_remoting_trampoline now takes an additional
17136         MonoRemotingTarget parameter.
17137         
17138 2004-11-10  Martin Baulig  <martin@localhost>
17139
17140         * mini.c (mono_method_to_ir): Use `generic_container->context'
17141         rather than creating a new one.
17142
17143 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17144
17145         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17146
17147         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17148
17149 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17150
17151         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17152         the experimental aot cache stuff.
17153
17154 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17155
17156         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17157         mini-exceptions.c: update to exception clause structure changes.
17158
17159 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17160
17161         * exceptions-x86.c (throw_exception): Fix warnings.
17162
17163         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17164         for OP_RETHROW.
17165
17166 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17167
17168         * exceptions-sparc.c (get_throw_exception): Really fix this.
17169
17170 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17171
17172         * tramp-*.c: we no longer support icalls without wrappers, so
17173         a bit of code can be removed here
17174
17175 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17176
17177         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17178         patch.
17179
17180         * cpu-sparc.md: Add op_rethrow.
17181
17182         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17183
17184         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17185
17186         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17187         * mini-ops.h: Add OP_RETHROW.
17188
17189         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17190
17191         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17192
17193 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17194         
17195         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17196         Makes the output much easier to read
17197
17198 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17199
17200         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17201         prevents another huge leak when compiling with ssa. Secondly, the
17202         performance of doing this rather than freeing the lists is much
17203         better. GList does a lock every time you allocate a list link,
17204         so that it can use a memory pool. So, it is better to just use
17205         a memory pool of our own.
17206         
17207         * ssa.c, linear-scan.c: replace g_list_remove_link with
17208         g_list_delete.  The remove one does not free the GList, so we were
17209         leaking memory. On -O=all --compile-all with corlib, this cut down
17210         3 MB of allocations.
17211
17212 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17213
17214         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17215
17216         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
17217
17218         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
17219         into a new function mono_create_jit_trampoline ().
17220
17221 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17222
17223         * trace.c (get_spec): Allow tracing of classes without a namespace.
17224
17225 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
17226
17227         * mini.c: Fix pointer overwrite in mini_method_compile.
17228
17229 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
17230
17231         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
17232         The darwin ABI needs some special handling for 1 and 2 byte structs
17233         Lets use lbz/lhz instead of lwz everywhere.
17234         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
17235         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
17236         Use stb/sth for the former, and put the latter always on stack instead of in
17237         argument registers.
17238
17239 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17240
17241         * trace.c (is_filenamechar): Add '_'.
17242
17243 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17244
17245         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17246
17247         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17248
17249 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17250
17251         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17252         depends on libmonogc. Fixes #68805.
17253
17254 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17255
17256         * mini.c (mono_jit_free_method): Provide extra information for
17257         this error.  Currently this leaks, but will be turned into a
17258         developer option in the future.
17259
17260 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17263
17264 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17267         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17268         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17269
17270 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17271
17272         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17273         trampolines for AOT code.
17274
17275 2004-10-22    <vargaz@freemail.hu>
17276
17277         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17278         constructed types. Fixes #68136.
17279
17280 2004-10-21  Martin Baulig  <martin@ximian.com>
17281
17282         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17283         if it returns true, unwind the stack to the call instruction.
17284
17285 2004-10-21    <vargaz@freemail.hu>
17286
17287         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17288
17289         * mini.h: Bump AOT version number.
17290
17291         * objects.cs: Add another test for unbox trampolines.
17292
17293         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17294         valuetype methods.
17295
17296 2004-10-20    <vargaz@freemail.hu>
17297
17298         * driver.c: Add SHARED to the set of optimizations tested.
17299
17300         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17301
17302         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17303         used by CEE_NEWARR.
17304
17305         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17306
17307 2004-10-20  Martin Baulig  <martin@ximian.com>
17308
17309         * mini-exceptions.c (mono_handle_exception): Call
17310         mono_debugger_handle_exception() to tell the debugger about
17311         catch/finally clauses.
17312
17313 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17314
17315         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17316
17317         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17318         #68447.
17319
17320 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17321
17322         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17323         methods as their native size, fixed bug #57543, #57545.
17324         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17325         This saves a temporary register and mullw call down into 1 (minor perf
17326         increase for cases like sum = sum * 5;  This use to translate into:
17327             li r11,5
17328             mullw r28,r28,r11
17329         It now translates to
17330             mulli r28,r28,5
17331
17332 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17333
17334         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17335         #68388.
17336
17337 2004-10-11  Martin Baulig  <martin@ximian.com>
17338
17339         * mini.c (mono_method_to_ir): If we're a generic method, get the
17340         MonoGenericContainer from our MonoMethodNormal and create a
17341         MonoGenericContext from it.
17342
17343 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17346
17347         * basic-long.cs: Add test for checked i8->i2 cast.
17348
17349 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17350
17351         * inssel-ppc.brg: added a couple of speedup rules.
17352
17353 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17354
17355         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17356         to speed up rebuilds.
17357
17358 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17359
17360         * mini-s390.c: Minor fix to OP_OR_IMM.
17361
17362 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17363
17364         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17365         better. Fixes appdomain-unload.exe on sparc.
17366
17367 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17368
17369         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17370         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17371         see bug 67324.
17372
17373 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17376
17377 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17378
17379         * mini.c: Always generate a field read/write wrapper for members
17380         of the class MarshalByRefObject since the actual instance could
17381         be a CBO.
17382
17383 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17384
17385         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17386
17387 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17388
17389         * driver.c mini.h trace.c: Move the setting of the main assembly into
17390         a separate function called mono_trace_set_assembly () and call it after
17391         actually loading the main assembly. Fixes #66872.
17392
17393 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17394
17395         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17396         using the code manager.
17397
17398 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17401
17402 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17403
17404         * cpu-amd64.md: Fix bug in previous patch.
17405         
17406         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17407         #66650.
17408
17409 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17410
17411         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17412         mini-exceptions.c: updates for changed stack walk interface.
17413
17414 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17415
17416         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17417
17418 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17421
17422 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17423
17424         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17425         since assemblies can't be unloaded.
17426         
17427 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17428
17429         * cpu-amd64.md: Fix more instruction lengths.
17430
17431         * cpu-amd64.md: Fix lengths of some instructions.
17432
17433 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17434
17435         * inssel.brg: Make the array ldelema check aot friendly.
17436
17437 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17438
17439         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17440
17441         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17442
17443 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17444
17445         * mini-x86.c: Fix build.
17446
17447         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17448         mono_type_get_underlying_type () helper function to simplify code.
17449         
17450 2004-09-09  Martin Baulig  <martin@ximian.com>
17451
17452         * mini-amd64.c: Don't access `type->data.klass' directly, call
17453         mono_class_from_mono_type() instead since the type may be a
17454         generic instance.
17455
17456 2004-09-09  Martin Baulig  <martin@ximian.com>
17457
17458         * mini-amd64.c (get_call_info): Fix support for generic instances.
17459         (add_valuetype): Use mono_class_from_mono_type() to get the class
17460         since we can be a generic instance.
17461
17462 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17463
17464         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17465
17466 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17467
17468         * liveness.c: reset spill costs on each scan: bug 62107
17469
17470 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17471
17472         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17473         unnecessary line that doesn't compile
17474
17475 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17476
17477         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17478         trampolines, make them call an error function so people can fix their
17479         code.
17480
17481 2004-09-06  Martin Baulig  <martin@ximian.com>
17482
17483         * mini.c (mono_method_to_ir): When initializing locals, handle a
17484         generic instances like a valuetype if it's a valuetype and like a
17485         class if it's a class.
17486
17487 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17488
17489         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17490         stack. Fixes #64674.
17491
17492         * exceptions.cs: Add test for unwinding of call arguments.
17493
17494 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17495
17496         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17497         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17498         set the carry/borrow flag). The sparc and s390 implementations
17499         can now use optimized versions (and simplify the code). ppc bugfixes.
17500
17501 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17504
17505 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17506
17507         * inssel-amd64.brg: Remove leftover 32 bit rule.
17508
17509         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17510
17511 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17512
17513         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17514         mono_arch_find_jit_info functions into a new function. Fix a memory
17515         leak.
17516
17517         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17518         refactored code.
17519         
17520 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17523         as well.
17524         
17525         * exceptions.cs: Add array size tests.
17526
17527         * mini.c: Allocate a separate icall wrapper for each arity of 
17528         mono_array_new_va. Fixes #59509.
17529
17530         * exceptions.cs: Add testcase for 64578.
17531
17532         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17533
17534         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17535         
17536 2004-09-02  Martin Baulig  <martin@ximian.com>
17537
17538         * mini.c (mono_method_to_ir): When initializing the locals, call
17539         handle_initobj() on the generic instance itself, not its
17540         underlying type.
17541
17542 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17543
17544         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17545         MonoJitInfo for dynamic methods.
17546
17547         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17548
17549         * mini.c: Add support for freeing JIT data for dynamic methods.
17550         
17551 2004-09-01  Martin Baulig  <martin@ximian.com>
17552
17553         * mini-x86.c (is_regsize_var): Added support for generic
17554         instances.
17555         (mono_arch_emit_prolog): Make this compile again, use
17556         `x86_push_imm_template (code)'.
17557
17558 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17559
17560         * mini-x86.c: make all push_imm instructions that get
17561         patched always emit the long form
17562
17563 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17564
17565         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17566         in a per-domain hash.
17567
17568         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17569         types.
17570
17571 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17572
17573         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17574         work.
17575         
17576         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17577         work.
17578
17579         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17580         Beginnings of SSE2 support.
17581
17582         * exceptions.cs: Add more tests for checked int<->uint casts.
17583
17584 2004-08-28  Martin Baulig  <martin@ximian.com>
17585
17586         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17587         generic instances.
17588
17589         * mini.c
17590         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17591         Handle generic instances recursively.
17592
17593 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17594
17595         * iltests.il: test for conv.u8 on a constant
17596
17597 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17598
17599         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17600         LCONV_x4 (shrun_32 (membase)).
17601
17602 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17603
17604         * inssel-x86.brg: c&p rules for push/setret of long
17605
17606 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17607
17608         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17609         compare (regvar, base)
17610
17611         * inssel-x86.brg: more burg love
17612
17613         * inssel.brg: more cleanup
17614
17615         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17616
17617 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17618
17619         * basic-long.cs, basic-calls.cs: new tests for optimization.
17620
17621 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17622
17623         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17624         patch.
17625
17626 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17627
17628         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17629         
17630 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17631
17632         * inssel.brg (mini_emit_memcpy): use 
17633         NO_UNALIGNED_ACCESS to disable memcpy optimization
17634
17635 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17636
17637         * mini-amd64.c: Handle generic types in various places.
17638
17639         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17640
17641 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17642
17643         * mini.c (handle_box): Fix warning.
17644
17645         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17646
17647         * mini-amd64.h: Enable the emit_state optimization.
17648
17649         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17650
17651         * mini-amd64.c: Add some new 64 bit peephole opts.
17652
17653         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17654
17655         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17656
17657         * mini-amd64.c: Register allocator fixes.
17658
17659         * mini.c: Add an optimization to emit_state to avoid allocation of new
17660         registers on some platforms.
17661
17662 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17663
17664         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17665
17666         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17667         allocation. Fixes #63085.
17668
17669         * basic-long.cs: Add new regression test.
17670
17671         * mini-amd64.c: Register allocator improvements.
17672
17673 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini-amd64.c (read_tls_offset_from_method): Add another code
17676         sequence.
17677
17678         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17679         instruction sequence for nullifying class init trampolines.
17680
17681         * objects.cs: Add new regalloc test.
17682
17683         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17684
17685 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17688         
17689         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17690         arguments.
17691
17692         * driver.c: Fix profiling after TLS changes.
17693         
17694         * driver.c (mono_main): Set mono_stats.enabled if needed.
17695
17696         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17697         CEE_BOX.
17698
17699 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17700
17701         * mini-x86.c: use a 1 op rather than a 2 op tls access
17702         instruction -> faster.
17703
17704 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17707         x86 backend.
17708
17709 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17710
17711         * exceptions-sparc.c (throw_exception): fix typo
17712
17713 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17714
17715         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17716         set tree->dreg correctly with tls. Allow any
17717         register to be used.
17718
17719         * mini-x86.c (read_tls_offset_from_method): add new code
17720         generation pattern seen with GCC.
17721
17722
17723 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17724
17725         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17726         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17727         exceptions-sparc.c: fix some performance issues in exception
17728         handling and setting of the stack trace for exceptions that were
17729         already thrown.
17730
17731 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17732
17733         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17734         x86 backend.
17735         
17736         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17737         registers.
17738
17739 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17740
17741         This patch inlines tls access, when possible.
17742         
17743         * mini.h: new arch functions for TLS intrinsics.
17744         All platforms updated with a stub.
17745
17746         * mini.c: use the new intrinsics
17747
17748         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17749         arch specific intrinsic for tls variables
17750
17751 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17752
17753         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17754         under windows.
17755
17756 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17757
17758         * mini.c: thread local allocation
17759
17760 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17763
17764         * Makefile.am: Link against the static version of libmonogc.
17765         
17766         * Makefile.am: Link the static versions of the convenience libraries
17767         into the mono executable.
17768
17769         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17770
17771 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17772
17773         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17774         on integer overflow.
17775
17776         * mini-amd64.c: Reorganize function call code.
17777
17778         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17779
17780 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17781
17782         * inssel-x86.brg: use xor eax,eax.
17783         
17784         * basic.cs: new tests
17785
17786 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17789         in exception throwing code.
17790         
17791 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17792
17793         * inssel-x86.brg: use xor esi,esi.
17794
17795 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17796
17797         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17798         can trace methods compiled during mini_init () too.
17799
17800         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17801         CEE_CONV_U4.
17802
17803 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17804
17805         * Makefile.am: static link on x86 (r=zoltan)
17806
17807 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17810         code since it causes some programs to fail.
17811
17812 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17815
17816 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17817
17818         * mini.c: ovfops_op_map - add STACK_OBJ case for
17819         CONV_I 
17820         * basic.cs: add test_0_pin_string as test
17821         case for above.
17822
17823 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17824
17825         * Makefile.am: build C# if srcdir != builddir
17826
17827 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17828
17829         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17830         fall-through blocks.
17831
17832 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17833
17834         * driver.c: enable loop by default again and include abcrem in -O=all.
17835
17836 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17837
17838         * iltests.il: Add some localloc tests.
17839
17840         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17841
17842         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17843         Fixes #62574.
17844
17845         * inssel-amd64.brg: Add some optimizations.
17846
17847         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17848         for gcc-3.4.
17849
17850         * Makefile.am: Statically link mono against libmono on AMD64.
17851         
17852         * mini-amd64.c inssel-amd64.brg: Optimizations.
17853
17854 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17855
17856         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17857
17858         * tramp-amd64.c: Patch calling code in trampolines.
17859
17860 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17861
17862         * mini-amd64.c: pinvoke struct passing fixes.
17863
17864 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17865
17866         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17867         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17868
17869 2004-08-05  Duncan Mak  <duncan@ximian.com>
17870
17871         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17872         CEE_LDELEM_ANY.
17873
17874 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17875
17876         * mini-amd64.c (emit_move_return_value): Move return value for normal
17877         calls too.
17878
17879 2004-08-05  Martin Baulig  <martin@ximian.com>
17880
17881         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17882         `type->type'; just modify `type' itself when dealing with enums
17883         and generic instances.
17884         (check_call_signature): Make `simple_type' a `MonoType *'.
17885
17886 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17887
17888         * mini.c: Use OP_PADD to add offsets to addresses.
17889
17890         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17891
17892 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17893
17894         * mini-sparc.c (mono_arch_emit_epilog): fix check
17895         for folding last op into restore instruction
17896
17897 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17900         helper methods using the code manager.
17901         
17902         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17903
17904         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17905
17906 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17907         
17908         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17909           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17910
17911         * mini-s390.c: fix tail processing
17912
17913 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17914
17915         * mini-ppc.c: mul.ovf.un exception name fix.
17916
17917 2004-08-03  Martin Baulig  <martin@ximian.com>
17918
17919         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17920         instances; before jumping to `handle_enum', also modify `ptype'.
17921
17922 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17923
17924         * cpu-sparc.md: fcall maximal length too small.
17925
17926 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini-amd64.c mini.h: Add initial support for passing/returning 
17929         structures to/from pinvoked methods.
17930
17931 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17932
17933         * mini-ppc.c: reg allocator fix.
17934
17935 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17936
17937         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17938
17939         * inssel.brg: Optimize memset on 64 bit machines.
17940
17941         * mini-amd64.c: Fix some vararg cases.
17942
17943 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17944
17945         * mini-s390.c: Corrected macro in emit_float_to_int
17946
17947         * s390-abi.cs: Tests to exercise the s390 ABI
17948
17949 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17950
17951         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17952         caller saved regs.
17953
17954         * basic.cs: Add a test for add.ovf.un.
17955
17956 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17957
17958         * mini-sparc.c: add case for OP_IDIV_UN
17959
17960 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17961
17962         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17963         
17964         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17965
17966 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17967
17968         * basic.cs: regression tests.
17969
17970         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17971         regressions.
17972
17973 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17974
17975         * basic.cs: Add a new test.
17976
17977         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17978         and AOT. Various fixes and optimizations.
17979
17980         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17981
17982 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17983
17984         * mini-ppc.c: make sure temp regs are not used for global reg
17985         allocation.
17986
17987 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17988
17989         * cpu-sparc.md: conv_i8 fix for 64bits
17990
17991         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17992
17993 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17994         
17995         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17996         add opcode for cmp BYTE PTR [eax], imm.
17997
17998         * inssel.brg: Make memcpy and memset takes bases.
17999
18000 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18001
18002         * *-amd64.*: More AMD64 work.
18003         
18004 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18005
18006         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18007         add a compare-not-equal opcode.
18008         
18009 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18010
18011         * mini.c: Use mono_init_from_assembly instead of mono_init.
18012         
18013 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18014
18015         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18016
18017         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18018
18019         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18020
18021         * inssel.brg: 64 bit fixes.
18022
18023         * mini.h (MonoCallInst): Add some AMD64 specific data.
18024
18025         * mini.h: Add some OP_P opcodes.
18026
18027 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18028
18029         * basic.cs: tests for 61797 and 61740
18030
18031 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18032
18033         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18034         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18035
18036 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18037
18038         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18039
18040         * *-amd64*.*: Ongoing AMD64 work.
18041
18042 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18043
18044         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18045
18046         * *-amd64*: Ongoing AMD64 work.
18047
18048         * mini-arch.h: Add AMD64 support.
18049
18050         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18051
18052         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18053
18054         * mini-ops.h: Add new opcodes.
18055
18056         * Makefile.am: Add AMD64 support.
18057
18058         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18059         rules into the inssel-long*.brg files.
18060
18061         * *-amd64.*: Add beginnings of AMD64 backend.
18062
18063 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18064
18065         * mini.c (print_dfn): commenting out the code that prints
18066         the cil. With -O=deadce, this makes -v -v crash.
18067         
18068         * cpu-pentium.md: make checkthis have a length of 2
18069
18070 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18071
18072         * mini-sparc.h: fix implementations of __builtin
18073         functions for Sun compiler for V9.
18074
18075 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18076
18077         * mini.c: use the new stelem.ref wrapper
18078         * exceptions.cs, arrays.cs: new stelem.ref tests
18079
18080 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18081
18082         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18083         new XSP should work with these changes).
18084
18085 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18086         
18087         * inssel-{long32,x86,}.brg: trivial optimizations.
18088         
18089 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18090
18091         * mini.c: load value when emitting box operation in
18092         constrained calls.
18093
18094 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18095
18096         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18097         is one byte shorter than cmp DWORD PTR [eax], 0.
18098
18099 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18100
18101         * inssel-ppc.brg: arguments on the stack are always
18102         relative to the stack pointer (spotted by Neale Ferguson).
18103
18104 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18105
18106         * exceptions-x86.c: delay appending the method name to the trace until
18107         after mono_jit_info_table_find is called, as this gets the real
18108         MonoMethod.
18109
18110 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18111
18112         * aot.c: register roots
18113
18114 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18115
18116         * aot.c : I could just use PLATFORM_WIN32 flag.
18117
18118 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18119
18120         * aot.c : Reverting the previous fix. This time it broke linux build.
18121
18122 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18123
18124         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18125
18126 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18127
18128         * mini.c (handle_stack_args): Remove some more debugging code.
18129         
18130         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18131
18132         * driver.c mini.h aot.c: Allow additional options to be specified with
18133         --aot and pass them to mono_compile_assembly.
18134
18135         * aot.c: Add experimental code to AOT compile all loaded assemblies
18136         on demand and save the code into a cache in the filesystem.
18137
18138         * aot.c: Add support for more wrapper methods.
18139         
18140         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18141         58863.
18142
18143         * cpu-*.md: Remove removed opcodes.
18144
18145         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18146         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18147         related icalls to marshal.c.
18148
18149 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18152
18153         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18154
18155         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18156
18157 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18158         * liveness.c: If liveness is recomputated we need to reset the information
18159         for each variable. This way, if the liveness range has been narrowed
18160         by optimizations that happened after the last computation, we can return
18161         a smaller range.
18162         
18163         For example, if you have
18164         
18165         {
18166                 int i = 0;
18167                 
18168                 // Tons of code that does not affect i
18169                 
18170                 i = foo ();
18171                 ...
18172         }
18173         
18174         i = 0 is dead code and will be removed by SSA. However, when
18175         linear scan gets to the code, i will still appear to be live
18176         throughout the entire block. This prevents good register allocation.
18177
18178 2004-07-06  Martin Baulig  <martin@ximian.com>
18179
18180         * debug-mini.c (mono_debug_init_method): Allow
18181         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18182         (mono_debug_add_icall_wrapper): New method.
18183
18184         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18185
18186 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18187
18188         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18189         optimization.
18190
18191 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18192
18193         * aot.c (mono_aot_load_method): Fix loading of debug info.
18194
18195 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18196
18197         * aot.c: Add logging support.
18198
18199 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * mini.h: Add prototype for mono_print_method_from_ip.
18202
18203         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18204
18205         * inssel.brg: 64 bit fixes.
18206
18207         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18208         inssel-long32.brg.
18209
18210         * Makefile.am: Add SPARC64 support.
18211
18212 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18213
18214         * aot.c: Fix alignment problems on 32 bit platforms.
18215
18216 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
18219         SPARC64.
18220
18221         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
18222         problems.
18223
18224         * mini.h: Bump AOT file version. Some 64 bit fixes.
18225
18226 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * inssel-sparc.brg: Add new rule to avoid register moves.
18229
18230         * inssel.brg: Add ldind_to_load_membase helper function.
18231
18232 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18233
18234         * mini.c: OffsetToStringData intrinsic.
18235         
18236 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18237
18238         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18239
18240         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18241         regression tests.
18242
18243         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18244 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18245
18246         * mini.c: reinstated mono_compile_get_interface_var()
18247         on x86, too, since the change breaks the Gtk# build there as well.
18248
18249 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18250
18251         * driver.c: remove loop from the default optimizations: it seems to
18252         interact badly with some of the other options (see bug #60613).
18253
18254 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18257         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18258
18259 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18260
18261         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18262         vararg-using methods.
18263
18264 2004-06-21  Martin Baulig  <martin@ximian.com>
18265
18266         * mini/mini-exceptions.c
18267         (mono_handle_exception): Added `gpointer original_ip' argument.
18268         After calling mono_unhandled_exception(), call
18269         mono_debugger_unhandled_exception() and if that returns true,
18270         restore the context and return.
18271
18272 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18273
18274         * mini-ppc.c: prefer the use of relative branches so
18275         they won't need to be patched in aot code (patch from Patrick Beard).
18276
18277 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18278
18279         * aot.c: patch from Patrick Beard to make the output assembly
18280         more correct for the MacOSX assembler. Small tweak to
18281         generate sane images on Linux/PPC, too.
18282
18283 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18284
18285         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18286         case until bug #59509 is fixed (shows up in #60332).
18287
18288 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18289
18290         * mini.c: make sure the needed wrappers are compiled, too, with
18291         precomp.
18292
18293 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18294
18295         * driver.c: remove NPTL reference in --version output.
18296
18297 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18298
18299         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18300         generate valid assembly for the Mach-O assembler.
18301
18302 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18303
18304         * driver.c: don't include abcrem in the all optimization specifier
18305         since it slows down jit compilation too much for now.
18306
18307 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18308
18309         * mini.c: use BIGMUL only if both operands have the same signage.
18310         * iltests.il: Test for bug 60056. (errors related to signage in
18311         BIGMUL).
18312
18313         r=lupus.
18314
18315 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18316
18317         * mini.c, aot.c: memory leak fixes.
18318
18319 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18320
18321         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18322
18323 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18324
18325         * Makefile.am: remove the -static hack completely, it links in
18326         statically glib as well.
18327
18328 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18329
18330         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18331         * exceptions.cs: make it compile with new mcs/csc.
18332
18333 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18334         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18335         and added relevant test case.
18336
18337 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18338
18339         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18340         regressions in gtk-sharp.
18341
18342 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * exceptions.cs: New regression tests.
18345
18346         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18347
18348 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18349
18350         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18351
18352 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18353
18354         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18355
18356         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18357
18358 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18359
18360         * mini.c (mono_jit_runtime_invoke): Init class in this
18361         method instead of trusting mono_jit_compile_method to
18362         do the work (because wrappers can be in object class)
18363
18364 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18367
18368         * basic-long.cs: New regression test.
18369
18370 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18371
18372         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18373         and div/rem checks.
18374
18375 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18376
18377         * Makefile.am: fix miguel's change to build mono statically against
18378         libmono (track build dependencies).
18379
18380 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18381
18382         * cfold.c: Some glib versions do not have G_MININT32.
18383
18384 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18385
18386         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18387         with precision of tan, atan, sin and cos, and implemented related
18388         regressions tests (fixes bug 54467, but one new problem appeared and
18389         is not fixed yet).
18390
18391 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18392
18393         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18394
18395         * exceptions.cs: Add test for constant folding && division by zero.
18396
18397         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18398         since driver.c is in libmono too, so the optimization was useless.
18399
18400         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18401         variable to driver.c so the compiler can emit more efficient code to
18402         access them.
18403
18404 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18405
18406         * Makefile.am: don't distribute generated inssel.[ch] files.
18407
18408 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18409
18410         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18411         into the default appdomain. Fixes #58707.
18412
18413         * jit-icalls.c: Remove the broken approximation for truncl, doing
18414         no conversion is better.
18415
18416         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18417         Fixes #58863.
18418
18419 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18420
18421         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18422         of the mcrxr instruction which is not available on some processors
18423         even if it's documented to be. Implement add and sub overflow correctly
18424         (still not complete for long unsigned). Speed up icalls a bit.
18425
18426 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18427
18428         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18429         we run .cctor in the current domain instead of target_domain.
18430         
18431         Fixes bug #58558, .cctor not being called in -O=shared.
18432
18433 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18434
18435         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18436
18437 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18438
18439         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18440         which can be done with an imm8, do it that way.
18441         (mono_arch_output_basic_block): ditto for a jmp
18442         (mono_arch_emit_prolog): Computate maximum offset of a label.
18443
18444 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18445
18446         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18447         now tries to allocate prefered physical reg's for virtual
18448         regs. This reduces the number of emited spills/loads with
18449         20-30% on our core assemblies.
18450
18451 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18452
18453         * jit-icalls.c: truncl() is not needed and trunc() is
18454         the correct thing to do anyway (bug #58287).
18455
18456 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18457
18458         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18459         if available.
18460
18461 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18462
18463         * driver.c: enable loop optimizations by default.
18464
18465 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18466
18467         * mini-x86.c: fix calc of max loop size when aligning loops start.
18468
18469 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18472         the stack.
18473
18474 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18475
18476         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18477         should set carry.
18478
18479         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18480
18481         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18482         
18483         * mini.c (inline_method): Allways inline some wrappers even if the cost
18484         is too large. Fixes #58785.
18485
18486         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18487         
18488 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18491         (crichton@gimp.org). Beginning of support for sparc/linux.
18492
18493         * mini-sparc.c: Optimize retrieval of LMF address.
18494
18495 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18496
18497         * exceptions-ppc.c:  handle alloca in methods with clauses.
18498
18499 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18500
18501         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18502
18503 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18504
18505         * mini.c: Delegate most of the abort signal work to 
18506           mono_thread_request_interruption, which also handles Stop and Suspend
18507           states.
18508
18509 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18510
18511         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18512         supports the save/restore lmf opcodes.
18513
18514 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18517         by gcc-3.4 as well.
18518
18519         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18520
18521 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18524         methods which contain array accesses.
18525
18526         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18527         boundaries. Fixes #58537.
18528
18529         * iltests.il: Add regression test for #58537.
18530
18531 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18532
18533         * mini-x86.c (mono_arch_local_regalloc): Last part of
18534         fix for bug #58633 (releasing register to early).
18535
18536 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18537
18538         * basic-long.cs: Add new regression test.
18539
18540 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18541
18542         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18543         register too early on the chain.
18544
18545 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * mini.c (create_helper_signature): Use a helper function to reduce
18548         the code which needs to be written. Also set the calling convention of
18549         icalls on windows. Fixes #57840.
18550
18551 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18552
18553         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18554         exceptions-ppc.c: added helper function to get the instruction address
18555         from a signal handler context.
18556
18557 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18558
18559         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18560         from gonzalo.
18561
18562 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18563
18564         * helpers.c: Add new env variable to pass args to objdump.
18565         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18566
18567 2004-05-17  Radek Doulik  <rodo@ximian.com>
18568
18569         * Makefile.am (common_sources): added abcremoval.h so it get
18570         disted and daily mono packages on go-mono.com will build again
18571
18572 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18573
18574         * abcremoval.c: Fixed coding style, added copyright header.
18575
18576         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18577
18578         * mini.h: Added prototype for abc removal main function.
18579
18580         * build_relations_propagation_table.pl: Added copyright header.
18581
18582 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18583
18584         * basic-long.cs: reg test for complex ceq_long bug.
18585
18586 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18587
18588         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18589         reg in long and clob case (bug #58343). Fixed/added comments.
18590
18591 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18592
18593         * mini.c (mono_jit_runtime_invoke): Follow new convention
18594         of calling the invoke method with an function pointer.
18595
18596 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18597
18598         * ChangeLog: Fix author of memory leak patch.
18599
18600 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18601
18602         * Makefile.am: fix make dist as well...
18603
18604
18605 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18606
18607         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18608         on archs where pointers are 4 bytes long.
18609
18610         * Makefile.am: Added abcremoval.c source file.
18611
18612         * abcremoval.c: Added abcremoval.c.
18613
18614         * abcremoval.h: Added abcremoval.h.
18615
18616         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18617
18618         * inssel.brg: Enabled bounds check removal.
18619
18620         * mini.c: Added support for abcrem optimization.
18621
18622         * mini.h: Added abcrem optimization label.
18623
18624         * driver.c: Added support for abcrem optimization.
18625
18626         * propagated_relations_table.def: Added propagated_relations_table.def.
18627
18628 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18629
18630         * mini.c, cfold.c: fix style.
18631
18632 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18633
18634         * mini.c: handle issue with the low-level implementation of
18635         some long opcodes (bug #54209).
18636
18637 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18638
18639         * basic.cs: test for my new cmov stuff.
18640
18641 2004-05-13      Patrik Torstensson
18642
18643         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18644         opt and added peephole documentation.
18645
18646 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18647
18648         * tramp-ppc.c: rewrote the generic trampoline code.
18649
18650 2004-05-11      Patrik Torstensson
18651
18652         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18653
18654 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18657
18658         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18659         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18660
18661         * mini.c: Add new icalls for AsAny marshalling.
18662
18663 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18664
18665         * tramp-ppc.c, mini-ppc.c: more cleanups.
18666
18667 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18668
18669         * mini.c: no warnings.
18670
18671 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18672
18673         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18674
18675 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18676
18677         * mini.c: In the thread abort signal handler, if the thread is in the
18678         process of being stoped, don't throw the Abort exception, just stop the
18679         thread.
18680
18681 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18682
18683         * tramp-ppc.c: removed old code.
18684
18685 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18686
18687         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18688         do some simple speed optimizations on ppc.
18689
18690 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18691
18692         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18693         and large offsets in load/store.
18694
18695 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18698         it causes regressions.
18699
18700 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18701
18702         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18703         support.
18704
18705 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18706
18707         * jit-icalls.c: remove warnings.
18708         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18709         speedups for unsafe code.
18710
18711 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18712
18713         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18714
18715 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18716
18717         * basic-calls.cs: Add new regression test.
18718
18719         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18720         more portable.
18721
18722         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18723
18724         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18725         is no longer used.
18726
18727 2004-05-06      Patrik Torstensson
18728
18729         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18730         long reg allocation in any reg (not only eax:edx) and implemented 
18731         long shl/shr ops in asm instead of helpers.
18732
18733 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18734
18735         * mini-sparc.h: Fix warnings.
18736
18737         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18738         stack.
18739
18740         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18741         separate statement for clarity.
18742
18743         * mini-sparc.c: Update status.
18744
18745 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18746
18747         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18748         here.
18749
18750 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18751
18752         * inssel-ppc.brg: another small pre-release workaround:
18753         we don't do overflow detection for long_sub_un.
18754
18755 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18756
18757         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18758         (also works around a weird ppc bug: 57957).
18759
18760 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18761
18762         * tramp-ppc.c: trampoline fixes.
18763
18764 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18765
18766         * mini-ppc.c: fixed typos.
18767
18768 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18769
18770         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18771         at the top of the stack. Fixed typos. Use a frame registers
18772         for all the methods with exception clauses.
18773
18774 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18775
18776         * exceptions-ppc.c: restore fp registers.
18777
18778 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18779
18780         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18781         order from the stack top (moved the stack room to save the
18782         return value for trace after the param area). Fixed corruption
18783         in restoring registers on unwind.
18784
18785 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18786
18787         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18788
18789 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18790
18791         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18792         and prolog/epilog for methods that use it. Allow
18793         enough param area room for varargs methods. Fix miguel's
18794         breakage in exception handling.
18795
18796 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18797
18798         * Makefile.am: run genmdesc only on current arch.
18799
18800 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18801
18802         * exceptions-x86.c:
18803         * mini-x86.h: fix the build on windows.
18804
18805 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18806
18807         * 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.
18808
18809         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18810
18811         * mini-exceptions.c: New file.
18812         
18813         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18814         Move some parts of the x86 exception handling code to an 
18815         arch-independent file so it can be shared with other ports.
18816
18817 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18818
18819         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18820
18821 2004-04-26  David Waite  <mass@akuma.org>
18822
18823         * driver.c: remove comma from end of enumeration declaration
18824
18825 2004-04-26  Jackson Harper  <jackson@ximian.com>
18826
18827         * driver.c: parse config file before loading first assembly. This
18828         allows the user gac to be enabled/disabled. 
18829         
18830 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18831
18832         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18833         simpler mechanism: we do not care what is encoded initially
18834         (branch absolute or relative), we care about the code and its
18835         target.  I kept the old code for reference for now.
18836
18837         The new code tries first to determine if the jump is anywhere in
18838         the -/+32 absolute meg range, if it succeeds, it encodes using the
18839         absolute branch;  If not, it tried to find something in the
18840         relative range, if not, it uses the handle_thunk code. 
18841
18842 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18843
18844         * exceptions-ppc.c: use the correct ip register on macosx.
18845
18846 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18847
18848         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18849
18850 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18851
18852         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18853         Raise exception on integer divide by zero by hand since the hw
18854         doesn't support it. Handle NaNs in FP compares.
18855
18856 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18857
18858         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18859         code reducing duplication between the platforms and enabled
18860         signal exception handling (on linux for now).
18861
18862 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18863
18864         * exceptions-ppc.c: more macosx support.
18865
18866 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18867
18868         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18869
18870 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18871
18872         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18873
18874 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18875
18876         * iltests.il: more tests.
18877
18878 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18879
18880         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18881         vars as well.
18882
18883 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18884
18885         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18886
18887 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18888
18889         * liveness.c: Mark variables as volatile in all basic blocks reachable
18890         from exception clauses.
18891
18892 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18893
18894         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18895         inlining.
18896
18897 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18898
18899         * iltests.il, basic.cs: more tests for regalloc.
18900
18901 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18902
18903         * iltests.il: Some tests for register allocation modifications
18904         I have locally.
18905
18906 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18907
18908         * exceptions.cs: Add regression test for bug #56782.
18909
18910         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18911         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18912         the beauty of fixing the same thing in 5 different files...
18913
18914 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18917         methods.
18918
18919 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * mini.c: Add support for STRWLPARRAY marshalling convention.
18922
18923 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18924
18925         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18926         to init the context to setup the regs pointer).
18927
18928 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18929
18930         * exceptions-ppc.c: more exceptions work.
18931
18932 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18933
18934         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18935         not allowed.
18936
18937 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18938
18939         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18940         can use the memory directly.
18941
18942         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18943
18944         add x86_add_membase, x86_sub_membase, x86_mul_membase
18945
18946 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18947
18948         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18949         GENERAL_REGS they were also hardcoded for all PPC ports.
18950
18951         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18952
18953         Remove hard-coded limit for floating point registers, use
18954         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18955
18956         Notice that in MacOS X calling conventions you can fit a lot more
18957         floating point values in registers, so I should update the PInvoke
18958         test to excercise the passing of floating point values on the
18959         stack (currently broken).
18960         
18961 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18962
18963         * tramp-ppc.c (create_trampoline_code): Added
18964         JUMP_TRAMPOLINE_SIZE. 
18965         (ppc_magic_trampoline): Follow the pattern from
18966         x86_magic_trampoline: if code is set to zero, return. 
18967         (create_trampoline_code): Always pass MonoMethod to the jump
18968         trampoline, before it was passing a null.
18969         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18970         share the code with mono_arch_create_jit_trampoline. 
18971
18972         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18973         implemented.
18974         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18975         implemented.  
18976
18977         * cpu-g4.md: Added length for jmp instruction, the worst case
18978         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18979         for save_lmf).
18980
18981 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18982
18983         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18984
18985 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18988         before each IL instruction.
18989
18990         * mini.c (CEE_BOX): Fix warnings.
18991
18992 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18993
18994         * mini.c: removed a few unused vars and extra whitespace.
18995
18996 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18997
18998         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18999         checks.
19000         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19001         index.
19002         (OP_GETCHR): use the above
19003         (CEE_LDELEMA): use the above.
19004
19005         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19006         version of the generic impl.
19007         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19008         (CEE_LDELEMA): use the above.
19009
19010 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19011
19012         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19013         Fixes #56317.
19014
19015         * iltests.il: Added new regression test for #56317.
19016
19017 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19018
19019         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19020         under NetBSD. Fixes #56450.
19021
19022         * liveness.c (update_gen_kill_set): Fix previous patch.
19023
19024 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19025
19026         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19027
19028 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19029
19030         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19031         ldsfld and ldsflda.
19032
19033         * inssel-sparc.brg: Add more optimizations.
19034
19035         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19036
19037 2004-04-01  Martin Baulig  <martin@ximian.com>
19038
19039         * mini.c (handle_box): New static function; moved the
19040         implementation of CEE_BOX here.
19041         (mono_method_to_ir): Added `constrained_call' variable.
19042         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19043         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19044         mono_method_get_constrained() to get the method.
19045
19046 2004-04-01  Martin Baulig  <martin@ximian.com>
19047
19048         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19049         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19050         (mono_method_to_ir): We don't need these macros anymore since
19051         mono_class_get_full() already takes care of it. 
19052
19053 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19054
19055         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19056         use @function (as doesn't accept #function here) and check the return
19057         value of system and stop if fails.
19058
19059 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19060
19061         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19062
19063 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19064
19065         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19066
19067         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19068
19069         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19070         #56223.
19071
19072         * basic-long.cs: Add test for negation of Int64.MinValue.
19073
19074 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * mini-sparc.c: Update status.
19077
19078         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19079
19080         * exceptions-sparc.c: Fix return value in filters.
19081
19082         * inssel-sparc.brg: Fix register allocation in some rules.
19083
19084 2004-03-28  Martin Baulig  <martin@ximian.com>
19085
19086         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19087         if neccessary.  
19088
19089 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19090
19091         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19092         
19093         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19094         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19095         remove unused conv_u4 opcode.
19096
19097         * mini-x86.c: Remove valgrind workaround since it slows down things
19098         even when mono is not run under valgrind.
19099
19100 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19101
19102         * mini-sparc.c: Update status.
19103
19104         * inssel-sparc.brg: Add some optimizations.
19105
19106         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19107         future delay slot filling. Add support for varargs, tail calls and JMP.
19108
19109         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19110         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19111
19112         * inssel.brg: Fix register allocation in OP_ARGLIST.
19113
19114         * inssel.brg: Fix warnings.
19115
19116 2004-03-25  Martin Baulig  <martin@ximian.com>
19117
19118         * mini.c (inflate_generic_field): Removed.
19119         (mini_get_method): Removed, use mono_get_method_full(),
19120         (mini_get_class): Removed, use mono_class_get_full().
19121         (mono_method_to_ir): Pass our generic context to
19122         mono_field_from_token().        
19123
19124 2004-03-25  Martin Baulig  <martin@ximian.com>
19125
19126         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19127         of a `MonoMethod *'.
19128         (mini_get_method): Take a `MonoGenericContext *' instead
19129         of a `MonoMethod *'.
19130         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19131         a new local variable called `generic_context' which holds the
19132         current `MonoGenericContext *'; use it to lookup things.
19133
19134 2004-03-24  Martin Baulig  <martin@ximian.com>
19135
19136         * mini.c (mini_get_class): New static method; if we're inside a
19137         generic instance, inflate the class if neccessary.
19138         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19139
19140 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19141
19142         * iltests.il: New regression test for #55976.
19143
19144         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19145         #55976.
19146
19147 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19150         output.
19151
19152 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * liveness.c: Consider SSA stores as well as loads when making vars
19155         volatile.
19156
19157         * exceptions.cs: New regression tests for register allocation.
19158         
19159 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19160
19161         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19162         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19163           domain lock only to protect puntual access to data structures.
19164           Added access lock for sighash, jit_icall_hash_name, 
19165           jit_icall_hash_addr and domain->code_mp.
19166
19167 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * driver.c: Print SIGSEGV handling method.
19170
19171         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19172
19173         * mini.c (setup_jit_tls_data): Handle case when this is called
19174         multiple times for a thread.
19175
19176         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19177         is different from fbxx_un. Fixes #54303. Also use constants instead of
19178         magic numbers in a lot of places.
19179
19180 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * exceptions.cs: Fix cctor test when --regression is used.
19183
19184 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19185
19186         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19187         for Linux/ppc.
19188
19189 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19190
19191         * inssel-ppc.brg: fixed register assignments for some rules.
19192
19193 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * exceptions.cs: Add test for exceptions in static constructors.
19196
19197         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19198         static constructors outside the domain lock. Fixes #55720.
19199
19200 2004-03-17  Martin Baulig  <martin@ximian.com>
19201
19202         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19203         (inflate_generic_field): Take the `MonoMethod *' instead of the
19204         `MonoClass *' and added support for generic method.
19205         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19206         have a `field->parent->gen_params', only inflate the field if it's
19207         an open constructed type.
19208
19209 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19210
19211         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19212         exception object instead of the preconstructed ones.
19213
19214 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19215
19216         * mini.c: reverted changed to sigsegv_signal_handler commited
19217         accidentally in the previous patch.
19218
19219 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19220
19221         * mini.c:
19222         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
19223         running --aot with an old assembly.
19224
19225 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19226
19227         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
19228         point values.
19229
19230         * mini-sparc.c: Add support for v9 branches with prediction.
19231
19232 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
19233
19234         * mini.c (mini_init): #warning is GNUC only
19235
19236         * mini-sparc.h: implement __builtin_frame_address
19237         and __builtin_return_address for Sun C compiler
19238
19239 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19240
19241         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19242
19243 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19244
19245         * basic-calls.cs: Add test for unaligned byref long argument passing.
19246
19247         * mini-ops.h: Add sparcv9 compare and branch instructions.
19248
19249         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19250         v9 instructions if we have a v9 cpu.
19251
19252         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19253         registers for global allocation.
19254
19255         * exceptions-sparc.c: Fixes.
19256         
19257 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19258
19259         * liveness.c (mono_analyze_liveness): Optimized version.
19260
19261         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19262
19263         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19264         sparc work.
19265
19266         * basic-float.cs basic-calls.cs: New regression tests.
19267
19268 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19271         sigaltstack implementation.
19272
19273         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19274         
19275         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19276         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19277
19278 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * mini.c: Fix warnings.
19281         
19282         * mini.c (mono_resolve_patch_target): New function which contains the
19283         arch independent part of the patching process.
19284
19285         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19286         patching code to a separate function.
19287
19288 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19289
19290         * mini.c (add_signal_handler): ifdef out on Windows
19291
19292 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19295         cpu-sparc.md: Add exception handling support + other fixes.
19296
19297         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19298         typed GC detection in --version.
19299
19300         * basic.cs exceptions.cs: New regression tests.
19301
19302         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19303         the arch specific code can store data during a compilation.
19304
19305         * mini-ops.h: Add OP_SETFRET.
19306
19307         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19308         function, register a separate icall for each arity, so the icalls can
19309         get a wrapper.
19310         
19311         * mini.c (mono_print_tree): Print negative offsets in a more readable
19312         form.
19313         
19314         * mini.c: Make signal handling work on sparc.
19315         
19316         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19317
19318         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19319
19320         * jit-icalls.c: Emulate truncl by aintl on solaris.
19321
19322         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19323
19324 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19327
19328 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19329
19330         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19331         a MarshalByRef type, inline a method that performs the check, taking into
19332         account that the object can be a proxy. Also implemented tow new opcodes:
19333         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19334         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19335         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19336
19337 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19338
19339         * mini-ppc.c: if a relative branch displacement is too big
19340         but it points to and area reachable with an absolute branch, 
19341         avoid the thunks.
19342
19343 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19344
19345         * mini.c: optimize small copies in cpblk.
19346
19347 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19348
19349         * basic-calls.cs basic-float.cs: New regression tests.
19350
19351         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19352         negative offsets from %fp. Implement localloc. Fix local register 
19353         allocation. Fix the case when the this argument needs to be saved to
19354         the stack. Implement some missing opcodes.
19355
19356 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19357
19358         * mini.c (mini_method_compile): Reenable global regalloc in methods
19359         with exception handlers.
19360
19361         * linear-scan.c (mono_varlist_sort): Fix warning.
19362
19363         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19364
19365         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19366         regalloc costs.
19367
19368         * liveness.c: Make all variables uses in exception clauses volatile, to
19369         prevent them from being allocated to registers. Fixes #42136.
19370
19371 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19374         causes regressions.
19375
19376         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19377         argument to mono_arch_regalloc_cost.
19378
19379         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19380         precisely.
19381
19382 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19385         Make the cost of allocating a variable to a register arch dependent.
19386
19387         * basic-calls.cs: Fix compilation of tests.
19388         
19389         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19390         helper function to cut back on the number of #ifdefs needed.
19391
19392         * mini-ppc.c: Fix compilation.
19393
19394         * basic-calls.cs: New regression tests.
19395
19396         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19397
19398         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19399         of l0 since that is callee saved.
19400
19401         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19402         to virtual calls.
19403
19404         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19405         of delay instruction.
19406
19407         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19408
19409         * mini.h (MonoCallInst): Add 'virtual' flag.
19410
19411         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19412
19413 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * *.cs: New regression tests.
19416
19417         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19418         work.
19419
19420         * mini.c (mono_runtime_install_handlers): Fix build.
19421
19422         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19423         'signal_stack_size' members.
19424
19425         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19426         alternate signal stack.
19427
19428         * exceptions-x86.c: Add stack overflow handling.
19429
19430         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19431         functions to arch independent code.
19432
19433         * mini.c (mono_print_tree): Print more detailed info for load_membase
19434         opcodes.
19435         
19436 2004-02-23  Martin Baulig  <martin@ximian.com>
19437
19438         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19439
19440 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19441
19442         * mini-x86.c: fixed reg allocation for div/rem.
19443
19444 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19445
19446         * driver.c (mono_main): Report some configuratio options on --version.
19447
19448 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19449
19450         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19451         low in the address space. Correctly flush memory in thunks where we
19452         output native code.
19453
19454 2004-02-20  Martin Baulig  <martin@ximian.com>
19455
19456         * mini.c (mini_get_method): New static method; inflate all generic
19457         methods and methods in open generic instances.
19458         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19459         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19460
19461 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19464
19465         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19466
19467 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19468
19469         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19470
19471         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19472         it compile using Sun's compiler.
19473
19474 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19475
19476         * 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.
19477
19478         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19479
19480 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19481
19482         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19483         code.
19484         * mini-ppc.c: handle calls outside of the allowed range with thunks
19485         allocated using the code manager.
19486         * tramp-ppc.c: use the code manager to hold generated native code.
19487         Fixed the magic trampoline to just patch vtable entries.
19488
19489 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19492         independent file.
19493
19494 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19497         PPC.
19498
19499         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19500         if we have a working __thread implementation.
19501
19502         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19503         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19504
19505 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * mini-x86.c: Fix compilation under gcc 2.
19508         
19509 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19512         contains a call to the wrapped function.
19513
19514         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19515         OP_<CALL>_IMM opcodes, and use them under X86.
19516         
19517         * mini.c (mono_jit_find_compiled_method): Fix warning.
19518
19519         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19520
19521         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19522
19523         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19524         functionality to mini.c.
19525
19526         * mini.c (mono_create_jump_trampoline): New function to create a jump
19527         trampoline. Return a compiled method instead of a trampoline if it
19528         exists. Add a cache for jump trampolines.
19529
19530         * mini.c (mono_jit_find_compiled_method): New function to return a
19531         compiled method if it exists.
19532
19533         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19534         mono_arch_create_jit_trampoline.
19535
19536         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19537         a jump trampoline. Fixes #52092.
19538         
19539 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19542         which is not up-to-date. Add check_corlib_version () instead.
19543
19544         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19545         have to call it.
19546         
19547         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19548         since newer valgrind versions do not need it.
19549
19550         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19551         compile a method with a given set of optimizations.
19552
19553         * mini.c: Compile icall wrappers on-demand instead of at startup.
19554
19555         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19556         wrapper for an icall.
19557
19558 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19559
19560         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19561         #54063.
19562
19563         * iltests.il: Add test for non-empty stack before switch instruction.
19564
19565 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * mini.c: Add support for new stringbuilder marshalling conventions.
19568
19569         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19570
19571 2004-02-01  Martin Baulig  <martin@ximian.com>
19572
19573         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19574         in `ginst->mtype_argv'.
19575
19576 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19577
19578         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19579         facilitate grepping.
19580
19581 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19582
19583         * mini.c: fixed buglet in initobj generic implementation for references.
19584
19585 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19586
19587         * Makefile.am: make the version script conditional.
19588         * jit-icalls.c: handle missing truncl().
19589
19590 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * exceptions.cs: Add more tests for double->int conversion.
19593
19594         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19595         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19596
19597 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19598
19599         * driver.c: make --verbose --version emit an error
19600         if the loaded corlib doesn't match the runtime version.
19601
19602 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19603
19604         * mini-ppc.h: export ppc_patch().
19605         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19606         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19607         on par or better than on MacOSX.
19608
19609 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19612         mono_lookup_pinvoke_call.
19613
19614         * mini-x86.c: Under windows, the default pinvoke calling convention is
19615         stdcall. Fixes #52834.
19616
19617         * mini.c (optimize_branches): Add an upper bound to the number of
19618         iterations to prevent infinite loops on strange loops. Fixes #53003.
19619
19620 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19621
19622         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19623         and ISINST. Fixes #52093.
19624
19625         * objects.cs (test_0_vector_array_cast): New tests.
19626         
19627 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19628
19629         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19630         checking in Array.Set ().
19631
19632         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19633         #52590.
19634
19635         * object.cs (test_0_multi_array_cast): New regression test.
19636
19637 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19638
19639         * exceptions-ppc.c: fix build on Linux/PPC.
19640
19641 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19644         running under valgrind.
19645         (x86_magic_trampoline): Fix build bustage.
19646
19647         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19648         negative values as well. This is needed for the encoding of the line number
19649         info, since sometimes the line numbers are not in increasing order.
19650
19651 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * cpu-pentium.md (localloc): Increase the size of the localloc 
19654         instruction since it is a loop under Win32.
19655
19656         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19657         allocation.
19658
19659 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19660
19661         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19662         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19663         Max Horn (max@quendi.de). Fix file names in comments.
19664
19665 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19668         avoid stack overflow.
19669         (replace_usage): Avoid uninitialized variable warnings.
19670
19671         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19672         and taking the address of valuetype variables.
19673
19674 2004-01-03  Patrik Torstensson
19675
19676         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19677         for other purposes than FP later on.
19678
19679 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19682         of tail calls.
19683
19684 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19685
19686         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19687
19688 2003-12-30  Patrik Torstensson <p@rxc.se>
19689
19690         * mini-x86.h: Decreased number of availiable fp regs.
19691         Solves corner cases with FP spilling.
19692
19693 2003-12-23  Patrik Torstensson <p@rxc.se>
19694
19695         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19696         for floating point stack tracking / spilling on x86. 
19697         Fixes bug #49012.
19698         
19699         * basic-float.cs: added float mul overflow test.
19700
19701 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19702
19703         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19704
19705 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19706
19707         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19708         supports for cond branches that overflow the immediate
19709         overflow offset. mcs can compile simple programs.
19710
19711 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19712
19713         * exceptions-ppc.c: exception handling support wip:
19714         finally handlers get run on exception.
19715
19716 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19719         profiling.
19720
19721 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19722
19723         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19724         initial support for stack walking and unwinding.
19725
19726 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * driver.c (mono_main): Make corlib-out-of-sync message more 
19729         descriptive. Also remove verify_corlib call.
19730
19731 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19732
19733         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19734         not overlap with other call's arguments, too.
19735
19736 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19737
19738         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19739         move to arch-specific code the choice of arch-specific
19740         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19741         * mini.c: ensure emulation calls will not interleave
19742         with other calls.
19743
19744 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19745
19746         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19747         the magic trampoline stack frame is dropped before executing
19748         the new method.
19749
19750 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19751
19752         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19753         and integer to fp conversions. Added support for overflowing
19754         arguments on the stack. Reserve a couple more registers as temps.
19755         Added support for aot compilation (as output still needs to be
19756         tweaked, though).
19757
19758 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19759
19760         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19761         Don't overwrite return register in some corner cases.
19762
19763 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19766         static constructors when AOT compiling.
19767
19768         * driver.c (mono_main): Call mono_check_corlib_version.
19769
19770 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19771
19772         * cpu-g4.md, basic.cs: fixed div target register.
19773
19774 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19775
19776         * mini-ppc.c, basic.cs: shl_imm fix with test.
19777
19778 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19779
19780         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19781         structures by value. Misc fixes.
19782         * objects.cs: more tests.
19783
19784 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini-ppc.c: lconv.ovf.i implemented.
19787
19788 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19789
19790         * mini.c:
19791         (mini_init): don't error out if someone already called g_thread_init.
19792
19793 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19794
19795         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19796         to be any type per the spec. Fix abnormal memory usage when
19797         the same object is repeatedly thrown.
19798
19799 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19800
19801         * mini.c: check for overruns in IL code.
19802
19803 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19804
19805         * TODO: Add/remove some todo entries.
19806
19807 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19808
19809         * driver.c (mono_main): Call mono_verify_corlib.
19810
19811 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19812
19813         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19814         This has been moved to mini.c
19815         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19816         type being casted is marshalbyref it could be a proxy, so instead of
19817         emitting the type check code, emit a call to a runtime method that will
19818         perform the check by calling CanCastTo if needed.
19819
19820 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19821
19822         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19823         methods with large stack frames under Win32.
19824
19825 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * Makefile.am: Distribute regression tests.
19828
19829         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19830         at the end instead of inserting each variable into the sorted list.
19831
19832         * linear-scan.c (mono_varlist_sort): New helper function.
19833         
19834 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19835
19836         * mini.c: ensure arguments and locals are within bounds.
19837
19838 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19839
19840         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19841         related fixes.
19842
19843 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19844
19845         * mini.c (mono_cprop_copy_values): Fix crash.
19846
19847         * aot.c: Set verbosity back to 0.
19848         
19849 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19850
19851         * regalloc.c: complete memory leak fix by Laurent Morichetti
19852         (l_m@pacbell.net).
19853
19854 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * driver.c (main_thread_handler): Revert the previous patch.
19857
19858         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19859         under valgrind.
19860
19861         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19862         memory from the memory pool.
19863
19864         * driver.c (main_thread_handler): Turn on all optimizations when
19865         --aot is used.
19866
19867         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19868         an array for better performance.
19869
19870         * regalloc.c (mono_regstate_assign): Fix memory leak.
19871
19872         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19873         serialize the debug info.
19874
19875         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19876         debug info from the serialized representation.
19877
19878         * aot.c: Save debug info into the generated file and load it when 
19879         loading a method.
19880
19881         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19882
19883 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19884
19885         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19886         More FP-related fixes.
19887
19888 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19889
19890         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19891         and register allocation buglet. Hello world now runs.
19892
19893 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19894
19895         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19896         * tramp-ppc.c: fixed class init trampoline.
19897         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19898
19899 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19900
19901         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19902         mini.c: more ppc changes/fixes.
19903
19904 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19905
19906         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19907         Also optimize the case when the arguments are the same in the caller 
19908         and in the callee.
19909
19910         * iltests.il: Add tests for tail calls with valuetype arguments.
19911
19912 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19913
19914         * mini-ppc.c: fixes for struct return type.
19915
19916 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19917
19918         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19919         mono_spillvar_offset() to arch-specific code.
19920
19921 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19922
19923         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19924
19925 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19926
19927         * exceptions-x86.c: Fix stack space leaks.
19928         
19929         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19930         registers from the lmf if the method has save_lmf set.
19931
19932 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19935         of icall wrappers into InvokeInDomain, since these are now per-domain.
19936
19937 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19938
19939         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19940         make some opcode emulation and intrinsic ops enabled/disabled 
19941         according to the architecture. More fixes.
19942
19943 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19944
19945         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19946
19947 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19948
19949         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19950         arch-specific handling for 'this' and struct return type to
19951         arch-specific code.
19952
19953 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19954
19955         * aot.c: prevent divide by zero error when reporting (it happened with
19956         Accessibility.dll).
19957
19958 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * mini.h (inst_switch): Remove unused macro.
19961
19962 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19963
19964         * aot.c:
19965         (load_aot_module): free 'info->methods' and 'info' properly. No more
19966         "free(): invalid pointer blah" messages when you have an old aot
19967         compiled assembly.
19968
19969 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19970
19971         * jit-icalls.c, mini.c: Added support for context static fields.
19972
19973 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini.c (mono_method_blittable): Methods which set LastError are not 
19976         blittable either. Fixes #51108.
19977         
19978 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19979
19980         * mini.c: flush icache.
19981         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19982
19983 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19984
19985         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19986
19987 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19990         safe on IA32.
19991
19992         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19993         vararg calls.
19994
19995         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19996
19997 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20000         instruction when the result is discarded.
20001
20002         * iltests.il (test_0_div_regalloc): New regression test.
20003
20004         * arrays.cs: Fix compilation error.
20005
20006 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20007
20008         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20009         float rules to inssel-x86.brg: sane architectures with FP registers
20010         don't need to implement these rules.
20011
20012 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20013
20014         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20015
20016 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20017
20018         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20019         implementation of 32 bit systems.
20020
20021 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20022
20023         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20024         (Jeroen Zwartepoorte).
20025
20026 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20029         the caller and the callee matches.
20030         
20031         * mini.c (mono_method_to_ir): Add comment.
20032
20033         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20034         signbit is missing on some platforms.
20035
20036 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20037
20038         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20039
20040         * mini.c (setup_jit_tls_data): Call the new function.
20041         
20042         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20043
20044         * mini-x86.c: Add experimental support for fast access to the lmf
20045         structure under NPTL/Linux 2.6.x.
20046
20047 2003-11-06  Martin Baulig  <martin@ximian.com>
20048
20049         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20050         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20051         the debugger.
20052
20053 2003-11-02  Martin Baulig  <martin@ximian.com>
20054
20055         * mini.c (inflate_generic_field): New static method.
20056         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20057         generic instance and the field is declared in a generic type, call
20058         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20059
20060 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20061
20062         * mini.h mini.c (mono_method_same_domain): New function to return
20063         whenever the caller and the callee are in the same domain.
20064
20065         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20066
20067 2003-10-30  Martin Baulig  <martin@ximian.com>
20068
20069         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20070         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20071         method parameters.
20072         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20073         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20074
20075 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20076
20077         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20078         propagation.
20079
20080         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20081         object here, so it is in the correct appdomain etc.
20082
20083 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20086         already done.
20087         (mono_method_to_ir): Avoid freeing the type created returned from
20088         mono_type_create_from_typespec, since it is put into an internal cache
20089         by the function. Fixes pointer.exe.
20090
20091         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20092         trampolines for icalls and pinvokes as well. Fixes #33569.
20093
20094 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20095
20096         * mini.c: Update after appdomain changes.
20097
20098         * mini.c (mono_jit_compile_method_inner): Allways compile native
20099         method wrappers in the root domain, since there can only be one
20100         instance of them, whose address is stored in method->info.
20101
20102 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20103
20104         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20105         environment variable. Instead detect automatically whenever running
20106         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20107         valgrind.h.
20108
20109 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20110
20111         * trace.c, trace.h: New files that implement the new trace option
20112         parsing. 
20113
20114         * driver.c: Document new --trace options.
20115
20116         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20117         mini-x86.c: Apply:
20118
20119         -       if (mono_jit_trace_calls)
20120         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20121
20122         * mini.h: prototypes.
20123         
20124 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20127
20128         * mini.c inssel.brg: Implement typedefbyref opcodes.
20129
20130         * mini.c (mono_jit_compile_method): Remove unused local variable.
20131
20132         * mini.c (mono_jit_compile_method_inner): Ditto.
20133         
20134 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20137         
20138         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20139
20140 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20141
20142         * mini.c (mono_no_aot): Remove unused global variable.
20143
20144         * mini.c: Thread safety fixes.
20145
20146 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * mini.c (mono_create_class_init_trampoline): Add a lock around
20149         class_init_hash_addr.
20150
20151         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20152         #30073.
20153
20154         * mini.c: Decompose the NEWARR instruction before decomposing its
20155         arguments. Fixes #30073.
20156
20157 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20158
20159         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20160         convention.
20161
20162 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20163
20164         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20165
20166         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20167
20168         * driver.c: Add support for compiling icall wrappers to --compile.
20169
20170 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20171
20172         * inssel.brg: The empty value in class->interface_offsets is -1, not
20173         0. Fixes #49287.
20174
20175 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * objects.cs: New test for 'is' operator on an array of interfaces.
20178
20179 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20180
20181         * tramp-ppc.c: update trampoline code to support jumps
20182         and class initialization.
20183
20184 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20185
20186         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20187
20188         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20189
20190         * inssel.brg (OP_UNBOX): Remove unused rule.
20191
20192         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20193         region instead of one for each method. Fixes #47813.
20194
20195 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * exceptions.cs (test_0_nested_finally): New regression test for
20198         nested exception handlers.
20199
20200         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20201
20202         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20203
20204         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20205         inlining.
20206
20207         * mini.c (mono_method_check_inlining): Make the inlining limit 
20208         configurable by an environment variable.
20209         
20210         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20211
20212         * mini.h: Bump AOT file version.
20213
20214         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20215         token, store the image along with the token, since the token might not 
20216         refer to the same image as the method containing the relocation, 
20217         because of inlining.
20218
20219 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * mini.c (mono_precompile_assemblies): New function to compile
20222         all methods in all loaded assemblies.
20223
20224         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
20225
20226         * regalloc.h regalloc.c (MonoRegState): Change the type of 
20227         iassign and fassign to int*, since they can contain large negative
20228         values if the register is spilled. Also added some comments. Fixes
20229         #45817.
20230
20231         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
20232         under Win32. Fixes #42964.
20233
20234 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20235
20236         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20237
20238         * aot.c: Added support for AOT compiling methods which contain calls
20239         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20240         handled.
20241         
20242         * driver.c (compile_all_methods): Run the compilation in a thread
20243         managed by mono. Fixes #44023.
20244
20245         * mini.c (mono_codegen): Print full method name in verbose output.
20246
20247         * mini-x86.c (mono_arch_patch_code): Fix warning.
20248         
20249         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20250         jumps, since the method we are jumping to might be domain-specific.
20251
20252         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20253
20254 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20255
20256         * inssel.brg: string chars are unsigned.
20257
20258 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * TODO: New todo item.
20261
20262         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20263         which calls mono_runtime_class_init and patches the call site to
20264         avoid further calls.
20265         (mono_arch_create_class_init_trampoline): New arch specific function 
20266         to create a class init trampoline.
20267         (create_trampoline_code): Generalized so it can create
20268         class init trampolines as well.
20269
20270         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20271         (mono_create_class_init_trampoline): New function to create and cache
20272         class init trampolines.
20273         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20274         vtable given the address of a class init trampoline. Used by the
20275         patching process.
20276         (mono_codegen): Generate a call to a trampoline instead of
20277         mono_runtime_class_init in LDSFLD[A].
20278         (mono_codegen): Add relocations for the new trampoline.
20279         
20280         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20281         MONO_PATCH_INFO_CLASS_INIT.
20282
20283         * mini.h: Bump AOT version number.
20284
20285         * aot.c: Create a copy of the loaded code instead of using the original
20286         so methods which call each other will be close in memory, improving
20287         cache behaviour.
20288         
20289         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20290         patch since it breaks the regression tests.
20291         
20292         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20293         for the register saving instruction sequence since the 
20294         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20295
20296 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20297
20298         * TODO: Fix todo item && remove another.
20299
20300 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20301
20302         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20303         previous checkin.
20304
20305         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20306         function of the module.
20307
20308         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20309         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20310         --no-aot command line option.
20311
20312 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20315         by Bernie Solomon (bernard@ugsolutions.com).
20316
20317         * inssel.brg: Refactor the interface offset table related code into
20318         its separate functions and add support for the AOT case.
20319
20320 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20321
20322         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20323         
20324         * aot.c: Added mono_aot_verbose variable and made all debugging
20325         output depend on the value of this variable.
20326
20327         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20328         method_label and info_label.
20329
20330         * mini.h mini-x86.c aot.c: Added a new relocation type 
20331         MONO_PATCH_INFO_IID for klass->interface_id.
20332
20333         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20334         the MonoJitInfo structure.
20335
20336         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20337         a non-root appdomain in shared mode.
20338
20339 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20340
20341         * aot.c: make aot loader less verbose. Remove free of unused variable.
20342
20343 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20346
20347         * .cvsignore: Added *.dll.
20348
20349         * mini.c (mono_print_tree_nl): New function callable while debugging.
20350
20351         * mini.c (mono_print_code): Export this.
20352
20353         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20354         patched code.
20355
20356 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * mini.h (MonoCompile): Added 'jit_info' field.
20359
20360         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20361         the cfg structure, since it is needed by the AOT compiler.
20362
20363         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20364
20365         * aot.c: A major rewrite. Changes include:
20366         - save exception tables for methods which have them.
20367         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20368         to g_module_symbol.
20369         - reworked the file format so it is now much smaller and needs
20370         fewer relocation entries.
20371         
20372 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * aot.c (load_aot_module): Fix build bustage on platforms without
20375         Boehm GC.
20376
20377 2003-09-04  Martin Baulig  <martin@ximian.com>
20378
20379         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20380
20381 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20382
20383         * TODO: Some new optimization ideas.
20384
20385         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20386
20387         * aot.c: Save the optimization flags used to compile the code into
20388         the AOT module.
20389
20390         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20391         support emitting domain specific code.
20392         
20393         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20394         no longer domain neutral. It can be made domain neutral by compiling 
20395         with --optimize=shared.
20396
20397         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20398         between appdomains.
20399
20400         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20401         loading of AOT code.
20402
20403         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20404         
20405         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20406         if there is no domain neutrality information.
20407
20408 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20411         format version into the generated library.
20412
20413         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20414         callee method into the caller since one of them could be shared.
20415
20416         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20417         system exceptions from AOT code now works.
20418
20419         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20420         method if it is domain neutral and the callee is not.
20421
20422         * graph.c (cfg_emit_one_loop_level): Fix warning.
20423
20424 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20427         last checkin.
20428
20429 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20432         is needed  by code which is executed before mono_runtime_init ().
20433         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20434         
20435         * mini.c (mono_thread_abort): Fix warning.
20436         (mono_jit_compile_method): Call static constructor in the AOT case too.
20437
20438         * aot.c (mono_compile_assembly): Fix warning.
20439
20440 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20441
20442         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20443
20444 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20447
20448         * cpu-pentium.md: Fix the length of call opcodes so they include the
20449         ESP restoring instruction. Fixes #47968.
20450
20451 2003-08-28  Martin Baulig  <martin@ximian.com>
20452
20453         * mini-x86.c (mono_arch_call_opcode): Added support for
20454         MONO_TYPE_GENERICINST.
20455
20456         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20457
20458 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20461         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20462
20463         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20464         metadata_section.
20465
20466 2003-08-26  Martin Baulig  <martin@ximian.com>
20467
20468         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20469         when reporting an error, set this to the actual error location.
20470         (mono_method_to_ir): Report the correct error location if
20471         get_basic_blocks() returned an error.
20472
20473 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20474
20475         * mini.c (mono_type_blittable): OBJECT is not blittable.
20476         (mono_method_blittable): Methods which have marshalling descriptors
20477         are not blittable either. Fixes #47842.
20478
20479 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20480
20481         * driver.c mini.c: Use an environment variable instead of a global 
20482         variable. Also fix the build.
20483
20484         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20485         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20486         reporting this. 
20487
20488         * driver.c mini.c: Added --with-valgrind option to turn off some
20489         code which prevents mono from running under valgrind.
20490
20491         * mini.c (mono_emit_call_args): Fixed warning.
20492
20493         * mini.c (mono_emulate_opcode): Fixed warning.
20494
20495 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20496
20497         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20498         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20499         regalloc.c, regalloc.h: specify available registers in arch-specific
20500         code and support floats in the regallocator (patch by Laurent Morichetti 
20501         <l_m@pacbell.net>)
20502
20503 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20504
20505         * mini.c: mono_thread_current() can be called only after
20506         mono_runtime_init(): rearrange code to not call it early on.
20507
20508 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20509
20510         * mini.c: allocate jump tables in the code mempools.
20511
20512 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20513
20514         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20515         freed.
20516
20517 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20518
20519         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20520         12 to 16.  This fixes bug #47453.
20521
20522
20523 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20524
20525         * mini-ppc.c: fixed indexed load and unsigned compares.
20526
20527 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20528
20529         * mini.c: reenabled installation of handler for
20530           thread abort signal.
20531
20532 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20533
20534         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20535         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20536         until it's fixed and actually useful.
20537
20538 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20539
20540         * inssel-long32.brg: couple more opcodes implemented.
20541
20542 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20543         
20544         * mini-sparc.c: Even more opcodes implemeted.
20545
20546 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20547
20548         * mini-sparc.c: More opcodes implemented.
20549
20550 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20551
20552         * mini-sparc.c: More opcodes implemented.
20553
20554 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20555
20556         * inssel-sparc.brg: Add some needed rules.  Direct
20557         copy from PPC.
20558         * Makefile.am: Use inssel-sparc.brg
20559         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20560         an assert happy for now.
20561
20562 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20563
20564         * mini-sparc.c: Fixed compile errors.
20565         * exceptions-sparc.c: Same.  We now produce a mono binary 
20566         on sparc-linux.  Yea.
20567
20568 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20569
20570         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20571         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20572         They compile, but do not work.
20573
20574 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20575
20576         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20577         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20578         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20579         (ct@gentoo.org).
20580
20581 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20582
20583         * mini.c: more opcodes implemented and better support for generics.
20584
20585 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20586
20587         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20588         * mini.c, mini.h: first cut at generics support: some new instructions 
20589         added and changed the behaviour of some of the existing ones.
20590
20591 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20592
20593         * mini.c: Removed definition of metadata_shared mutex here.
20594
20595 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20596
20597         * mini-x86.c: make vararg calls work for instance methods.
20598
20599 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20600
20601         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20602         returns the arguments in a separte list, now.
20603
20604 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20605
20606         * aot.c, mini.c: updates for array type representation changes.
20607
20608 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20609
20610         * mini.c: register function to perform jit shutdown.
20611
20612 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20613
20614         * mini.c: use a faster allocator if possible.
20615
20616 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20617
20618         * aot.c: some cleanups and portability changes.
20619
20620 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20621
20622         * mini.c: use faster allocation for CEE_BOX if possible.
20623
20624 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20625
20626         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20627         Moved inlined mempcy code to its own function so that is can be
20628         reused. Added an inline memset function as well (optimized initobj).
20629         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20630
20631 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20632
20633         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20634
20635 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20636
20637         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20638         arch code can setup the cpu for CLR execution, if needed.
20639         We use it on x86 to set the precision of FP operations.
20640
20641 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20642
20643         * mini.c: disable some optimizations if we can guess they'll cost too
20644         much for a given method.
20645
20646 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20647
20648         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20649         
20650 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20651         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20652         info collection support.
20653
20654 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20655
20656         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20657         is now implemented in the profiling API. Get rid of a couple of
20658         unnecessary global variables.
20659
20660 2003-06-15  Nick Drochak <ndrochak@gol.com>
20661
20662         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20663         * cpu-g4.md: add op_bigmul and op_bigmul_un
20664         * cpu_pentium.md: add op_bigmul_un
20665         * inssel-long32.brg: add rule for unsigned bigmul
20666         * mini-ops.h: define OP_BIGMUL_UN
20667         * mini-x86.c: THE BUG: handle (un)signed properly
20668         * mini.c: choose unsigned opcode if needed.
20669         This set of patches fixes bug #44291
20670
20671 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20672
20673         * mini.c (optimize_branches): improved to handle all kinds of
20674         conditional branches.
20675
20676 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20677
20678         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20679         don't raise exceptions.
20680
20681 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20682
20683         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20684         to arch-specific files.
20685
20686 2003-06-09  Martin Baulig  <martin@ximian.com>
20687
20688         * Makefile.am (libs): Added $(LIBGC_LIBS).
20689
20690 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20691
20692         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20693         and OP_ATAN (fixes bug#44293).
20694
20695 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20696
20697         * Makefile.am, mini-x86.c: rename cpu description array to
20698         pentium_desc, since some compilers define the 'pentium' preprocessor
20699         symbol.
20700
20701 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20702
20703         * mini.c (mini_select_instructions): add explicit branch if the
20704         following block is not the false target of a conditional branch -
20705         we need this with any optimization that reorder or remove bblocks
20706
20707         * mini.c (optimize_branches): bug fixes
20708
20709 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20710
20711         * mini.c (mono_method_to_ir): inline static readonly fields
20712
20713         * ssa.c (fold_tree): start cfold support for long (very simple
20714         cases only)
20715
20716         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20717
20718 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20719
20720         * inssel.brg: fixed memcpy (bug #44219).
20721
20722 2003-06-05  Dick Porter  <dick@ximian.com>
20723
20724         * driver.c: Set the glib log levels to not abort if g_message
20725         recurses.
20726
20727         g_set_prgname() has to happen before mini_init() so that the
20728         process handle gets the info.
20729         
20730 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20731
20732         * driver.c: add intrins to the default optimizations to get wider
20733         exposure.
20734
20735 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20736
20737         * mini.h: some large basic blocks will overflow a 16-bit
20738         integers for symbolic registers.
20739
20740 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20741
20742         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20743         (mono_arch_output_basic_block): fix bug 43499 
20744
20745 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20746
20747         * mini.c: kill duplicated definition of mono_debug_format.
20748
20749 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20750
20751         * mini-x86.c, arrays.cs: fixed register allocation bug.
20752
20753 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20754
20755         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20756
20757         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20758
20759 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20760
20761         * mini.c:
20762         (print_method_from_ip): also print source location information if
20763         available.
20764
20765 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20766
20767         * mini.c (mono_find_block_region): bug fix in region code
20768         (mini_method_compile): enable removing unreachable code again, but
20769         only in methods without exception clauses.
20770
20771 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20772
20773         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20774         Implemented arglist opcode and handling of TypedReference type.
20775         Fixed x86 call convention when a structure is returned.
20776         Minimal support for calling static vararg methods.
20777
20778 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20779
20780         * mini.c (mini_method_compile):  always remove unreachable code,
20781         because the code in them may be inconsistent  (access to dead
20782         variables for example).
20783
20784 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20785
20786         * driver.c, debug-mini.c: warning fixes.
20787
20788 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20789
20790         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20791
20792 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20793
20794         * mini.c: thread-static fields are registered in mono_class_vtable(),
20795         so ensure the function is called before checking for them.
20796
20797 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20798
20799         * mini.c (optimize_branches): fix for bug 43586
20800
20801         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20802         overflow (fixes Bug #43639)
20803
20804 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20805
20806         * mini.c, objects.cs: allow the use of stobj for primitive types.
20807
20808 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20809
20810         * mini.c: be less strict about argument checking until we support
20811         running the verifier.
20812
20813 2003-05-27  Nick Drochak <ndrochak@gol.com>
20814
20815         * basic-long.cs: tests for (ulong)int * (ulong)int also
20816         * mini.c: use the same trick for (ulong)int * (ulong)int
20817
20818 2003-05-27  Nick Drochak <ndrochak@gol.com>
20819
20820         * basic-long.cs: add regression test for (long)int * (long)int
20821         * cpu-pentium.md: add op_bigmul specification
20822         * inssel-long32.brg: add OP_BIGMUL rule
20823         * mini-ops.h: add OP_BIGMUL
20824         * mini-x86.c: register allocator: handle case where src1 needs to be
20825         in EAX.
20826         * mini.c: substitute special BIGMUL opcode in the tree for 
20827         (long)int * (long)int
20828
20829 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20830
20831         * jit-icalls.c: call the type ctor on field access if needed.
20832
20833 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20834
20835         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20836         to a method (including results of ldelema, bug#43207).
20837
20838 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20839
20840         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20841         colors to show exception handler blocks.
20842
20843         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20844         (fix for pinvoke7.cs).
20845
20846 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20847
20848         * mini.h, mini.c: ensure correct initialization order for types that
20849         require it. Prepare for lazy compilation of jit icall wrappers.
20850         Provide a name for opcode emulation to reduce unneeded mallocing.
20851
20852 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20853
20854         * mini-x86.c: better register restoring code and profiling
20855         support for tail calls.
20856
20857 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20858
20859         * mini.h, driver.c: prepare for leaf methods optimization.
20860
20861 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20862
20863         * mini.c: get targets of branches before converting a method.
20864
20865 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20866
20867         * mini.c (optimize_branches): added some experimental code (disbaled) 
20868
20869 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20870
20871         * mini.c (optimize_branches): fix branch to branch optimization 
20872
20873         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20874
20875         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20876
20877         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20878
20879         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20880         if needed.
20881
20882 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20883
20884         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20885         enable use of interface variables again.
20886
20887         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20888         I1 to registers because there is no simply way to sign extend 8bit
20889         quantities in caller saved registers on x86.
20890
20891         * inssel-float.brg: set costs of some rules to 2 so
20892         that monobure always select the arch. specific ones if supplied,
20893         regardless of the order we pass the files to monoburg.
20894
20895 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20896
20897         * mini.c, mini-x86.c: since the magic trampoline for jumps
20898         can't patch the code directly, we do it as soon as the
20899         method gets compiled.
20900
20901 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20902
20903         * mini-x86.c, mini.h: introduce a new patching method
20904         to support CEE_JMP and tail calls.
20905         * mini.c: obey tail.call. Don't precompile methods target
20906         of CEE_JMP.
20907         * tramp-x86.c: new trampoline code to handle methods
20908         reached through a jump.
20909
20910 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20911
20912         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20913         bit values to registers
20914
20915 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20916
20917         * mini.c (mono_compile_get_interface_var): share interface
20918         variables if possible.
20919
20920 2003-05-16  Martin Baulig  <martin@ximian.com>
20921
20922         * debug-mini.c (mono_init_debugger): New function to initialize
20923         the debugger.  This is not in the debugger since it needs to
20924         access some of mini's internals.
20925
20926 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20927
20928         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20929
20930 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20931
20932         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20933         for value type handling.
20934
20935 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20936
20937         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20938         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20939
20940 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20941
20942         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20943           the constructor through a proxy.
20944
20945 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20946
20947         * jit-icalls.c, inssel.brg: fixes to array element address
20948         calculations.
20949
20950 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20951
20952         * mini-x86.c (is_regsize_var): allocate pointer to registers
20953
20954 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20955
20956         * driver.c: fixed typo, added intrins to the set of optimizations
20957         tested with regressions.
20958
20959 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20960
20961         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20962         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20963         test case.
20964
20965 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20966
20967         * inssel.brg: remove some common pop instructions without side effects
20968
20969 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20970
20971         * inssel-x86.brg: fixed thinko in int to double conversions.
20972
20973 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20974
20975         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20976
20977 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20978
20979         * inssel-long32.brg: two more missing instructions.
20980
20981 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20982
20983         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20984         if not already set.
20985
20986 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20989         correctly.
20990
20991         * basic-float.cs: Added tests for negative zero.
20992
20993 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20994
20995         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20996         a couple of missing operations for long casts, with test cases.
20997
20998 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20999
21000         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21001
21002 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21003
21004         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21005         code size estimation.
21006
21007 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21008
21009         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21010         abstract methods (fix bug 42542)
21011
21012         * aot.c: add ability to handle array types
21013         
21014 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21015
21016         * mini.c: Call the _specific versions of the object allocation
21017         functions if possible.
21018
21019 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21020
21021         * driver.c: call setlocale ().
21022
21023 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21024
21025         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21026         windows build.
21027
21028 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21029
21030         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21031
21032         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21033         wrappers (fix bug 42122)
21034
21035 2003-05-04  Martin Baulig  <martin@ximian.com>
21036
21037         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21038
21039         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21040         s/mini_set_defaults/mono_set_defaults/g.
21041
21042 2003-05-04  Martin Baulig  <martin@ximian.com>
21043
21044         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21045
21046 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21047
21048         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21049         (reported by Don Roberts).
21050
21051 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21052
21053         * mini.c: temporarily work around two bugs for this release.
21054
21055 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21056
21057         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21058         that contains -export-dynamic and it makes using the ld script
21059         useless.
21060         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21061
21062 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21063
21064         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21065         specific cpu.
21066
21067 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21068
21069         * mini.c: make sure leave calls all the needed finally blocks,
21070         even when the target jumps out of multiple exception clauses.
21071
21072 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21073
21074         * ldscript, Makefile.am: add linker script to reduce the number of
21075         exported symbols (should also fix the issues with libwine defining
21076         some of the same symbols in io-layer).
21077
21078 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21079
21080         * driver.c (mini_main): Avoid assertion when no file name is given on 
21081         the command line.
21082
21083 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21084
21085         * driver.c: added --version/-V command line option.
21086         Added the inline optimization in the regression tests.
21087
21088 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21089
21090         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21091         to the type in the method signature (fixes bug#42134).
21092
21093 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21094
21095         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21096
21097 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21098
21099         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21100
21101 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21102
21103         * driver.c: fixed bug #42100.
21104
21105 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21106
21107         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21108
21109 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21110
21111         * mini.c: moved most of the code required to do inlining to its own
21112         function so it can be reused. Inline also ctors if appropriate.
21113
21114 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21117         the runtime can call mono API functions.
21118
21119 2003-04-27  Martin Baulig  <martin@ximian.com>
21120
21121         * debug-mini.c (mono_debug_init_method): Added
21122         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21123         send a notification to the debugger.
21124
21125         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21126         running in the Mono Debugger, just pass the breakpoint number to
21127         mono_debug_init_method().
21128
21129         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21130
21131 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21132
21133         * mini.c: allow some more unsafe compares.
21134
21135 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21136
21137         * mini-x86.c, Makefile.am: make distcheck works (partially from
21138         a patch by Richard Lee <r.h.lee@attbi.com>).
21139         * regset.c, regset.h: removed, they are unused.
21140
21141 2003-04-25  Dick Porter  <dick@ximian.com>
21142
21143         * driver.c: Usage reports the name as 'mono' not 'mini'
21144         * exceptions-x86.c: Build and run on freebsd
21145
21146 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21147
21148         * Makefile.am: install the program with the 'mono' name and
21149         the library as libmono instead of mini and libmini.
21150
21151 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21152
21153         * driver.c: provide the APIs for the embedding interface of the old jit.
21154
21155 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21156
21157         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21158
21159 2003-04-23  Martin Baulig  <martin@ximian.com>
21160
21161         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21162
21163         * driver.c: Added `--debug' command line argument to enable
21164         debugging support.
21165
21166 2003-04-23  Martin Baulig  <martin@ximian.com>
21167
21168         * debug.[ch]: Removed.  The code is now in
21169         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21170
21171         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21172         last six months.
21173
21174 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21175
21176         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21177
21178 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21179
21180         * mini.c:
21181         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21182         mono_domain_finalize.
21183         (mini_method_compile): use mono_method_profile* if the the option is
21184         enabled.
21185
21186 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21187
21188         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21189         methods with their wrapper.
21190
21191         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21192         methods with their wrapper.
21193
21194         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21195         their wrapper.
21196
21197         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21198         wrapper.
21199
21200         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21201         methods.
21202
21203 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21204
21205         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21206
21207 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21208
21209         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21210         of the mempool. This is slightly faster and uses less memory
21211
21212 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21213
21214         * mini.c: avoid O(n) allocation for variables.
21215
21216 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21217
21218         * mini.c: handle items on the stack after inlining methods.
21219
21220 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21221
21222         * mini.c: make the method->opcode optimization dependent
21223         on MONO_OPT_INSTRINS and do it lazily.
21224
21225 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21226
21227         * driver.c: print overall results at the end of regression run.
21228
21229 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21230
21231         * inssel.brg: don't overwrite symbolic registers.
21232
21233 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21234
21235         * inssel-x86.brg: fix conversion from long to float.
21236
21237 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21238
21239         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21240
21241 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21244
21245         * driver.c: Added --print-vtable option as in the old JIT.
21246
21247 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21248
21249         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21250
21251 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21252
21253         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21254
21255 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * mini.c regalloc.c regalloc.h: Fix memory leak.
21258
21259 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21260
21261         * aot.c (mono_aot_get_method): register all used strings
21262
21263 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21264
21265         * mini.c: always intern strings references with ldstr at compile time.
21266
21267 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21268
21269         * Makefile.am: add BUILT_SOURCES.
21270
21271 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21272
21273         * driver.c: give a better error message when the assembly to execute
21274         doesn't have an entry point.
21275
21276 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21277
21278         * Makefile.am: added hack for automake
21279
21280         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21281         correct sematics.
21282
21283         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21284
21285 22003-04-07  Martin Baulig  <martin@ximian.com>
21286
21287         * Makefile.am: Added Makefile.am.
21288
21289         * debugger-main.c: Removed, this is now in the debugger where it
21290         belongs.
21291
21292         * mini.pc.in: Call this package `mini' for the moment.
21293
21294
21295
21296
21297
21298
21299
21300
21301
21302
21303
21304
21305
21306
21307