2009-06-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4         determine whenever a method is directly callable to a separate function.
5
6         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
7         needed ones as a result of the previous change.
8
9         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
10         type of register arrays.
11
12         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
13         type of register arrays.
14
15 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
16         
17         Contributed under the terms of the MIT/X11 license by
18         Jerry Maine <crashfourit@gail.com>.
19
20         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
21
22 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
23
24         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
25
26 2009-06-24  Neale Ferguson <neale@sinenomine.net>
27
28         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
29         dump of structure return value. Fix some formatting.
30         * cpu-s390x.md: Fix lengths of instruction sequences.
31         * mini-s390.c: Minor formatting changes.
32
33 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
34
35         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
36         Use sigaction on freebsd as well.
37
38 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
39
40         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
41         uses #ifdef on it.
42         
43         * mini.c (mini_init): Revert a change which breaks cross-compilation.
44
45 2009-06-22  Mark Probst  <mark.probst@gmail.com>
46
47         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
48
49 2009-06-22  Mark Probst  <mark.probst@gmail.com>
50
51         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
52
53 2009-06-20  Martin Baulig  <martin@ximian.com>
54
55         * debug-mini.c
56         (MonoDebuggerThreadFlags): New enum typedef.
57         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
58         (mono_debugger_thread_created): Added `gpointer func' argument;
59         initialize the new `thread_flags' field.
60
61 2009-06-18  Martin Baulig  <martin@ximian.com>
62
63         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
64         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
65
66         * debug-debugger.c
67         (mini_debugger_set_attach_ok): New function; sets the attach-ok
68         flag in `MONO_DEBUGGER__info.runtime_info'.
69
70         * driver.c
71         (mono_main): Call mini_debugger_set_attach_ok() if generics
72         sharing is disabled.
73
74 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
75
76         * aot-compiler.c (add_wrappers): Fix a warning.
77
78         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
79         the ppc load/store macro changes.
80
81 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
82
83         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
84
85         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
86         not just the got symbol.
87
88         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
89         on ppc.
90
91         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
92         ppc.
93         
94         * aot-compiler.c: Remove some fixmes.
95
96         * driver.c (mono_main): Print a helpful message when cross-compiling.
97
98         * mini.c (mini_init): Disable signal handlers when cross-compiling.
99
100         * method-to-ir.c (initialize_array_data): Do the optimization if the
101         target byte order is little endian, instead of the host byte order.
102
103         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
104         wrappers into the mscorlib image, Emit a unique plt symbol for each
105         image, emit symbols for plt entries.
106
107         * image-writer.c (img_writer_emit_symbol_size): New function to emit
108         a .size directive.
109         
110 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
111
112         * aot-compiler.c (add_wrappers): Avoid calling 
113         mono_marshal_get_type_info () since it can assert for some types.
114
115         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
116         ldtoken are used inside wrappers.
117
118         * helpers.c: Add support for prefixing tools with the arch name.
119
120         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
121         quantities when using ilp32.
122
123         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
124         spill slots. Use sizeof(mgreg_t) for the spill slot size.
125
126         * image-writer.c: Use .long on ilp32.
127
128         * aot-compiler.c: Use 32 bit loads on ilp32.
129         
130 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
131
132         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
133
134         * mini-ops.h: Use TARGET_POWERPC define for consistency.
135
136         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
137
138         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
139         second got slot of every aot image.
140         
141         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
142         aot on platforms with function pointers.
143
144         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
145         support for aot/full aot on ppc/ppc64.
146         
147         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
148         arguments which are needed on ppc.
149
150         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
151         argument.
152
153         * mini-trampolines.c aot-runtime.c: Update after the above changes.
154         
155         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
156
157         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
158
159         * aot-compiler.c (emit_got_info): Fix reading unused memory.
160
161         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
162
163 2009-06-17  Geoff Norton  <gnorton@novell.com>
164
165         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
166
167 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
168
169         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
170         to control whenever the dwarf writer is in xdebug or aot mode.
171         (emit_class_dwarf_info): Use a separate abbrev for structures without
172         children.
173
174         * aot-compiler.c: Pass the appending parameter to 
175         mono_dwarf_writer_create ().
176
177         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
178         falls through to its next bblock. Fixes #513931.
179
180         * iltests.il: Add a test.
181
182         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
183         infor even if emit_line is FALSE, as the apple linker seems to require it.
184
185         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
186
187         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
188         gcc does.
189         (emit_fde): Ditto.
190
191 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
192
193         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
194         mips build.
195
196 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
197
198         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
199         'has_call_handler' fields.
200
201         * method-to-ir.c (mono_method_to_ir): Set them if needed.
202
203         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
204         first bblock if not needed. Fixes #512790.
205         
206 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
207
208         * aot-compiler.c (mono_compile_assembly): Fix a warning.
209         
210         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
211         wrappers.
212
213         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
214         remoting-invoke-with-check wrappers, which are not needed when running with
215         full-aot, since it doesn't support remoting.
216         
217 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
218
219         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
220
221         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
222         method info, it is not used anymore.
223
224         * mini.h: Bump AOT file format version.
225         
226         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
227         word smaller.
228
229         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
230         change above.
231         
232         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
233
234         * mini.h: Bump AOT file format version.
235         
236 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
237
238         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
239         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
240         iphone.
241
242         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
243         of CKFINITE and FBGE for VFP.
244
245 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
246
247         * aot-compiler.c: Don't align code to 16 bytes on arm.
248         
249         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
250         before the methods they belong to.
251
252         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
253         the full-aot case if possible, since the trampoline will be called right 
254         away.
255
256         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
257         trampolines to 1024 after the change above.
258
259         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
260         trampoline to save 8 bytes per trampoline.
261
262         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
263         change above.
264
265 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
266
267         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
268
269 2009-06-08  Martin Baulig  <martin@ximian.com>
270
271         * debug-mini.c
272         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
273         (_mono_debugger_throw_exception): Don't make this static.
274         (_mono_debugger_unhandled_exception): Likewise.
275         (mono_debugger_handle_exception): Moved to mini-exceptions.c
276
277         * debug-mini.c
278         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
279         (_mono_debugger_throw_exception): Add function prototype.
280         (_mono_debugger_unhandled_exception): Likewise.
281
282         * mini-exceptions.c
283         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
284         arg; return the first exception handler if the exception is caught
285         and we're running inside the debugger.
286         (mono_debugger_handle_exception): Moved here from debug-mini.c;
287         improve exception handle inside runtime-invoke, check whether the
288         exception is actually caught in the method being invoked and not
289         by the runtime-invoke-wrapper.
290
291 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
292
293         * image-writer.c: Improve support for the osx assembler.
294
295         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
296         support them.
297
298 2009-06-08  Martin Baulig  <martin@ximian.com>
299
300         * debug-mini.c
301         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
302         (_mono_debugger_throw_exception): Don't make this static.
303         (_mono_debugger_unhandled_exception): Likewise.
304         (mono_debugger_handle_exception): Moved to mini-exceptions.c
305
306         * debug-mini.c
307         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
308         (_mono_debugger_throw_exception): Add function prototype.
309         (_mono_debugger_unhandled_exception): Likewise.
310
311         * mini-exceptions.c
312         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
313         arg; return the first exception handler if the exception is caught
314         and we're running inside the debugger.
315         (mono_debugger_handle_exception): Moved here from debug-mini.c;
316         improve exception handle inside runtime-invoke, check whether the
317         exception is actually caught in the method being invoked and not
318         by the runtime-invoke-wrapper.
319
320 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
321
322         * image-writer.c (append_subsection): Don't align subsections of the
323         debug_line section as a workaround.
324
325         * dwarfwriter.c: Emit line number info in the AOT case as well.
326
327 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
328
329         This patch is contributed under the terms of the MIT/X11 license
330
331        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
332        code_len <= code_size
333
334 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
335
336         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
337
338 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
339
340         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
341         invoke wrappers, we now use trampolines instead.
342
343 2009-06-04  Mark Probst  <mark.probst@gmail.com>
344
345         * mini-darwin.c: The exception thread must not be registered with
346         the GC.
347
348 2009-06-04  Mark Probst  <mark.probst@gmail.com>
349
350         * mini-gc.c: Disable the code because it makes SGen crash.
351
352 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
353
354         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
355         instead of asserting.
356
357 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
358
359         * aot-compiler.c (mono_compile_assembly): Move the creation of the
360         output file after the code has been compiled.
361
362 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
363
364         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
365
366 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
367
368         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
369         entries distinction to simplify the code.
370
371         * mini.h: Bump AOT file format version.
372         
373 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
374
375         * objects.cs: Fix the signature of one of the tests.
376
377         * mini.c (mini_create_ftnptr): New helper function, moved here from
378         object.c.
379         (mini_get_addr_from_ftnptr): Ditto.
380         (mini_init): Install the new helpers.
381
382 2009-05-28  Martin Baulig  <martin@ximian.com>
383
384         Correctly initialize the debugger when embedding Mono.
385
386         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
387         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
388         see documentation in mini_debug_running_inside_mdb().
389
390         * debug-debugger.c
391         (mini_debug_running_inside_mdb): New function to check whether
392         we're running inside mdb.
393
394         * mini.c (mini_init): Call mini_debugger_init() if we're running
395         inside the debugger.
396
397         * driver.c (mono_main): Moved the call to mini_debugger_init()
398         into mini_init() to make this work when embedding Mono.
399
400         * debug-debugger.c (mini_debugger_init): Warn about duplicate
401         calls to mini_debugger_init().
402
403         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
404         mono_debugger_main() -> mini_debugger_main() and put them inside a
405         `MONO_DEBUGGER_SUPPORTED' conditional.
406
407 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
410         this is no longer in use.
411         * mini.h: Same.
412
413 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
414
415         * mini-sparc.c (add_outarg_load): Fix the sparc build.
416
417         * aot-compiler.c (emit_method_code): Always write out C style symbols for
418         methods.
419
420 2009-05-27  Martin Baulig  <martin@ximian.com>
421
422 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
423
424         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
425         long_conv_to_r_un to 64 bits.
426
427         * cpu-x86.md: Increase the instruction size due to the changes.
428
429         * iltests.il.in: Add regression test.
430
431         Fixes #467201.
432
433 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
434
435         * objects.cs: Move the previous test from basic.cs to here.
436
437 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
438
439         * basic.cs: Add regression test for #506915.
440
441 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
442
443         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
444         optimization we must check the bb of the first byte of stobj as
445         it's the only one set in cil_offset_to_bb.
446
447         Fixes #506915.  
448
449 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
450
451         * image-writer.c: Fix pointer directive on ppc64.
452
453 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
454
455         * image-writer.c (asm_writer_emit_section_change): Avoid using
456         .bss subsections on ppc too.
457
458 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
459
460         * image-writer.c: Fix the definition of TARGET_ASM_....
461         
462         * image-writer.c: Fix the emission of assembler directives in the last
463         change.
464
465         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
466         exception throwing code to accomodate ppc64.
467
468         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
469         size to work on ppc64 too.
470
471         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
472         too.
473
474         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
475         the assembler dialect instead of using platform specific defines.
476
477 2009-05-22  Geoff Norton  <gnorton@novell.com>
478
479         * mini-arm.c (get_call_info): If a structure is split between the stack
480         and argument registers, we should not advance the stack pointer by the entire
481         native size, but just by the amount that spilled.
482
483 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
484
485         * mini-arm.c (get_call_info): Handle structures with alignment requirements
486         correctly.
487
488 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
489
490         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
491         wrappers normally.
492         
493         * aot-compiler.c (add_extra_method): Fix up the collection of extra
494         methods so wrapper don't get added twice.
495         (add_generic_instances): Don't add methods of arrays.
496
497         * generics.cs: Mark one test as !FULLAOT.
498
499 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
500
501         * mini-x86.c (emit_move_return_value): Remove unused vars.
502
503 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
504
505         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
506         decomposing 8 bytes structs into a LCALL.
507
508         * mini-x86.c (emit_move_return_value): We no longer push the vtype
509         pointer for where to store the returned regs.
510
511         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
512         state the concern.
513
514         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
515
516 2009-05-20  Miguel de Icaza  <miguel@novell.com>
517
518         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
519         without getenv.
520
521 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
522
523         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
524
525         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
526         generics.
527
528 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * local-propagation.c (mono_local_cprop): Avoid local propagation
531         across paired add/sub if the first instruction dest reg is it's
532         source reg. For example:
533
534         int_add_imm R12 <- R12 [1] clobbers: 1
535         int_sub_imm R42 <- R12 [1] clobbers: 1
536
537         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
538         maintain the math identify.
539
540         Fixes #505375.
541
542 2009-05-20  Andreia Gaita  <avidigal@novell.com>
543
544         * Makefile.am: avoid going on the network just to get the revision,
545         use git log instead
546
547 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
548
549         Fixed estimate for short branches on amd64 (they were off mark, and
550         enabling call prolog-epilog instrumentations caused assertions).
551         * mini.h (struct MonoBasicBlock): added max_length field to hold the
552         estimate for the maximum length of this basic block.
553         * mini-amd64.c:
554         - mono_arch_emit_prolog: compute max_length for each basic block
555           (instead of max_offset), and inflate size estimate also for entry bb
556           in case of code instrumentation.
557         - mono_arch_output_basic_block: get rid of "cpos" (the current
558           estimated "position" in the code), and always use "offset" instead,
559           which is accurate; at the beginning of the function quickly recompute
560           max_offset for all the remaining blocks, starting from the current
561           cfg->code_len (which is correct, and not estimated) and using the
562           estimated block lengths computed previously.
563
564 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
565
566         * exceptions-ppc.c: Remove the caching from the trampoline creation 
567         functions, it is already done in the caller.
568
569         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
570
571         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
572         MONO_ARCH_GSHARED_SUPPORTED define.
573
574         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
575
576         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
577         function.
578
579 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
580
581         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
582         call to mono_marshal_get_rgctx_invoke ().
583
584         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
585         mono_marshal_get_static_rgctx_invoke (), all platforms which support
586         gshared use the static rgctx trampolines now.
587         
588         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
589         platform supports it.
590
591 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
592
593         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
594
595         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
596
597 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
598
599         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
600
601         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
602         for ppc.
603
604 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
605
606         Made it possible for mono_arch_instrument_epilog to preserve
607         argument registers, otherwise instrumenting the "epilogue" before
608         a tail call would clobber them.
609         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
610         if like mono_arch_instrument_epilog but with an additional parameter
611         that states if argument registers must be preserved.
612         * mini.c: implemented mono_arch_instrument_epilog as a call to
613         mono_arch_instrument_epilog_full without asking to preserve argument
614         registers (this makes the existing code work as usual).
615         * mini-amd64.c:
616         - mono_arch_instrument_epilog: add parameter to transform it into
617         mono_arch_instrument_epilog_full, and preserve argument registers
618         when required.
619         - mono_arch_output_basic_block, OP_TAILCALL case: call
620         mono_arch_instrument_epilog_full.
621         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
622         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
623         only transformed mono_arch_instrument_epilog into
624         mono_arch_instrument_epilog_full.
625
626 2009-05-15  Geoff Norton  <gnorton@novell.com>
627
628         * mini-darwin.c: This works on arm now.
629
630 2009-05-14  Geoff Norton  <gnorton@novell.com>
631
632         * jit.h, driver.c: Allow full-aot to be decided programatically by the
633         embedding api.
634
635 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
636
637         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
638         label names.
639
640         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
641         wrappers during full aot mode correctly.
642
643         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
644         methods correctly.
645
646         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
647         mono_metadata_type_hash ().
648
649 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
650
651         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
652         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
653         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
654         Removed MONO_INST_BRLABEL from the instruction flags, and the
655         remaining code that used it, because we do not support branches inside
656         basic blocks (and branch target labels) anymore.
657         * Makefile.am: As part of the above cleanup, remove reference to
658         BURG files which don't exist anymore.
659
660 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
661
662         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
663         osx.
664
665         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
666         to use mono_arch_throw_corlib_exception.
667
668         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
669         mono_arch_throw_corlib_exception for throwing corlib exceptions.
670
671         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
672         domain mempool.
673
674         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
675
676         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
677         for the got to make debugging easier and to avoid confusing it with the
678         system got.
679         
680         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
681         method so a breakpoint can be set when using gdb.
682
683 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
684
685         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
686         on mono_method_get_imt_slot ().
687
688         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
689         num_decodes variables.
690
691         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
692         change as it doesn't seem to work.
693         
694         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
695         wrappers.
696
697 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
698
699         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
700         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
701
702         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
703         builder when using full aot.
704
705         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
706         here, it is already handled.
707         
708         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
709         correctly for IMT.
710
711         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
712
713         * mini-arm.h: Enable IMT for full aot.
714         
715         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
716         arch doesn't support it.
717
718         * mini.c (mini_init): Don't disable IMT for full aot if the
719         architecture supports it.
720
721         * mini.h (MonoAotTrampoline): New enum containing the different types
722         of 'numerous' trampolines.
723         (MONO_AOT_FILE_VERSION): Bump this.
724
725         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
726         static rgctx trampolines. Add support for full-aot IMT thunks.
727
728         * mini-amd64.h: Enable IMT for full aot.
729
730         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
731         to exclude tests belonging to a category.
732
733         * generics.cs: Mark some tests with a !FULLAOT category.
734
735         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
736         generics tests.
737
738 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
739
740         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
741         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
742         (emit_plt): Fix a warning.
743
744 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
745
746         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
747         back into aot-compiler.c to a place where the other functions shared by
748         the runtime and aot compiler are.
749         
750         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
751         as done previously, instead of in MonoAotFileInfo, since pointers might have
752         alignment requirements.
753
754         * mini.h: Bump AOT file format version.
755
756 2009-05-10  Miguel de Icaza  <miguel@novell.com>
757
758         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
759         that is used at runtime from the aot-compiler.c, this makes it
760         work on setups that remove the AOT compiler from the output
761         image. 
762
763 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
764
765         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
766         PPC.
767
768         * mini-ppc.h: Enable static rgctx trampolines for ppc.
769
770         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
771
772         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
773         stuff to mono_arch_decompose_long_opts ().
774         (mono_decompose_opcode): Remove some dead code.
775
776 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
777
778         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
779         cmethod can be null for quite a some reasons.
780
781 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
782
783         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
784
785 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
786
787         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
788
789 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
790
791         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
792         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
793         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
794         calls returning structures by addr on amd64.
795
796         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
797
798         * iltests.il.in: Restructure the tail call tests a bit.
799         
800 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
801
802         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
803         for virtual methods too.
804
805 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
806
807         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
808         due to regression in verifying System.dll.
809
810 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
811
812         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
813         in dynamic methods.
814
815         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
816         instances.
817
818         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
819         g_str_hash () which can change.
820
821         * driver.c (mini_regression): Disable optimizations not supported by
822         the cpu. Fixes #500019.
823
824         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
825         build.
826
827 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
828
829         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
830         to the latest LLVM code.
831
832 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
833
834         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
835
836 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
837
838         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
839         x86/amd64.
840
841         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
842         no longer saving offsets, so just save the patch types along with the other
843         info.
844         * aot-runtime.c (load_patch_info): Update after the changes to 
845         encode_patch_list ().
846         (decode_got_entry): Removed, merged into load_patch_info ().
847         (is_shared_got_patch): Removed, call the same function from
848         aot-compiler.c.
849
850         * mini.h: Bump aot file format version.
851         
852         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
853         half-finished no-dlsym code.
854
855         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
856         option.
857
858         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
859         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
860
861 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
862
863         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
864         buffer length to work with AOT code.
865
866         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
867         ldfld/stfld opcodes.
868
869         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
870         as it is not used.
871
872         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
873
874         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
875
876         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
877         LLVM API.
878
879         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
880         if needed. Don't decompose long operations when using llvm.
881
882 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
883
884         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
885         PAGESIZE constant.
886
887         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
888
889 2009-05-03  Martin Baulig  <martin@ximian.com>
890
891         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
892         mono_debugger_insert_method_breakpoint() since the class init
893         handler we're inserting at the top of the method already gives us
894         a notification.
895
896 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
897
898         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
899         to mono_arch_decompose_long_opts () for x86 and arm.
900
901 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
902
903         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
904         TARGET_AMD64 here.
905
906 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
907
908         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
909         JIT code.
910
911 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
912
913         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
914         number of trampolines used in full-aot mode.
915
916         * aot-compiler.c: Add an ntrampolines option to set the number of 
917         trampolines emitted in full-aot mode.
918
919 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
920
921         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
922         a volatile load. Get rid of get_tempname (), llvm assigns names
923         automatically.
924
925         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
926         builder function.
927
928         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
929         a value.
930
931         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
932         level 1.
933
934         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
935         to the same register as a fixed sreg2. Fixes #497271.
936
937         * iltests.il.in: Add a new test.
938
939 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
940
941         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
942         stack, since pushes complicate exception handling.
943
944         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
945         the stack if they are passed using moves.
946
947         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
948
949         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
950         when using llvm.
951
952         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
953         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
954         of FMOVE if it is an R4.
955
956 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
957
958         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
959
960         * mini.h (LLVMCallInfo): New structure to store calling convention 
961         information for the LLVM back end similar to the CallInfo structures in 
962         the back-ends.
963
964         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
965         call information in a format usable by LLVM.
966         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
967
968         * method-to-ir.c (mono_emit_call_args): Emit calls using 
969         mono_llvm_emit_call () when compiling using LLVM.
970
971         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
972         comments to all functions. Fix memory leaks. Add a public init/cleanup
973         function.
974
975         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
976
977         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
978         mono_array_new_va () jit icall.
979         
980 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
981
982         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
983         multiple machine description files to be specified.
984         * mini-ops.h: fixes for cross-compilation.
985
986 2009-04-22  Miguel de Icaza  <miguel@novell.com>
987
988         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
989         some porting work.
990
991 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
992
993         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
994         to prevent asserts in various passes. Fixes #497220.
995
996 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
997
998         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
999         a racy assert.
1000
1001         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1002         table to avoid duplicates.
1003
1004         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1005         
1006         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1007         option is used.
1008
1009 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1010
1011         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1012         is for method or field access.
1013
1014 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1017         a Value to stdout.
1018
1019         * mini-llvm.c (mono_llvm_emit_method): Use it.
1020         
1021         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1022         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1023         on volatile values.
1024
1025         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1026         synchronized methods.
1027
1028         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1029
1030         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1031
1032         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1033         OP_LOADI8_MEM.
1034
1035         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1036         allowing some options to be set dynamically.
1037
1038 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1041         unconditional branch.
1042
1043         * mini.h (MonoTrampolineType): Add new trampoline type 
1044         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1045         compiled code.
1046
1047         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1048         function.
1049
1050         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1051         creation function.
1052
1053         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1054         is enabled. Instead, use the llvm vcall trampoline.
1055         
1056         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1057
1058         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1059         
1060         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1061         functions.
1062
1063         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1064         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1065
1066         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1067         OP_IA64_CSET opcode.
1068
1069         * mini.c: Fix a warning.
1070
1071         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1072         THROW to the appropriate llvm type.
1073
1074 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * mini.c (mini_method_compile): Add statistics for methods JITted
1077         with/without LLVM.
1078
1079 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1080
1081         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1082         OP_IA64_CMP_<cond>_IMM opcodes.
1083
1084 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1087         corlib exceptions.
1088
1089         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1090         correctly.
1091
1092         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1093         GENERICINST.
1094
1095 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1096
1097         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1098
1099 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1102         support.
1103
1104         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1105         rgctx invoke trampolines for x86.
1106
1107         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1108         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1109         (mono_arch_get_vcall_slot): Simplify this.
1110
1111 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1114         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1115
1116 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1117
1118         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1119         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1120
1121         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1122
1123         * liveness.c (visit_bb): Remove a needless assert.
1124
1125 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1128         full aot support to the arch specific code.
1129
1130         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1131
1132         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1133
1134         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1135         
1136         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1137         collect information about the delegate invoke impl trampolines.
1138
1139         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1140         to save trampolines during full-aot mode.
1141
1142         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1143         creation function which returns a trampoline which sets the rgctx
1144         argument.
1145         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1146         wrapper if possible.
1147         (mono_delegate_trampoline): Ditto.
1148
1149         * mini.c (mono_jit_runtime_invoke): Ditto.
1150
1151         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1152         
1153         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1154
1155         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1156         
1157 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1160         just setting the opcode to OP_NOP.
1161
1162 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1163
1164         * mini.c (mini_method_compile): Put the last change inside an 
1165         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1166         
1167         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1168         and extend live ranges to cover the whole method when using xdb.
1169
1170         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1171         do it in the trampolines.
1172
1173         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1174         needed.
1175
1176         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1177         
1178         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1179         call code in full-aot mode since IMT is disabled there.
1180         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1181         new JIT no longer has that restriction.
1182
1183         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1184
1185         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1186         a more compact format.
1187         (mono_aot_wrapper_name): New function to return a unique name for a
1188         wrapper method, also used by the AOT runtime.
1189
1190         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1191         aot-compiler.c.
1192
1193         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1194         when a ICollection<T> etc is encountered.
1195         (add_generic_instances): Process method arguments/locals too.
1196         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1197         trampoline names.
1198
1199         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1200         
1201 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1202
1203         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1204
1205         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1206
1207         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
1208         representing the result of the decomposition. Nullify instructions
1209         instead of setting them to OP_NOP since nops can't have registers
1210         set.
1211
1212 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1213
1214         * aot-compiler.c (mono_compile_assembly): Split this huge function into
1215         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
1216         info. Strip 'mapping symbols' on ARM.
1217
1218         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
1219         
1220         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
1221         this with the native genmdesc.
1222
1223 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1224
1225         * aot-runtime.c:  Fixing the MSVC build.
1226
1227         Code is contributed under MIT/X11 license.
1228
1229 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1232         JITted code depends on it.
1233
1234 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1235
1236         * aot-compiler.c: Use new MonoGenericParam accessors.
1237
1238 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1239
1240         Reduce memory usage and improve correctness wrt MonoGenericParam
1241         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1242         handing.  Avoid allocating MonoGenericParams, but use the ones in
1243         the container itself.
1244
1245 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1246
1247         * tasklets.c: Return exceptions in the out argument.
1248
1249 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1252         opcode. Use pointer types in more places instead of casting them to 
1253         integers.
1254
1255         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1256         optimizations.
1257         (mono_llvm_optimize_method): New helper function to optimize a method.
1258
1259         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1260         widening code so it could be called from more places.
1261         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1262         code paths in the call opcodes.
1263
1264 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1265
1266         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1267
1268 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * dwarfwriter.c: Use _ to separate class name 
1271         components as gdb can't handle '.'. Represent reference variables
1272         as 'class <NAME>&'.
1273         
1274         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1275
1276         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1277         
1278         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1279
1280         * gc-test.cs: New file with GC stack marking tests.
1281         
1282         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1283         negative numbers for vfp.
1284
1285         * basic-float.cs: Add a test.
1286         
1287 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1288
1289         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1290
1291 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1292
1293         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1294         part of tasklet/continuation support.
1295
1296 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1299         amd64 opcodes inside an ifdef.
1300
1301         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1302         of complex types.
1303         
1304         * dwarfwriter.c (emit_type): Emit the class info for classes.
1305
1306 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1309
1310         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1311
1312         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1313
1314         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1315
1316 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1317
1318         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1319
1320         * mini-llvm.c: Update comments.
1321
1322         * mini.h (COMPILE_LLVM): New macro.
1323
1324         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1325
1326         * ssa.c (mono_ssa_compute): Ditto.
1327         
1328         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1329         the unwind ops from a DWARF FDE.
1330
1331         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1332         methods by extracting the dwarf unwind ops from the unwind info generated
1333         by LLVM.
1334         
1335         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1336         calls.
1337
1338         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1339         addressing modes.
1340
1341 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * Makefile.am (llvm_sources): Enable this.
1344
1345         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1346         failing back to the JIT if something cannot be handled.
1347
1348         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1349         compiling with LLVM.
1350
1351         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1352         compiling with LLVM.
1353
1354         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1355         compiling with LLVM.
1356
1357         * mini-ops.h: Add a few opcodes needed by LLVM.
1358
1359         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1360         has no unwind info.
1361
1362         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1363         backend.
1364
1365         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1366
1367         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1368
1369 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1370
1371         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1372         ridiculously large methods.
1373
1374 2009-03-31  Martin Baulig  <martin@ximian.com>
1375
1376         * debug-debugger.c (debugger_remove_breakpoint): Call
1377         mono_debugger_remove_class_init_callback ().
1378
1379 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1382         right before emitting code, not at the start.
1383
1384         * mini.c (mono_postprocess_patches): Extract this into a separate function
1385         from mono_codegen ().
1386
1387         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1388         byref types correctly.
1389
1390 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1393         by the last change.
1394
1395 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1398         indirect calls, this avoids problems where get_vcall_slot () would get
1399         confused by the native code for the instruction preceeding the call.
1400         (mono_arch_get_vcall_slot): Simplify this.
1401         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1402
1403         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1404         register allocator now seems to depend on them instead of the data in
1405         cpu-<ARCH>.md.
1406
1407         * mini.c (mini_method_compile): Throw the correct type of exception if
1408         mono_method_get_header () fails because of a loading error.
1409
1410 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1411
1412         * mini.c (mini_method_compile): Clear the loader error if the method
1413         header cannot be decoded.
1414
1415         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1416         interface methods on proxies correctly.
1417
1418         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1419         this argument for vtype methods. Add precise liveness info for arguments.
1420
1421         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1422         LIVERANGE_START/END opcodes.
1423
1424         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1425         for arguments and values in registers.
1426
1427 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1430         return a valuetype. Fixes #487518.
1431
1432         * iltests.il: Add a test.
1433         
1434         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1435
1436         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1437         closed over a null reference correctly.
1438
1439 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1442
1443 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1444
1445         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1446         allocated to the same registers as fixed sregs.
1447
1448 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1449
1450         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1451         ATOMIC_CAS_IMM ops.
1452
1453         * method-to-ir.c: Handle more cases for
1454         Interlocked.CompareExchange.
1455
1456         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1457         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1458         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1459
1460 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * aot-runtime.c (decode_method_ref): Fix a warning.
1463
1464         * unwind.c (mono_unwind_frame): Ditto.  
1465
1466 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1469         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1470
1471         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1472         fix the handling of large values in the ALU_PC_G0_NC relocation.
1473
1474 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1477
1478 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1479
1480         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1481         ops.
1482
1483 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1484
1485         * method-to-ir.c: MINI_OP3 needs a comma.
1486
1487         * method-to-ir.c, mini.h, mini.c: Remove
1488         mono_init_op_sreg_counts ().
1489
1490 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1493         OP_JMP.
1494         
1495         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1496         assertion.
1497
1498         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1499
1500         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1501         code somewhat.
1502
1503 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1504
1505         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1506         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1507         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1508         operations.
1509
1510 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * driver.c: Change location of gc_wrapper.h.
1513
1514         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1515         inside finally clauses correctly. Fixes #485721.
1516
1517         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1518         after the change above.
1519
1520         * exceptions.cs: Add a test.
1521         
1522 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1525
1526         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1527         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1528         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1529
1530         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1531         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1532
1533 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1534
1535         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1536         Simplify logic for ensure_method_is_allowed_to_call_method. 
1537         Handle wrappers on callers.
1538
1539 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1540
1541         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1542         them don't run yet.
1543
1544         * basic-simd.cs: Fix the names of some test methods.
1545
1546 2009-03-18  Geoff Norton  <gnorton@novell.com>
1547
1548         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1549
1550 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1553
1554 2009-03-17  Jb Evain  <jbevain@novell.com>
1555
1556         * driver.c: remove now uneeded call to mono_gc_base_init before
1557         mono_profiler_load.
1558
1559 2009-03-17  Jb Evain  <jbevain@novell.com>
1560
1561         * dwarfwriter.c (token_handler): handle more cases.
1562
1563 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1564
1565         * method-to-ir.c: Remove more dead code (that was required only
1566         because of method_is_safe). Fix compiler warnings.
1567
1568 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1569
1570         * method-to-ir.c: Remove unneeded/useless method_is_safe
1571         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1572
1573 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1574
1575         * mini.c (mini_method_compile): Print the method been compiled with
1576         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1577         for people not familiar with the runtime.
1578
1579 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1582         a managed object which is later put into a GList. Return its class instead.
1583
1584         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1585         stack slots when using sgen.
1586
1587 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1590
1591 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1594         > so it works on the first vreg as well.
1595
1596 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1599         trigger randomly.
1600
1601         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1602         
1603         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1604         implement GArray.
1605
1606 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1609         native->IL offset mapping.
1610
1611 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1614
1615         * basic.cs: Add a test.
1616
1617 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1618
1619         * mini-x86.c (mono_arch_output_basic_block): Use different
1620         registers in case the ones we want to overwrite are used by the
1621         other operand.  Fixes regression in #480807.
1622
1623 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1626
1627         * dwarfwriter.c (emit_line_number_info): The line number info for
1628         IL code was off by one. Fix that.
1629
1630         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1631         stack.
1632
1633 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1634
1635         Contributed under the terms of the MIT/X11 license by Steven
1636         Munroe <munroesj@us.ibm.com>.
1637
1638         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1639         Fixes #483462.
1640
1641 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1644         as well.
1645
1646 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1649         the delegate ctor handling code. Fixes #482638.
1650         
1651         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1652         #481458.
1653
1654         * iltests.il.in: Add a test.
1655         
1656         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1657         mini-posix.c.
1658
1659 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1660
1661         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1662         is shared generic code, return the trampoline, even if the method
1663         has already been compiled.  Fixes #479763.
1664
1665         * mini.c, mini.h: New function
1666         mono_jit_find_compiled_method_with_jit_info() which is the same as
1667         mono_jit_find_compiled_method() but also returns the jit info.
1668
1669 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1670
1671         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1672         for methods which actually have one.  For all other methods, make
1673         sure the this argument var is live the whole method.
1674
1675         * mini.c (mini_method_compile): Every shared method has a
1676         this/vtable/mrgctx info.  Fixes #480807.
1677
1678 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1679
1680         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1681         generic/imt thunks where some entries branch through the vtable,
1682         while other entries branch directly.
1683
1684 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1687
1688         * mini-windows.c: Ditto.
1689         
1690         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1691         ctors.
1692
1693 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1696         down an assert.
1697
1698 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1699
1700         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1701         #481403.
1702
1703 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1704
1705         * exceptions-x86.c: Include debug-mini.h - fixes build.
1706
1707 2009-03-04  Martin Baulig  <martin@ximian.com>
1708
1709         * debug-mini.c: Clean up the exception API and add documentation.
1710         (mono_debugger_handle_exception): New public method; this is
1711         called when throwing an exception or encountering an unhandled one.
1712         (mono_debugger_call_exception_handler): Formerly known as
1713         mono_debugger_handle_exception(); this is used to tell the
1714         debugger that we're about to invoke an exception handler.
1715
1716 2009-03-04  Martin Baulig  <martin@ximian.com>
1717
1718         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1719         ../metadata/mono-debug-debugger.c; save and reset exception state.
1720
1721 2009-03-02  Martin Baulig  <martin@ximian.com>
1722
1723         * debug-mini.c: Moved the debugger exception handling here from
1724         ../metadata/mono-debug-debugger.c.
1725
1726         * debug-mini.h
1727         (MonoDebuggerExceptionAction): New exception typedef.
1728
1729         * debug-mini.c
1730         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1731
1732         * exceptions-amd64.c
1733         (mono_amd64_throw_exception): Use the new debugger exception
1734         handling code.
1735
1736         * mini-exceptions.c
1737         (mono_handle_exception_internal): Don't call
1738         mono_debugger_unhandled_exception() here.
1739
1740 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * mini.c aot-compiler.c: Update after the changes to 
1743         mono_marshal_get_runtime_invoke ().
1744
1745         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1746         Virtual generic methods might not have method->slot set, work around
1747         that.
1748
1749         * generics.cs: Add a test.
1750
1751 2009-03-02  Geoff Norton  <gnorton@novell.com>
1752
1753         * mini.c:
1754         * driver.c: Allow signal chaining of SIGFPE as well.
1755
1756 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1759         this since it now receives the method not its generic context in the
1760         IMT reg.
1761
1762         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1763         generic/imt thunks where some entries branch through the vtable, while
1764         other entries branch directly.
1765
1766         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1767
1768         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1769         support for interface methods as well.
1770
1771         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1772         using the normal IMT thunks.
1773
1774         generics.cs: Add new tests.
1775         
1776         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1777         the generic inst to the generic imt thunks. This fixes AOT support, 
1778         improves consistency with the normal IMT thunks, and makes it easier to
1779         add support for interface generic virtual methods later.
1780
1781         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1782         
1783 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * driver.c (mono_set_signal_chaining): New public API function to enable
1786         signal chaining on POSIX platforms.
1787
1788         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1789         (si@lindenlab.com) to implement signal chaining. The original patch was
1790         contributed under the MIT X/11 license:
1791         https://bugzilla.novell.com/show_bug.cgi?id=318894
1792
1793 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1796         too until it can be made to run on amd64.
1797
1798 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1801         to  get_generic_context_from_code () + get_call_info () if possible.
1802
1803 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1806         suspend-on-sigsegv functionality.
1807
1808         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1809         to suspend when a native SIGSEGV is received. This is useful for debugging
1810         crashes which don't happen under gdb, since a live process contains more
1811         information than a core file.
1812
1813         * mini-exceptions.c (mono_print_thread_dump): Use 
1814         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1815
1816         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1817
1818         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1819         
1820         * basic-float.cs: Disable the tests which currently fail on amd64.
1821
1822         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1823         value to mono_arch_patch_callsite () to fix crashes.
1824         
1825         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1826
1827 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1828
1829         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1830         nop code by patching the call address to point to the nullified class init
1831         trampoline, as the former does not seem to be safe on SMP machines.
1832
1833 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1834
1835         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1836         they were wrong.
1837
1838 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1839
1840         * basic-float.cs basic-calls.cs: Fix warnings.
1841
1842 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1843
1844         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1845         correct frame pointer in the LMF.  Should fix #478394.
1846
1847 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1850
1851         * image-writer.c: Make the binary writer less verbose.
1852
1853 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1856         are called from runtime invoke wrappers.
1857
1858 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * cpu-ppc.md (store_memindex): Increase the size of this.
1861
1862 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1865
1866         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1867
1868         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1869         OP_LCONV_TO_R_UN.
1870
1871         Last fix for of #467201.
1872
1873
1874 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1877
1878         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1879         and long_conv_to_r8_2:
1880
1881         Fixed part of #467201.
1882
1883 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1884
1885         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1886
1887         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1888         conversion to 32 bits.
1889
1890         * cpu-x86.md: Increase the size of int_conv_to_r4.
1891
1892         * basic-float.cs: Add a test for this.
1893
1894         Fixed part of #467201.
1895
1896 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1897
1898         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1899
1900         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1901         conversion to 64 bits.
1902
1903         * basic-float.cs: Add a test for this.
1904
1905         Fixed part of #467201.
1906
1907 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1908
1909         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1910
1911         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1912         This behavior is compatible with MS.
1913
1914         * iltest.il.in: Add a test for this.
1915
1916         Fixed part of #467201.
1917
1918 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1919
1920         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1921
1922         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1923         change the precision of the value.
1924
1925         * cpu-x86.md: Define len for float_conv_to_r4.
1926
1927         * basic-float.cs: Add a test for this.
1928
1929         Fixed part of #467201.
1930
1931 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1932
1933         * mini.c: Adjust locking order to the new semantics where the loader lock
1934         comes first.
1935
1936 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * aot-runtime.c:
1939         * mini-amd64.c:
1940         * mini-arm.c:
1941         * mini-ia64.c:
1942         * mini-mips.c:
1943         * mini-ppc.c:
1944         * mini-sparc.c:
1945         * mini-trampolines.c:
1946         * mini-x86.c:
1947         * mini.c:
1948         * tramp-alpha.c:
1949         * tramp-amd64.c:
1950         * tramp-arm.c:
1951         * tramp-hppa.c:
1952         * tramp-ia64.c:
1953         * tramp-mips.c:
1954         * tramp-ppc.c:
1955         * tramp-s390.c:
1956         * tramp-s390x.c:
1957         * tramp-sparc.c:
1958         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1959
1960 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1963         as it is incorrect.
1964
1965 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1966
1967         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1968         for cctors if needed.
1969
1970 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1971
1972         * mini-ppc.c: Fix build on Darwin.
1973
1974 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1977         version instead of 3 as valgrind doesn't like version 3.
1978
1979         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1980
1981         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1982         usable for hashing methods.
1983         (emit_extra_methods): Use the new hash to avoid putting every method in the
1984         same hash bucket.
1985
1986         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1987
1988         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1989         whenever a method ref could match a method.
1990         
1991         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1992         test to fail.
1993         
1994         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1995         methods refs.
1996
1997         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1998
1999         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2000         the encoding buffer.
2001
2002         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2003         mono_method_get_header () on inflated methods as an optimization.
2004
2005 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * ssa.c (fold_ins): Fix another crash if the instruction following the
2008         switch was optimized away.
2009
2010 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2011
2012         Contributed under the terms of the MIT/X11 license by Steven
2013         Munroe <munroesj@us.ibm.com>.
2014
2015         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2016
2017 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2020         around the mono_domain_alloc calls, it is now done by the functions
2021         themselves.
2022
2023         * aot-compiler.c (compile_method): Only add wrappers referenced by
2024         the method if compiling with full AOT.
2025         (mono_compile_assembly): Error out if --aot=full is specified on
2026         a platform where it is not supported.
2027
2028         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2029         on ARM too.
2030
2031         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2032         AOT support.
2033
2034         * aot-runtime.c (load_named_code): Handle 
2035         mono_arm_throw_exception_by_token.
2036
2037         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2038
2039         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2040         unaligned.
2041
2042         * Makefile.am (fullaotcheck): Exit if a test fails.
2043
2044         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2045         on ARM.
2046         (mono_compile_assembly): Handle the assembler failing.
2047
2048         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2049         accepting subsections of .bss.
2050
2051         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2052         was optimized away.
2053
2054         * aot-compiler.c: Remove some unused includes.
2055         
2056         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2057         now in MonoImageWriter.
2058
2059         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2060         code sequence which matches a non-virtual call. Fixes #472654.
2061
2062 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2065         xdebug code.
2066         
2067         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2068         use the image/dwarf writers directly.
2069
2070         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2071         field.
2072
2073         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2074         MonoDwarfWriter.
2075
2076         * image-writer.h: Fix some typos.
2077
2078         * dwarfwriter.h dwarfwriter.c: New files.
2079         
2080         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2081         separate module.
2082
2083         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2084         argument to return unwind info.
2085
2086         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2087
2088         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2089         
2090         * aot-runtime.c (decode_method_ref): Add a case for 
2091         MONO_AOT_METHODREF_WRAPPER_NAME.
2092
2093         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2094         for AOT.
2095
2096         * aot-compiler.c (encode_method_ref): Use the new constants.
2097
2098         * aot-runtime.c (decode_method_ref): Ditto.
2099
2100         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2101         be compiled, not the icall itself.
2102
2103 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2106         using decode_method_ref ().
2107
2108         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2109         convert it to an in32. Fixes #475859.
2110
2111         * arrays.cs: Add a test.
2112
2113 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2114
2115         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2116         OP_LCONV_TO_U2.
2117
2118         * basic-long.cs: Add a test.
2119
2120 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2121
2122         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2123         remove the frame pointer in leaf methods which don't receive any
2124         arguments, don't throw exceptions and don't do dynamic stack
2125         allocations.
2126
2127 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2130         the fail_tramp changes. Hopefully fixes #475132.
2131
2132 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2133
2134         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2135         instead of mono_metadata_signature_dup_full.
2136
2137 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2140         for processing jump tables. Fixes #473787.
2141
2142 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2143
2144         * mini-generic-sharing.c: mini_method_get_context() just calls
2145         mono_method_get_context_general() now.
2146
2147         * mini.c, mini.h: Moved get_object_generic_inst(),
2148         construct_object_context_for_method() and
2149         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2150
2151 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2154         basic block fell through to its successor bblock without a branch. Fixes
2155         #474718.
2156
2157         * iltests.il.in: Add a test.
2158         
2159         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2160         (can_encode_patch): We can now handle arrays of generic parameters and
2161         array methods.
2162
2163         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2164
2165         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2166         the AOT file to avoid some #ifdefs in aot-runtime.c
2167
2168         * mini.h: Bump AOT file format version.
2169
2170 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2171
2172         * Makefile.am (fullaotcheck): Make this run the tests.
2173
2174         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2175
2176 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2177
2178         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2179         individually.  Fixes #473482.
2180
2181 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2184
2185 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2186
2187         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2188         (mono_compile_assembly): Hush compile warnings about
2189         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2190         code path.
2191
2192 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2193
2194         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2195
2196         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2197
2198         * aot-compiler.c: Fix arm support.
2199
2200         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2201         img_writer_emit_unset_mode () function.
2202
2203         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2204         (mono_unwind_get_dwarf_pc_reg): Ditto.
2205
2206         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
2207         Move almost all platform specific code to a set of arch_ functions, 
2208         and document them to ease porting.
2209         
2210         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
2211
2212         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
2213
2214         * aot-compiler.c: Extract the image writing functionality into a separate
2215         module to reduce the size of this file.
2216
2217 2009-02-09  Geoff Norton  <gnorton@novell.com>
2218
2219         * mini-s390.c: Fix the signature of emit_sig_cookie.
2220
2221 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
2224
2225         * aot-runtime.c (is_shared_got_patch): Ditto.
2226
2227         * aot-runtime.c (load_named_code): Cope with the fact that 
2228         decode_got_entry () won't decode the patch fully if its corresponding got
2229         entry is already filled.
2230         
2231         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2232         Initialize *ji.
2233         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2234
2235         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2236         as the moving pointer instead of 'buf' for consistency with the rest of the
2237         codebase.
2238         (mono_arch_create_monitor_exit_trampoline): Ditto.
2239
2240         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2241         generic_class_init trampolines.
2242         (add_generic_class): Extract some code from add_generic_instances () into a
2243         separate function so it can be called from other places too.
2244         (compile_method): Call add_generic_class () for the classes of inflated methods
2245         referenced by the method.
2246         (can_encode_patch): Allow references to generic parameters.
2247
2248         * aot-runtime.c: Add support the patches required by the new trampolines.
2249         
2250         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2251         support.
2252
2253         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2254         full-aot support.
2255
2256         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2257         this from get_throw_pending_exception, make the signature full aot compatible.
2258
2259         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2260
2261         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2262
2263         * exceptions.cs: Add a test.
2264
2265 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2266
2267         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2268         use the DWARF_DATA_ALIGN constant instead.
2269
2270         * exception-<ARCH>.c: Update after the above change.
2271
2272         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2273         dwarf unwinder.
2274
2275         * mini-arm.c: Enable the dwarf unwinder.
2276
2277         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2278         instead of mono_class_setup_vtable ().
2279
2280 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2283         dwarf unwinder.
2284
2285         * mini-x86.h: Enable the dwarf unwinder.
2286
2287 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2288
2289         Fix mcs/tests/test-7.cs
2290         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2291         2009-02-03.
2292
2293 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * mini.c (print_jit_stats): Remove some unused statistics.
2296
2297 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2300
2301 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2302
2303         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2304         the method we get from mono_object_get_virtual_method() because
2305         that function does it properly, now.
2306
2307 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2310         opcodes. Fixes #472775.
2311
2312 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2313
2314         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2315         fact that mono_find_jit_info() sometimes returns the context
2316         corresponding to the jit info in new_ctx.  Fixes #472600.
2317
2318 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2321         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2322         klass->enum_basetype directly.
2323
2324         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2325         enum subtypes.
2326
2327         * unwind.c: Avoid 0 sized arrays.
2328
2329 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2332         size on systems with 64k pages. Fixes #471389.
2333
2334 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2335
2336         Contributed under the terms of the MIT/X11 license by Steven
2337         Munroe <munroesj@us.ibm.com>.
2338
2339         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2340         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2341         necessary.
2342
2343 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2344
2345         Contributed under the terms of the MIT/X11 license by Steven
2346         Munroe <munroesj@us.ibm.com>.
2347
2348         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2349         comparison fix.
2350
2351         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2352         The trampoline can be longer on PPC64.
2353
2354 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2355
2356         Contributed under the terms of the MIT/X11 license by Steven
2357         Munroe <munroesj@us.ibm.com>.
2358
2359         * mini-ppc.c: Compiler warning fixes and trivial code
2360         simplifications.
2361
2362 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2365         ins->dreg which could be a hardware register, not a vreg.
2366
2367         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2368         
2369         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2370         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2371
2372         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2373         
2374         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2375         ->dreg, that is not the vreg we are looking for.
2376
2377         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2378
2379         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2380         LIVERANGE_END.
2381
2382         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2383         strange crashes.
2384
2385 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2388
2389         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2390         the line diff is 0.
2391
2392         * aot-compiler.c: Add xdebug support on x86.
2393
2394         * unwind.c: Add x86 support.
2395         
2396         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2397         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2398
2399         * mini.c (mini_method_compile): Ditto.
2400         
2401         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2402         the variable index.
2403
2404         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2405         which mimic .push_section/.pop_section in GAS.
2406         
2407         * aot-compiler.c: Emit precise live range information for variables.
2408
2409         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2410
2411         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2412         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2413         them.
2414
2415         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2416         the live ranges of variables.
2417
2418         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2419         of the variable in terms of native offsets.
2420
2421 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2422
2423         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2424         
2425 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2426
2427         Contributed under the terms of the MIT/X11 license by Steven
2428         Munroe <munroesj@us.ibm.com>.
2429
2430         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2431         order (offset then base reg) for ppc_load_multiple_regs.
2432         (emit_save_saved_regs) Correct operand order for
2433         ppc_store_multiple_regs.
2434         (mono_arch_get_call_filter): Correct operand order for
2435         ppc_load_multiple_regs.
2436
2437         * mini-ppc.c (emit_memcpy): Fix operand order for
2438         ppc_load_reg_update and ppc_store_reg_update.
2439         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2440         (mono_arch_emit_epilog): Correct operand order for
2441         ppc_load_multiple_regs.
2442
2443         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2444         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2445
2446 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2447
2448         * cpu-ppc64.md: Fixed storer4_memindex length.
2449
2450 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2453         line number info.
2454         
2455         * aot-compiler.c (emit_line_number_info): Optimize this.
2456
2457 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2460         
2461         * aot-compiler.c: Add debug info for methods without debug info by
2462         emitting an IL file and having the line number info referencing that file.
2463
2464         * aot-compiler.c: Optimize the size of the generated line number info.
2465
2466         * aot-compiler.c: Emit line number info in xdebug mode.
2467
2468         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2469         million arguments.
2470
2471 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2474
2475         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2476         is used.
2477
2478 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2479
2480         * basic-calls.cs: Test for the weird crash found on arm.
2481         
2482 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2483
2484         * cpu-arm.md: Increase the size of storer8_membase_reg and
2485         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2486
2487         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2488         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2489         reg to LR otherwise we'll be loading/storing from just the offset.
2490
2491 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2492
2493         Question: if we are storing gint32's inside the "*native_offset",
2494         should we change the signature to "gint32 *native_offset" to
2495         ensure that we do not have type definition problems?
2496         
2497         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2498         an int * as this is what the other function expects, causes
2499         problems with Freescale's compiler that defined int32_t to be a
2500         long and makes int incompatible 
2501
2502 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2503
2504         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2505         filename conflict with bjam.
2506
2507 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2508
2509         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2510         as it might use decomposed ops.
2511
2512 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2515
2516         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2517         is defined.
2518
2519         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2520
2521         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2522         offsets.
2523
2524         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2525         way registers are stored in MonoContext on arm.
2526
2527         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2528         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2529
2530         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2531
2532         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2533
2534         * mini.c (mini_init): Register mono_isfinite.
2535
2536         * jit-icalls.c (mono_isfinite): New jit icall.
2537
2538         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2539         
2540         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2541         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2542         the parent frame.
2543
2544 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2545
2546         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2547         separate frame and stack pointers, so we must use FP to find the register
2548         spill area.
2549         The FP reg is retrieved from the MonoContext::regs array.
2550
2551 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2552
2553         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2554         as FPA requires it.
2555
2556 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2557
2558         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2559         return R4 and R8 when not running under softfloat.
2560
2561         Fixes basic-calls.exe
2562
2563 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * mini-arm.c: Implement some overflow opcodes.
2566
2567 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2568
2569         * ssa.c: handle another alloca.h
2570
2571         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2572         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2573         MONO_ARCH_USE_SIGACTION. 
2574
2575         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2576         capability defines.
2577
2578         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2579
2580         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2581         PPC targets as sigaction does not exist on all platforms, define
2582         this on a per-platform basis.
2583
2584         Instead of erroring out if the platform is not defined, include
2585         mini-ppc-os.h, and expect that the OS specific setting provides
2586         the required information.   
2587
2588 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2589
2590         * aot-compiler.c: Fix --enable-minimal=aot.
2591
2592 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2595         previous change.
2596
2597 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * exceptions-arm.c: Fix warnings.
2600
2601         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2602         ARM.
2603
2604         * mini-x86.c: Fix --enable-minimal=jit build.
2605
2606         * mini.c: Really fix --enable-minimal=jit build.
2607         
2608         * mini.c (construct_object_context_for_method): Move this outside
2609         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2610
2611         "Backported" of r124984 from 2.0 branch.
2612         
2613         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2614
2615         "Backport" of r124977 + r124978 from 2.0 branch.
2616         
2617         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2618         to avoid calling mono_exception_from_token () from the throw trampoline.
2619         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2620         for throwing corlib exceptions, this fixes full-aot support for corlib
2621         exceptions.
2622
2623         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2624
2625 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2626
2627         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2628         part of the changes to split the code in mini into operating
2629         system specific files.
2630
2631         This patch was done by copying mini.c to the respective files to
2632         preserve SVN history.
2633
2634 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2637
2638 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2639
2640         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2641         remoting-invoke-with-check wrappers of shared methods.
2642
2643         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2644
2645 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2646
2647         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2648         optimization if the top of stack is the last instruction in the
2649         bblock.  Otherwise it might have been used after its definition.
2650         Fixes #469742.
2651
2652 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2655         method as well when get_vcall_slot () fails to match a code sequence.
2656
2657         * mini-arm.c: Fix the android build, which doesn't have
2658         __aeabi_read_tp.
2659
2660 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2663         the s390x build.
2664
2665 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2666
2667         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2668
2669 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2672         and put its id into jinfo->used_regs. This is only used on amd64,
2673         which is currently the only platform generating unwind info.
2674
2675         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2676         the dwarf unwinder. This is required to correctly handle async exceptions
2677         like thread abort and stack overflows, which can happen while a method
2678         is in the middle of its prolog or epilog.
2679         
2680         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2681         the unwind info belonging to an AOTed method.
2682
2683         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2684         into cfg->unwind_ops.
2685         
2686         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2687
2688         * mini.c (mini_init): Call mono_unwind_init ().
2689         (mini_cleanup): Call mono_unwind_cleanup ().
2690
2691         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2692         unwind info to be shared between methods.
2693
2694         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2695         saved in the LMF.
2696
2697         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2698         get_throw_pending_exception () to avoid initialization races.
2699
2700         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2701         mono_arch_exceptions_init () function.
2702
2703         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2704
2705 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2706
2707         * mini.c (mono_get_domain_intrinsic): New helper function.
2708         (mono_get_thread_intrinsic): Ditto.
2709
2710         * mini-arm.c mini-ia64.c: Use the new helper functions.
2711         
2712         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2713         the last constrained_call change, since it is needed in the non-AOT
2714         case as well.
2715
2716         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2717         
2718         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2719         mono_get_lmf_addr () on arm eabi linux.
2720
2721 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2724         code sequence which matches a non-virtual call.
2725
2726 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2727
2728         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2729         stack pointer (r1).
2730
2731 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2734         runtime-invoke wrappers, since they are also shared based on signature.
2735
2736 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2737
2738         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2739         info from the (correct) context.
2740
2741 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2744         
2745         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2746         using dwarf unwinding info. Not yet used.
2747
2748         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2749
2750 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2751
2752         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2753         descriptors.
2754
2755         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2756         special case and handle mono_arch_delegate_invoke_impl() returning
2757         function descriptors.
2758
2759         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2760         trampolines return function descriptors, too.
2761
2762 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2763
2764         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2765         out_of_line optimization.
2766
2767 2009-01-21  Martin Baulig  <martin@ximian.com>
2768
2769         * mini.h
2770         (MonoCompile): Added `disable_deadce_vars' to disable removing
2771         unused variables.
2772
2773         * mini.c
2774         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2775         inside the debugger.
2776
2777         * liveness.c (mono_analyze_liveness): Don't remove any unused
2778         variables if `cfg->disable_deadce_vars' is set.
2779
2780 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2781
2782         * method-to-ir.c: Only apply exception constructor optimization if
2783         the the method actually belongs to an exception class.  Fixes
2784         #467456.
2785
2786 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2789         change inside a #ifdef __mono_ppc64__.
2790
2791         * aot-compiler.c (compile_method): Remove the previous limitation.
2792
2793         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2794         on type variables in AOTed code.
2795         
2796         * aot-compiler.c (compile_method): Skip generic methods having type 
2797         constraints on their generic parameters.
2798
2799         * aot-compiler.c (compile_method): Check for methods which cannot be
2800         encoded inside RGCTX_FETCH patches as well.
2801
2802         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2803         build.
2804
2805 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2806
2807         * method-to-ir.c: Force the vtable variable in shared generic code
2808         for the case that they might show up on a stack trace where they
2809         are needed.
2810
2811         * mini-exceptions.c: Save and use generic sharing info as well as
2812         IP in stack traces to resolve shared generic instantiations.
2813
2814 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2815
2816         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2817         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2818
2819 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2820
2821         * method-to-ir.c: Do generic sharing for array constructors.
2822
2823 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2824
2825         * mini-exceptions.c (mono_print_thread_dump): Add information
2826         about the thread state using wapi_current_thread_desc.
2827
2828 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2829
2830         * basic-simd.cs: Tests for the new constructors. 
2831
2832 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2833
2834         * mini-ops.h: Added OP_EXPAND_*
2835
2836         * cpu-x86.md: Same.
2837
2838         * mini-x86.c (mono_arch_output_basic_block): Same.
2839         
2840         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2841
2842 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * iltests.il.in: Add a test for #467385.
2845
2846 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2847
2848         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2849         thread been cleaned up is not the same currently in execution.
2850
2851         Fixes appdomain-unload crashes on windows, osx and linux variants
2852         without the __thread keyword.
2853
2854 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2855
2856         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2857         (koush@koushikdutta.com). Implement this for android.
2858
2859         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2860         begins with a digit.
2861
2862         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2863         mono_marshal_get_write_barrier ().
2864
2865 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2868         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2869         that pass them on a register pair.
2870
2871         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2872         test was crashing due to that.
2873
2874 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2875
2876         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2877         trampoline code. Include ucontext.h only if available.
2878
2879 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2880
2881         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2882         and doesn't check whether it's sharable, like it was before
2883         removing the shared generics hash.  This brings IronPython
2884         performance back to what it was before that change.
2885
2886 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2887
2888         * method-to-ir.c: Handle delegate invocation optimization earlier,
2889         otherwise it would be handled (much more slowly) by the
2890         final/sealed optimization.
2891
2892 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2895         domain is not set. Fixes #465864.
2896
2897 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2898
2899         * method-to-ir.c: Don't stop sharing of generic methods with catch
2900         clauses - we already handle those.
2901
2902 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2903
2904         * mini.c, mini.h: lookup_generic_method() is now
2905         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2906         making the shared_generics_hash obsolete.
2907
2908 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2909
2910         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2911         use the red zone.  Make room on the stack first and then use it,
2912         not the other way around.
2913
2914 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * mini.c (mini_init): Call mono_xdebug_init ().
2917
2918         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2919
2920 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2923
2924         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2925         trampolines.
2926
2927         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2928         debug+unwind info for trampolines.
2929
2930         * mini.c (mono_create_unwind_op): New helper function.
2931
2932         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2933
2934 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * aot-compiler.c: Fix the build.
2937
2938 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2939
2940         * Makefile.am: Update dtrace-prelink.sh location.
2941
2942 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2943
2944         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2945         optimization. Fixes #464520.
2946
2947 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2948
2949         * mini-amd64.c : Adding code to save/restore non-volatile registers
2950            on Winx64.
2951
2952         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2953           registers on Winx64.
2954
2955         Contributed under MIT/X11 license.
2956
2957 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2958
2959         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2960         __GNUC_MINOR__ which can break when the major version changes.
2961
2962 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2963
2964         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2965
2966 2009-01-07  Geoff Norton  <gnorton@novell.com>
2967
2968         * helpers.c:  Allow mono -v -v -v to work on darwin.
2969
2970 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2971
2972         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2973           pattern. 
2974
2975         Contributed under MIT/X11 license.
2976
2977 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2980         instead of directly accessing type->data.klass. Fixes #462016.
2981         (mono_allocate_stack_slots_full): Ditto.
2982
2983         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2984         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2985
2986         * aot-compiler.c (emit_plt): Fix ARM build.
2987
2988 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2989
2990         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2991         
2992         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2993         change.
2994
2995         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2996         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2997         #463357.
2998
2999         * iltests.il.in: Add a regression test.
3000
3001 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3004
3005 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * basic-simd.cs: Add a regression test for #462457.
3008
3009 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3010
3011         * mini-ops.h: Add a definition of XPHI.
3012
3013         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3014
3015         * ssa.c (op_phi_to_move): Handle XPHI.
3016
3017         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3018
3019         Fixes #462457
3020
3021 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3022
3023         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3024
3025 2008-12-31  Geoff Norton  <gnorton@novell.com>
3026
3027         * mini-ppc.c: The prolog size allocated can be too small for darwin
3028         ppc32 under certain circumstances.  Also fix a small logic bug.
3029
3030 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3033         while loading AOT methods.
3034
3035         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3036         since only the former is nulled out after a successful cast. This prevents
3037         crashes with rethrown exceptions when using --debug=casts.
3038
3039 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3040
3041         * mini.h: New macro for checking whether a method is final,
3042         i.e. whether the method or its class is marked final.
3043
3044         * method-to-ir.c: Use the new macro for all final-checks
3045         consistently.  Fixes the crash in the System.ServiceModel tests.
3046
3047 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3048
3049         * mini-exceptions.c (get_exception_catch_class): Corrected another
3050         overly strict assertion.
3051
3052 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3053
3054         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3055         Clobbering it is not allowed because the caller might use it as
3056         the vtable register in the interface call.
3057
3058 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3059
3060         * mini-exceptions.c (get_exception_catch_class): Corrected an
3061         overly strict assertion.
3062
3063 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3064         
3065         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3066
3067         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3068
3069         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3070
3071         * cpu-mips.md: correct lengths for certain long_ opcodes.
3072
3073         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3074
3075         * 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().
3076         
3077 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3078
3079         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3080         
3081 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3082         
3083         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3084         
3085 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3086
3087         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3088         next basic block.
3089         
3090 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3091
3092         * 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
3093
3094         * 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)
3095         
3096 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3097         
3098         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3099         
3100 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3103         gshared code. Fixes #458947.
3104
3105         * generics.cs: Add a test.
3106
3107 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3108         
3109         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3110         
3111         * mini-mips.c: first pass n32 code generation.
3112
3113         * mini-mips.h: datatypes and defines for n32 support.
3114
3115         * exceptions-mips.c: first pass n32 code generation.
3116         
3117         * tramp-mips.c: first pass n32 code generation.
3118         
3119         * cpu-mips.md: add long_ opcodes.
3120         
3121 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3122
3123         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3124
3125         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3126         
3127         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3128         
3129         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3130
3131         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3132
3133         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3134
3135         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3136
3137         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3138
3139         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3140
3141 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3144
3145 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3146
3147         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3148
3149 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3150
3151         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3152         descriptors for helper functions directly in front of the code.
3153
3154 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3155
3156         * method-to-ir.c: Removed an unnecessary assertion.
3157
3158 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3159
3160         * method-to-ir.c: Merge SGEN changes from the old JIT.
3161
3162 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3163
3164         * driver.c (compile_all_methods_thread_main): Handle failure of
3165         mono_get_method ().
3166
3167 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3168
3169         * mini-ppc.c: Merged with mini-ppc64.c.
3170
3171         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3172
3173         * Makefile.am: Use the same sources for PPC and PPC64.
3174
3175         * mini-ppc64.c: Removed.
3176
3177 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3178
3179         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3180         code to mono_bb_is_fall_through.
3181         
3182         * branch-opts.c (mono_remove_critical_edges): Same.
3183
3184 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3185
3186         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3187         expect that an OP_BR_REG will be there.
3188
3189 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3190
3191         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3192         for the many branch ops. The original check miss OP_BR_REG.
3193
3194         Fixes #457574.
3195         
3196 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3197
3198         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3199
3200 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3203         while holding the aot lock.
3204
3205 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3206
3207         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
3208         
3209 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3210
3211         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
3212           to release all runtime callable wrappers held by the runtime.
3213
3214         Contributed under MIT/X11 license.
3215
3216 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3217
3218         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
3219           for Winx64.
3220
3221         Contributed under MIT/X11 license.
3222
3223 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
3226         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3227
3228 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3229
3230         * cpu-mips.md: fix ckfinite length
3231
3232         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3233         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3234         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3235         
3236 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3237
3238         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3239         
3240 2008-12-08  Geoff Norton  <gnorton@novell.com>
3241
3242         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3243         size by 8 bytes as well.
3244
3245 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3246
3247         * basic-simd.cs: Fix method names for Vector16b.
3248         
3249 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3250
3251         * basic-simd.cs: Fix method names for Vector16sb.
3252
3253 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3254
3255         * basic-simd.cs: Fix method names for Vector8us.
3256         
3257 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3258
3259         * basic-simd.cs: Fix method names for Vector8s.
3260         
3261 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3262
3263         * basic-simd.cs: Fix method names for Vector4ui.
3264
3265 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3266
3267         * basic-simd.cs: Fix method names for Vector2l.
3268
3269 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3270
3271         * basic-simd.cs: Fix method names for Vector2d.
3272
3273 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3274
3275         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3276         that are extension methods.
3277
3278 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3279
3280         * basic-simd.cs: Fix method names for Vector4f.
3281
3282 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3283
3284         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3285         as such. Fixes #456669.
3286
3287 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3288
3289         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3290         
3291 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3292
3293         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3294         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3295         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3296         (mips_adjust_stackframe): handle FP spills
3297                 
3298         * mini-ops.h: add mips_mtc1_s2
3299         
3300         * cpu-mips.md: add mips_mtc1_s2
3301         
3302 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * unwind.c: New file, move the unwind info encoding functions here from
3305         aot-compiler.c, so they could be used at runtime too.
3306
3307 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3308
3309         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3310         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3311         
3312 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3313
3314         * mini-mips.c: cleanup warnings
3315         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3316         (mips_adjust_stackframe): handle case of taking the address of stack locals
3317         
3318 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * aot-compiler.c: Implement a few functions missing from the asm writer.
3321         (emit_method_code): Only write symbols for methods when using the bin
3322         writer, since the assembler can't deal with the characters in our method
3323         names.
3324
3325         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3326
3327         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3328         call.
3329
3330         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3331         a bit to also restore %rax.
3332
3333 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3334
3335         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3336
3337 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3340         arguments.
3341
3342 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3343
3344         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3345
3346         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3347         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3348
3349         * exceptions-ppc64.c: Removed.
3350
3351         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3352
3353 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3354
3355         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3356         tramp-ppc64.c.
3357
3358         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3359
3360         * tramp-ppc64.c: Removed.
3361
3362 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3365         the TYPESPEC table.
3366
3367 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3368
3369         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3370
3371         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3372         mini-ppc.h instead of mini-ppc64.h.
3373
3374         * mini-ppc64.h: Removed.
3375
3376 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3377
3378         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3379         
3380         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3381         
3382 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3383
3384         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3385         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3386         code easier.
3387
3388 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3389
3390         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3391
3392 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3393
3394         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3395
3396 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3397
3398         * basic-simd.cs: Tests for operator == and != on Vector4f.
3399
3400 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3401
3402         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3403
3404         * simd-intrinsics.c: Kill useless enum.
3405
3406 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3407
3408         * cpu-mips.md: add long_conv_to_ovf_i4_2
3409         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3410
3411 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3412
3413         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3414         
3415         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3416
3417 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3418
3419         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3420         
3421 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3422
3423         * basic-simd.cs: Add tests for new methods.
3424
3425 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * simd-intrinsics.c: Add support for operator == and !=
3428         on Vector4(u)i.
3429
3430         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3431
3432 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3435
3436 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3439
3440         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3441         MONO_PATCH_INFO_ICALL_ADDR.
3442
3443         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3444
3445         * aot-compiler.c: Resurrect full-aot support.
3446
3447 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3448
3449         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3450         
3451 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3452
3453         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3454         
3455 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3456
3457         * basic-simd.cs: Fix tests to work under ppc.
3458         Remove tests for methods that will be removed.
3459
3460 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3461
3462         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3463         generic type (via a typedef or typeref) correctly.
3464
3465 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3468         diagnose an assertion failure.
3469
3470 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3471
3472         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3473         Fix trampoline size.
3474
3475         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3476         conversion opcodes are implemented natively instead via emulation.
3477
3478 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3479
3480         * cpu-mips.md: remove mips_xori
3481
3482         * mini-ops.h:  remove mips_xori
3483
3484         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3485
3486         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3487         
3488         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3489         
3490 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3491
3492         * cpu-mips.md: fix instruction lengths.
3493
3494         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3495
3496         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3497
3498         * mini-ops.h: fix slti / sltiu op profiles.
3499         
3500 2008-12-02  Martin Baulig  <martin@ximian.com>
3501
3502         * method-to-ir.c (mono_method_to_ir): Disable debugging
3503         information for the init locals block to make the debugger stop
3504         after all locals have been initalized.
3505
3506 2008-12-02  Martin Baulig  <martin@ximian.com>
3507
3508         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3509         running inside the debugger.
3510
3511 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3514         is enabled.
3515
3516         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3517         alu->alu imm optimization which only shows if deadce is disabled.
3518
3519         * aot-compiler.c: Rename the function names for the binary and asm writers
3520         so they can coexist in the same process. Rework the xdebug code to use the
3521         asm writer. This avoids the need to call into the runtime to dump the
3522         debugging info. Add more debugging info for types.
3523
3524         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3525
3526         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3527         cpu description tables, they can't occur in cpu-<ARCH>.md.
3528
3529         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3530         the stack in CEE_LDFLDA. Fixes #450542.
3531
3532         * generics.cs: Add a new test.
3533
3534 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3535
3536         * mini-ops.h: updated MIPS opcodes
3537         * mini-mips.c: decompose long opts
3538         * mini-mips.h: decompose long opts
3539         
3540 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3541
3542         * cpu-mips.md: fix length on int_rem_un
3543         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3544         
3545 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3546
3547         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3548
3549         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3550
3551 2008-11-29  Martin Baulig  <martin@ximian.com>
3552
3553         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3554         mono_debug_using_mono_debugger() in addition to the
3555         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3556
3557 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3558
3559         * mini-ops.h: updated more MIPS opcodes
3560         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3561         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3562         
3563 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3564
3565         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3566
3567 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3568
3569         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3570         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3571         * mini-ops.h: correct selected mips opcode entries
3572         
3573 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3574
3575         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3576         make them work.
3577
3578 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3579
3580         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3581
3582 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3583
3584         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3585         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3586         * mini-mips.h: disable IMT
3587         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3588         
3589 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3590
3591         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3592
3593 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3594
3595         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3596
3597 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3600         consistency.
3601
3602 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3603
3604         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3605         for Set/GetVector aligned versions.
3606
3607 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3608
3609         * basic-simd.cs: Add tests for Get/SetVector.
3610
3611 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3612
3613         * mini.c: Removed g_slist_append_mempool().  Now in
3614         metadata/mempool.c.
3615
3616 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3617
3618         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3619         size properly and make the bounds check optional.
3620
3621         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3622         for SetVector and IsAligned.
3623
3624 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3625
3626         * mini.c: Remove unused mono_normalize_opcodes () function.
3627
3628 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3629
3630         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3631         using the new atomic add ops now.
3632
3633         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3634         add.
3635
3636 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3637
3638         * mini-ppc64.c: Several fixes.
3639
3640 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3641
3642         * cpu-mips.md: added jump_table
3643         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3644
3645 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3646
3647         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3648
3649 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3650
3651         * mini-ops.h: corrected a handful of MIPS opcodes.
3652
3653 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3654
3655         * aot-compiler.c: MIPS to use ELF writer
3656
3657 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3658
3659         * mini-codegen.c: remove MIPS specific assert.
3660
3661 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3662
3663         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3664         fixes.  PPC64 now passes most of the runtime regressions.
3665
3666 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3667
3668         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3669         volatile intervals a bit.
3670
3671 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3672
3673         * basic-long.cs: New test case.
3674
3675 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3676
3677         * mini.c (mini_method_compile): Disable globalra for large methods for 
3678         now.
3679
3680         * regalloc2.c (order_moves): Add fp support.
3681
3682         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3683         source bblock ends with an OP_BR_REG.
3684
3685         * ratests.cs: Add a new test.
3686
3687 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3688
3689         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3690         sharing.  PPC64 now passes generics.exe.
3691
3692 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3693
3694         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3695
3696 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3699         memory when mono_jit_info_table_find () can't find the method in the
3700         LMF case.
3701
3702         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3703         AOTed code too.
3704         
3705         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3706         writer too.
3707
3708 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3709
3710         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3711         Several fixes.  PPC64 now runs exceptions.exe and
3712         devirtualization.exe.
3713
3714 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3715
3716         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3717         arrays.exe and basic-math.exe.
3718
3719 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3720
3721         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3722         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3723
3724 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3725
3726         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3727
3728 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3729
3730         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3731
3732         * ir-emit.h: Move macros from method-to-ir.c to here.
3733
3734 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3735
3736         * mini-ops.h: Correct the long simd ops to use LREG.
3737
3738 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3741         
3742         * mini-ops.h: Correct the dreg type of a few long opcodes.
3743
3744         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3745         Add netbsd support.
3746
3747 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3748
3749         * mini-ppc.c: remove negative stack references in epilog
3750         for platforms that don't support the red zone.
3751
3752 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3753
3754         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3755         point regs.  Now PPC64 passes basic-calls.exe.
3756
3757 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3758
3759         * basic-simd.cs: Add tests for accessors of Vector2l.
3760
3761 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3762
3763         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3764
3765         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3766         
3767         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3768
3769 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3770
3771         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3772         PPC64 passes basic-long.exe.
3773
3774 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3775
3776         * decompose.c: Decompose carry and overflow add on PPC64 like on
3777         other 64 bit archs.  Don't decompose sub at all on PPC64.
3778
3779         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3780         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3781         basic-long.exe.
3782
3783 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3784
3785         * basic-simd.cs: Add tests for accessors of Vector2d.
3786
3787 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3790
3791         * cpu-x86.md: Same.
3792
3793         * mini-x86.c (mono_arch_output_basic_block): Same.
3794         
3795         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3796
3797 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3798
3799         * basic-simd.cs: Add tests for accessors of Vector4f.
3800
3801 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3802
3803         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3804
3805         * cpu-x86.md: Same.
3806
3807         * mini-x86.c (mono_arch_output_basic_block): Same.
3808         
3809         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3810
3811 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3814
3815 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3816
3817         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3818
3819         * cpu-x86.md: Same.
3820
3821         * mini-x86.c (mono_arch_output_basic_block): Same.
3822         
3823         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3824
3825 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3828
3829 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3830
3831         * simd-intrinsics.c: Enable setters for Vector16sb.
3832
3833 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3834
3835         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3836
3837         * cpu-x86.md: Same.
3838
3839         * mini-x86.c (mono_arch_output_basic_block): Same.
3840         
3841         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3842
3843 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3844
3845         * simd-intrinsics.c: Implement setter for Vector8us.
3846
3847 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3848
3849         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3850         for dead variables.
3851
3852 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3853
3854         * mini-ppc.c: remove references to the red zone in the prolog
3855         (for systems that don't support it).
3856
3857 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3858
3859         * cpu-ppc64.md: Fixed a few instruction lengths.
3860
3861         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3862         now.
3863
3864 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3865
3866         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3867         basic.exe now.
3868
3869 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3870
3871         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3872
3873 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3874
3875         * mini-ops.h: Added OP_INSERT_I2.
3876
3877         * cpu-x86.md: Same.
3878
3879         * mini-x86.c (mono_arch_output_basic_block): Same.
3880         
3881         * simd-intrinsics.c: Implement setter for Vector8s.
3882
3883         * simd-methods.h: Add the names of get setters of Vector8s.
3884
3885 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3886
3887         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3888         
3889         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3890         parameters.
3891
3892         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3893
3894 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3895
3896         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3897         for PPC64.  An empty program runs now.
3898
3899 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3902
3903         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3904         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3905         info for JITted code is emitted into a shared library, loadable into gdb.
3906
3907 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3908
3909         * Makefile.am: Changes to build PPC64.
3910
3911         * mini-arch.h: Include mini-ppc64.h on PPC64.
3912
3913 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3914
3915         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3916         in PPC code up to r119147.
3917
3918 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3919
3920         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3921         cpu-ppc64.md: Changes for PPC64.
3922
3923         Based on code submitted by andreas.faerber@web.de at
3924         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3925         X11/MIT license.
3926
3927 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3928
3929         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3930         cpu-ppc64.md: Copied from the corresponding PPC files from
3931         r118846.
3932
3933 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3934
3935         * mini-ops.h: Added OP_ROUND.
3936
3937         * cpu-x86.md: Added round.
3938
3939         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3940
3941         * basic-math.cs: Added test_0_round to test rounding.
3942
3943         Contributed under MIT/X11 license.
3944
3945 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3946
3947         * aot-compiler.c : Fix the Winx64 build.
3948
3949         Contributed under MIT/X11 license.
3950
3951 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3952
3953         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3954         in OP_EXTRACT_R8 to avoid possible stack corruption.
3955
3956 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3957
3958         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3959
3960         * cpu-x86.md: Added extract_r8.
3961
3962         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3963         
3964         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3965         a couple of OP_EXTRACT_I4.
3966
3967         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3968
3969         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3970
3971 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3972
3973         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3974         and not 4.1. 
3975
3976 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3977
3978         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3979         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3980
3981         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3982         are not needed any more.
3983
3984         * mini.h: Remove the unused INS_LIST macros.
3985
3986         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3987         longer needed.
3988
3989         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3990         ir-emit.h.
3991
3992         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3993         mono_alloc_ireg () instead.
3994
3995         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3996         macros.
3997
3998         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3999         on amd64.
4000
4001         * aot-runtime.c (load_aot_module): Disable AOT when running under
4002         CAS.
4003
4004         * mini-amd64.h: Change the monitor fastpath defines to check for
4005         !PLATFORM_WIN32 so they work on *bsd too.
4006
4007         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4008
4009         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4010
4011         * mini.h (MonoCompile): Remove new_ir flag.
4012
4013         * regalloc.h regalloc.c: Remove unused code.
4014
4015         * cpu-*.md: Remove more unused opcodes.
4016
4017         * simple-cee-ops.h simple-mini-ops.h: Removed.
4018
4019         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4020         
4021 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4022
4023         * aliasing.h: Removed.
4024
4025         * *.c: Remove references to aliasing.h and inssel.h.
4026
4027         * mini.c: Remove additional unused functions.
4028
4029         * mini-ops.h cpu-*.md: Remove unused opcodes.
4030
4031 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4032
4033         Remove the old JIT code.
4034
4035         * inssel*.brg: Removed.
4036
4037         * ssa.c abcremoval.c aliasing.c: Removed.
4038
4039         * ssa2.c: Renamed to ssa.c.
4040
4041         * abcremoval2.c: Renamed to abcremoval.c.
4042
4043         * *.c: Removed all !cfg->new_ir code.
4044
4045         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4046         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4047
4048         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4049         
4050 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4051
4052         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4053         to simplify the code and cut back on the number of global symbols in the AOT
4054         file.
4055         
4056         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4057
4058 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4061         with the got/got_info tables.
4062
4063         * mini.h: Bump AOT file format version.
4064         
4065         * unwind.h: New file, contains definitions for stack unwinding.
4066
4067         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4068         to cfg->unwind_ops.
4069         
4070         * aot-compiler.c: Generalize the emitting of unwind information to use the
4071         information in cfg->unwind_ops.
4072
4073         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4074
4075         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4076         AOT method frames. Enable writing symbols for methods by default.
4077
4078 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4079
4080         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4081         and make it work with vectors of element sizes 1, 2 and 4.
4082
4083         * simd-intrinsics.c: Enable getter for all vectors with element size
4084         1, 2 or 4.
4085
4086         * simd-methods.h: Add the names of other getters.
4087
4088         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4089
4090         * cpu-x86.md: Same.
4091
4092         * mini-x86.c: Same.
4093
4094 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4095
4096         * mini-ppc.h: portability fix.
4097
4098 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4099
4100         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4101         buggy and will overwrite it.
4102
4103 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4106         Use it to emit local symbols for all methods so AOTed methods show up with
4107         their full name in gdb/valgrind output.
4108
4109 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4110
4111         * mini-ppc.c: portability fixes.
4112
4113 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4116         entries out of the if (!generic_shared...) code so it is always done.
4117         (mono_class_init_trampoline): Do the patching when running under valgrind
4118         too, newer versions of valgrind have no problems with it.
4119
4120 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4121
4122         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4123         further sections.
4124
4125 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4126
4127         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4128         filters.
4129
4130 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4131
4132         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4133
4134 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4135
4136         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4137
4138         * cpu-x86.md: Same.
4139
4140         * mini-x86.c: Same.
4141
4142         * simd-intrinsics.c: Same.
4143
4144 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4145
4146         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4147
4148 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4149
4150         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4151         to work with more Vector types.
4152
4153 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4154
4155         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4156         store the elemens directly instead of using and intermediate.
4157
4158 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4161
4162         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4163         to preserve %eax for aot plt trampolines.
4164
4165         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4166         (encode_method_ref): Flag synchronized methods so they won't go through
4167         the AOT trampoline.
4168
4169         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4170         wrappers.
4171
4172         * cpu-ia64.md (jmp): Increase max length.
4173
4174 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4177         open generic classes.
4178
4179         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4180
4181         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4182         box+brtrue optimization since it causes test failures on x86.
4183
4184 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4185
4186         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4187
4188         * cpu-x86.md: Same.
4189
4190         * mini-x86.c: Same.
4191
4192         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4193         for simd ctor values. 
4194
4195         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4196         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4197
4198 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4199
4200         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4201         LogicalRightShift.
4202
4203         * simd-instrincs.c: Same.
4204
4205         * basic-simd.cs: Same.
4206
4207 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * ratests.cs: Add more tests.
4210
4211         * regalloc2.c (add_spill_code): Handle more corner cases.
4212
4213 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4214
4215         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
4216         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
4217         both the source an destination of an instruction.
4218
4219 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4220
4221         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
4222         wapihandles.c: more portability changes.
4223
4224 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
4225
4226         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4227         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4228         safe to execute in a signal handler and the kernel provides better
4229         the info in /proc/self/smaps. Avoid the assert on sigaction during
4230         cleanup.
4231
4232 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4235         do the bblock linking hack if it is actually needed.
4236
4237         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4238         up linking.
4239
4240         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4241         crash problem is fixed.
4242
4243         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4244         bblocks.
4245
4246         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4247         for catch clauses.
4248         (mini_method_compile): Set the starting value of next_vreg to 
4249         MAX_IREGS + MAX_FREGS when using globalra.
4250
4251         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4252         filter clauses with BB_EXCEPTION_HANDLER.
4253
4254         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4255
4256 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4257
4258         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4259         space for stdcall.  Fixes regressions on Win32.
4260
4261 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4264         bblocks.
4265         (linear_scan): Remove an assert which doesn't seem to be needed.
4266
4267         * local-propagation.c (mono_local_deadce): Avoid a call to
4268         MONO_DELETE_INS which would screw up the instruction linking.
4269
4270         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4271
4272         * regalloc2.c: Upgrade to work the current JIT code.
4273
4274 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4275
4276         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4277         case.
4278
4279         * aot-runtime.c: Remove some dead code.
4280
4281         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4282         consistency.
4283         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4284
4285         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4286         trampolines using sscanf since atoi doesn't work on large unsigned values.
4287
4288         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4289         Initialize code_size.
4290
4291 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4292
4293         * method-to-ir.c (mini_emit_inst_for_method): Make
4294         Interlocked.CompareExchange work for Int arguments on 32 bit
4295         archs, as well.
4296
4297 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4298
4299         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4300
4301 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4302
4303         * main.c Fix MSVC build.
4304
4305         Contributed under MIT/X11 license.
4306
4307 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4308
4309         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4310         alignment larger than 8 bytes are aligned correctly, too.
4311
4312         * mini.c: Honor the min_align field of MonoClass when laying out
4313         the stack.
4314
4315 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4318
4319         * aot-compiler.c (emit_plt): Fix a warning.
4320         
4321         * aot-compiler.c: Implement ARM support in the binary writer.
4322
4323 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4324
4325         * basic-simd.cs: Add test for getter with byref arg.
4326         Fix the naming of a few tests.
4327         Add missing checks to a test.
4328
4329 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4330
4331         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4332
4333         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4334         most of the full-aot support for monitor enter/exit trampolines.
4335
4336         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4337         enter/exit trampoline creation functions.
4338
4339         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4340         make dist.
4341
4342 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4343
4344         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4345         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4346         implement the needed functionality without adding crap to the runtime.
4347
4348 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4351         non-x86 builds.
4352
4353         * mini.c (mono_build_date): New global version holding the build date in
4354         string format.
4355         
4356         * Makefile.am (buildver.c): Generate a file containing the build date.
4357
4358         * main.c: Set the build date from the generated file.
4359
4360         * mini.c (mono_get_runtime_build_info): New helper function returning build
4361         information in a string format.
4362         
4363         * driver.c (mono_main): Print the build date in --version.
4364
4365         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4366         file when the bind-to-runtime-version option is used.
4367
4368 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4369
4370         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4371
4372 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4373
4374         * simd-methods.h: Rename prefetch methods.
4375
4376         * simd-intrinsics.c: Same.      
4377
4378 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4379
4380         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4381         sizes.
4382
4383 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * aot-compiler.c: Use the bundled elf header files instead of depending on
4386         the system one.
4387         
4388         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4389         mempool.
4390
4391         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4392         on every call.
4393
4394 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4395
4396         * cpu-x86.md: Add store nta ops.
4397
4398         * mini-ops.h: Same.
4399
4400         * mini-x86.c: Same.
4401
4402         * mini.h: Add an enum for simd prefetch modes.
4403
4404         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4405         of store. Use the changed code to support store nta.
4406
4407         * simd-intrinsics.c: Add prefetch ops for all vector types.
4408
4409 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4412         threads.
4413         
4414         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4415         names.
4416
4417         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4418         trampolines.
4419
4420 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4421
4422         * mini-x86.c: Fixed commit.
4423
4424 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4427
4428 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4429
4430         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4431         and MONITOR_EXIT, for the ASM fastpaths.
4432
4433         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4434         available.
4435
4436         * mini.c, patch-info.h: Signature and patch infos for
4437         Monitor.Enter/Exit trampolines.
4438
4439         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4440
4441         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4442         Monitor.Enter/Exit ASM fastpath for Linux.
4443
4444 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4447
4448         * objects.cs: Add a new test.
4449         
4450         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4451
4452         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4453         if MONO_LOG_LEVEL is set.
4454
4455         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4456
4457         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4458
4459         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4460         
4461         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4462         of file offsets. Align the sections belonging to the data segment to 
4463         PAGESIZE.
4464
4465 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4468         elf.h. Port it to amd64.
4469
4470 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4471
4472         * driver.c: Enable SIMD by default.
4473
4474 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4475
4476         * cpu-x86.md: Add prefetch op.
4477
4478         * mini-ops.h: Same.
4479
4480         * mini-x86.c: Same.
4481
4482         * mini.h: Add an enum for simd prefetch modes.
4483
4484         * simd-methods.h: Add prefetch function names.
4485
4486         * simd-intrinsics.c: Add prefetch ops for all vector types.
4487
4488 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4489
4490         * aot-compiler.c (emit_bytes): Speed this up a little.
4491
4492 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * aot-compiler.c: Add JIT time etc. statistics.
4495         
4496         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4497
4498         * mini.h (MonoCompile): Add 'got_offset' field.
4499
4500         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4501         method_got_offsets array.
4502
4503         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4504         wrappers.
4505
4506         * aot-compiler.c (compile_method): Add generic method instances referenced
4507         by the method to the list of methods to be compiled, this is required so if
4508         A<T> references B<T>, and another assembly references A<int>, then it will
4509         also get a copy of B<int>.
4510
4511         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4512         when checking for monitor enter/exit.
4513
4514 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4515
4516         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4517         for Monitor.Enter and Monitor.Exit if enabled.
4518
4519         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4520         Solaris.
4521
4522 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4525         of an OP_MOVE. Fixes #440046.
4526
4527         * basic-long.cs: Add a new test.
4528
4529 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4530
4531         * mini.h: Add synchronization note for the managed counter-part.
4532
4533         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4534         returns the simd caps of the current cpu.
4535
4536 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4537
4538         * basic-simd.cs: Remove Console.WriteLine.
4539
4540 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4541
4542         * basic-simd.cs: New tests for Vector2ul.
4543
4544 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4545
4546         * simd-intrinsics.c: Add new vector type Vector2ul.
4547
4548 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4549
4550         * basic-simd.cs: New tests for Vector2l.
4551
4552 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4553
4554         * cpu-x86.md: Add long version of most packed int ops.
4555
4556         * mini-ops.h: Same.
4557
4558         * mini-x86.h: Same.
4559
4560         * simd-intrinsics.c: Add new vector type Vector2l.
4561
4562 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4565
4566         * simd-methods.h: Remove SN_op_BitwiseXor.
4567
4568 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4571         alignment.
4572
4573 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4574
4575         * basic-simd.cs: Test for Vector2d.
4576
4577         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4578         value.
4579
4580 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * cpu-x86.md: Add double version of all packed float ops.
4583
4584         * mini-ops.h: Same.
4585
4586         * mini-x86.h: Same.
4587
4588         * simd-intrinsics.c: Add new vector type Vector2d.
4589
4590         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4591
4592         * simd-methods.h: Add Duplicate.
4593
4594 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * basic-simd.cs: Test for packing with signed saturation.
4597
4598 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4601         found in the TYPESPEC table.
4602
4603 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4604
4605         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4606         too.
4607
4608         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4609
4610         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4611         instead of the RVA, since the RVA can be changed by tools like the cil 
4612         stripper.
4613
4614         * method-to-ir.c (mono_method_to_ir2): Ditto.
4615
4616         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4617         (deserialize_variable): Ditto.
4618
4619 2008-10-25  Martin Baulig  <martin@ximian.com>
4620
4621         * debug-mini.c (write_variable): Use
4622         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4623
4624 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4625
4626         * cpu-x86.md: Add unsigned variants of packd and packw.
4627
4628         * mini-ops.h: Same.
4629
4630         * mini-x86.h: Emit the right instruction for packd and packw.
4631         Add unsigned variants of packd and packw.
4632
4633         * simd-intrinsics.c: Packd and packw were used in place of their
4634         unsigned variants. Change that.
4635         Add intrinsics for (Signed)PackWithSignedSaturation.
4636
4637         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4638
4639 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4640
4641         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4642
4643 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4646
4647         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4648
4649         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4650         sse instructions.
4651
4652         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4653
4654 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4655
4656         * method-to-ir.c, mini.c: Special casing for the synchronized
4657         wrapper for the ldtoken+GetTypeFromHandle case.
4658
4659 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4660
4661         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4662
4663         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4664         created/split bblocks.
4665
4666 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4667
4668         * mini-ops.h: Add packed signed mul high.
4669         
4670         * cpu-x86.md: Same.
4671
4672         * mini-x86.c (mono_arch_output_basic_block): Same.
4673
4674         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4675
4676         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4677
4678 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4679
4680         * basic-simd.cs: Tests for Vector16sb.
4681
4682 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4685
4686 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * mini-ops.h: Add packed signed min, max and compare greater.
4689         
4690         * cpu-x86.md: Same.
4691
4692         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4693         saturation.
4694
4695         * simd-methods.h: Add CompareGreaterThan.
4696
4697         * simd-methods.h: Remove CompareEquals.
4698
4699         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4700
4701         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4702
4703         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4704         CompareEqual.
4705
4706 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4707
4708         * basic-simd.cs: Fix tests due to change in the API.
4709
4710 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4711
4712         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4713
4714 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4715
4716         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4717
4718         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4719         inst_offset as this has invalid values for LDADDR.
4720
4721 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4724
4725         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4726
4727 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4730         for accessing field->data.
4731
4732 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4733
4734         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4735
4736 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4737
4738         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4739
4740         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4741
4742 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4745         from the cfg mempool.
4746
4747 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4748
4749         * basic-simd.cs: Tests for new methods in Vector8us.
4750
4751 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4752
4753         * mini-ops.h: Add multiply and store high.
4754         
4755         * cpu-x86.md: Same.
4756
4757         * mini-x86.c (mono_arch_output_basic_block): Same.
4758
4759         * simd-methods.h: Same.
4760
4761         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4762         and CompareEqual.
4763
4764 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4767         mono_class_setup_vtable ().
4768
4769         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4770         mono_class_get_vtable_entry () for accessing klass->vtable.
4771
4772         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4773
4774         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4775         found.
4776
4777         * method-to-ir.c (mono_save_token_info): Don't save references made from
4778         wrappers.
4779
4780         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4781         of generic instances.
4782
4783         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4784
4785 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4786
4787         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4788         OP_JMP depends on the method signature.  Calculate it properly.
4789
4790 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4791         
4792         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4793         called directly.
4794
4795         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4796         instances.
4797         (emit_extra_methods): Add another table mapping method indexes to 
4798         offsets in the extra_method_info table.
4799
4800         * mini.h: Bump AOT file format version.
4801         
4802         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4803         and mono_aot_get_method_from_token () into one function.
4804
4805 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4806
4807         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4808         separate counter.
4809
4810 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4813         methods.
4814
4815         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4816         disable_aot.
4817
4818         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4819
4820         * mini.h: Bump aot file format version.
4821
4822         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4823         AOT file can contain native code for methods which are not in the METHOD
4824         table. Generate code for non-sharable generic instances of generic methods
4825         found in the METHODSPEC table.
4826         
4827         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4828         encoding generic type handles.
4829
4830         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4831         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4832
4833         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4834         macros + MONO_ADD_INS.
4835
4836         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4837         context as well.
4838
4839         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4840
4841         * mini.h: Bump aot file format version.
4842
4843         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4844
4845 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4846
4847         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4848         platforms, with definable stack alignment value.  Set to 16 now
4849         for all platforms.
4850
4851         * mini.c, mini.h, driver.c: Command line option for disabling
4852         stack alignment.
4853
4854 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * basic-simd.cs: Tests for new methods in Vector4ui.
4857
4858 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4859
4860         * mini-ops.h: Add packed int shuffle.
4861         
4862         * cpu-x86.md: Same.
4863
4864         * mini-x86.c (mono_arch_output_basic_block): Same.
4865
4866         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4867         extract mask, max, min, shuffle.
4868
4869         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4870
4871 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4872
4873         * basic-simd.cs: Tests for new methods in Vector8us.
4874
4875 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4876
4877         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4878         RuntimeTypeHandle, not a TypedReference.
4879
4880 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4881
4882         * simd-intrinsics.c: remove relocations.
4883
4884 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4887         optimizations from the x86 backend.
4888
4889 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4890
4891         * simd-methods.h, simd-intrinsics.c: debloat method names and
4892         prepare for no relocations.
4893
4894 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4897         
4898         * cpu-x86.md: Same.
4899
4900         * mini-x86.c (mono_arch_output_basic_block): Same.
4901
4902         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4903         extract mask, max, min and sum of absolute differences.
4904
4905         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4906         method name.
4907
4908 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4909
4910         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4911         Renamed one test for consistency.
4912
4913 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4914
4915         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4916         fix to the code that deal with other blocks.
4917
4918 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4919
4920         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4921
4922 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4923
4924         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4925         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4926         able to process the source reg.
4927
4928 2008-10-16  Martin Baulig  <martin@ximian.com>
4929
4930         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4931
4932         * inssel.brg: Add `OP_HARD_NOP'.
4933
4934         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4935
4936         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4937         `OP_HARD_NOP' instruction when running inside the debugger.
4938
4939         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4940         `OP_HARD_NOP' instruction when running inside the debugger.
4941
4942 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4943
4944         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4945         now works. The issue with the regalloc tripping up no longer
4946         happens.
4947
4948         * simd-intrinsics.c (load_simd_vreg): Same.
4949
4950 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4951         
4952         * basic-simd.cs: Tests for new Vector8ui methods.
4953
4954 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4955
4956         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4957         only for type. This fixes crashes where MonoInst::klass is checked
4958         for ops of type != VTYPE or OBJ.
4959
4960         * simd-intrinsics.c (load_simd_vreg): Same.
4961
4962 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4963
4964         * mini-ops.h: Add ops for packed shuffle/max/avg and
4965         extract mask.
4966         
4967         * cpu-x86.md: Same.
4968
4969         * mini-x86.c (mono_arch_output_basic_block): Same.
4970
4971         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4972         extract mask.
4973
4974         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4975         to emit extract mask op.
4976
4977         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4978         to emit word shuffles.
4979
4980 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4981
4982         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4983         the largest alignment needed by a variable, but at least
4984         sizeof(gpointer).
4985
4986 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * basic-simd.cs: Tests for the fixes in the last commit.
4989
4990 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4993         no longer handles STACK_PTR input.
4994
4995         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4996
4997         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4998         get_simd_vreg   but handles STACK_PTR input.
4999
5000         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5001         as the input can be an arbitrary pointer.
5002
5003         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5004         LDADDR local optimization directly otherwise use a store op.
5005
5006 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5007
5008         * basic-simd.cs: Tests for dup low and dup high.
5009
5010 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5011
5012         * mini-ops.h: Add dup low and dup high ops.
5013         
5014         * cpu-x86.md: Same.
5015
5016         * mini-x86.c (mono_arch_output_basic_block): Same.
5017
5018         * simd-intrinsics.c (vector4f_intrinsics): Same.
5019
5020 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * basic-simd.cs: Tests for recently added functionality.
5023
5024 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5025
5026         * mini-ops.h: Add remaining sse1 fp ops.
5027         
5028         * cpu-x86.md: Add remaining sse1 fp ops.
5029
5030         * mini-x86.c (mono_arch_output_basic_block): Same.
5031
5032         * mini.h: Add enum for simd FP compare conditions.
5033
5034         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5035
5036         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5037         so the backed can generate the appropriate op.
5038
5039 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5040         This patch squeese one more byte from the SimdIntrinsc struct.
5041
5042         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5043         a a shift amount intead of simply or'ing it.
5044
5045         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5046
5047         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5048         byte so we can have an aditional flags field without increasing struct size.
5049
5050         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5051         against the simd_supported_versions bitmask.
5052
5053         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5054
5055 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5056
5057         * mini.c: remove rawbuffer code (the only use here is unsafe because
5058         it takes locks during signal handling and the kernel now provides much
5059         better info in proc/pid/smaps these days).
5060
5061 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5062
5063         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5064         OP_X86_PUSH_OBJ. Fixes #434620.
5065
5066         * objects.cs: Add a test.
5067         
5068 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5071         that the packuswb/packusdw don't work with unsigned numbers for what
5072         would be negative numbers in signed format.
5073
5074         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5075         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5076
5077         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5078
5079         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5080
5081         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5082
5083         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5084
5085         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5086         add more ops.
5087
5088         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5089         version as the enum in mini.h.
5090
5091         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5092         for sse3 ops, check the simd_version field if present. This way the code
5093         works with all versions of sse.
5094
5095 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5096
5097         * simd-intrinsics.c: Fixed intrinsic name typo.
5098
5099         * mini.h: Added missing simd exported function.
5100
5101         * basic-simd.cs: Added tests for Vector4ui.
5102         Fixed broken test for Vector16b.
5103
5104 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5105
5106         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5107         the max length to 64.
5108
5109 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5110
5111         * method-to-ir.c: Only do the fast virtual generic method call for
5112         non-wrapper methods.
5113
5114         * mini.h, mini-trampolines.c: The new generic virtual remoting
5115         trampoline handles virtual method calls via the vtable (as done by
5116         the fast virtual generic method calls) to remoting proxies.
5117
5118         * mini.c (mono_jit_create_remoting_trampoline): For generic
5119         methods reate a generic virtual remoting trampoline.
5120
5121         * mini-amd64.h: Enable fast virtual generic method calls again.
5122
5123 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5124
5125         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5126         restore registers when doing tail calls.
5127
5128 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5131         Vector4ui.
5132
5133 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5134
5135         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5136
5137 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5140
5141 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5142
5143         * basic-simd.cs: Retrofit for API changes.
5144
5145 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5146
5147         * mini-ppc.c: Handle integer stack arguments for tail calls.
5148
5149 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5150
5151         * optflags-def.h: Removed sse3 optimization.
5152
5153         * driver.c: Same.
5154
5155         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5156         sse3.
5157
5158         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5159
5160         * mini.h: Added enumeration with simd versions.
5161
5162         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5163         for detecting SSE3.
5164
5165         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5166
5167         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5168
5169 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5170
5171         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5172
5173         * basic-simd.cs: Fixed test naming.
5174
5175 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5176
5177         * mini-ops.h: Added ops for packed and saturated math, shifts
5178         and packing/unpacking.
5179
5180         * cpu-x86.md: Added descriptors for the above ops.
5181
5182         * mini-x86.c: Added code to emmit the above ops.
5183
5184         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5185
5186 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * aot-compiler.c (compile_method): Enable AOT for generic code.
5189
5190         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5191
5192 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5193
5194         * mini.c: add a workaround for a common screwup that ends up blamed
5195         to mono (other processes blocking signal delivery).
5196
5197 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5200         in the LDFLD/STFLD opcodes. Fixes #432673.
5201
5202         * iltests.il.in: Add a new test.
5203
5204 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5205
5206         * mini-arm.c: attach the thread in unmanaged->managed transitions
5207         using delegates (bug #433148).
5208
5209 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5210
5211        * basic-simd.cs: Use new ShuffleSel constants.
5212
5213 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5214
5215         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
5216
5217         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
5218         only disable simd intrinsics if no sse2 is detected.
5219
5220         * optflags-def.h: Added sse3.
5221
5222         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
5223         is disabled.
5224
5225 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5228         when adding delegate-invoke wrappers.
5229
5230 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * Makefile.am: Reenable the simd tests.
5233
5234 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5235
5236         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5237           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5238           other vreg is allocated to that hreg.
5239
5240         Contributed under MIT/X11 license.
5241
5242 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5245         yet checked in.
5246
5247 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * basic-simd.cs: New test suite for SIMD intrinsics.
5250
5251         * Makefile.am: Added new tests.
5252
5253 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5254
5255         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5256
5257         * mini-ops.h: Same.
5258
5259         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5260
5261         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5262         using SSE2 aware opcodes.
5263
5264         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5265         is enabled, this code path is only reachable if conversion ops are emmited after
5266         mono_method_to_ir.
5267
5268         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5269
5270         This optimization saves 6 bytes per conversion against the old version.
5271
5272 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5273
5274         * aot-compiler.c (compile_method): Don't skip methods referencing 
5275         generic methods without a corresponding entry in token_info_hash, since
5276         encode_method_ref () can handle all generic methods now.
5277
5278         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5279         generic context is set.
5280         
5281         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5282         generic sharing of LDTOKEN.
5283
5284 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5285
5286         * mini-amd64.h: Temporarily disabled fast virtual generic method
5287         calls because it breaks the System.Runtime.Remoting tests.
5288
5289 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5292
5293         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5294         so inlining actually works.
5295         (check_inline_caller_method_name_limit): Ditto.
5296
5297 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5298
5299         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5300         64 bit safety (from Olaf Hering and Andreas Farber).
5301
5302 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5303         
5304         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5305         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5306         unused virtual call support code.
5307
5308         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5309         
5310         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5311         which can't use aot trampolines.
5312         (decode_patch): Don't create aot trampolines for methods which can't use
5313         them.
5314
5315         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5316         use aot trampolines.
5317
5318         * mini.h: Bump AOT image format version.
5319         
5320 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5321
5322         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5323         to save_token_info () since cmethod is inflated for constrained calls.
5324
5325         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5326
5327 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5328
5329         * Makefile.am: Add build rules for ppc64.
5330         This avoids the build failing at pedump with unresolved symbols
5331         due to lack of arch_sources. Instead it will now fail earlier
5332         due to lack of cpu-ppc64.md.
5333
5334         Contributed under MIT/X11 license.
5335
5336 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5337
5338         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5339         tail calls.
5340
5341         * iltests.il.in: Add test case for tail call with many arguments.
5342
5343 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5346         to the fast virtual generic method code until the aot case is fixed.
5347
5348 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5349
5350         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5351
5352 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5353
5354         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5355         thunks.
5356
5357 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5358         
5359         * simd-intrinsics.c: Forgot to add this one.
5360
5361         * mini-codegen.c: Fix macro in case SIMD is not supported.
5362
5363 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5364         
5365         This patch land initial JIT support for simd intrinsics.
5366
5367         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5368
5369         * Makefile.am: Added simd-intrinsics.c
5370
5371         * simd-intrinsics.c: New file with simd instrinsic related
5372         code.
5373
5374         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5375
5376         * cpu-x86.md: Add simd related instructions.
5377
5378         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5379
5380         * driver.c: Added two new --regression variants.
5381
5382         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5383
5384         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5385
5386         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5387         extract some complicated logic to helper functions.
5388
5389         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5390
5391         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5392
5393         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5394         the specialized simplification pass.
5395
5396         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5397
5398         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5399
5400         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5401         table.
5402
5403         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5404         if MONO_ARCH_NEED_SIMD_BANK is defined.
5405
5406         * mini-ops.h: Added the new simd ops.
5407
5408         * mini-x86.c: Added mono_arch_xregname.
5409
5410         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5411
5412         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5413
5414         * mini-x86.h: Define simd related MONO_ARCH macros.
5415
5416         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5417
5418         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5419
5420         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5421         MONO_CLASS_IS_SIMD to deal with simd related IR.
5422
5423         * mini.h (MonoInst): Added spill_var to the backend union.
5424
5425         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5426
5427         * mini.h: Added forward declarations of the new simd fuctions.
5428
5429         * optflags-def.h: Added new optimization names SIMD.
5430
5431         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5432
5433         * regalloc.h: Added support for working with 3 register banks.
5434
5435         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5436
5437         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5438
5439 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5440
5441         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5442
5443 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5444
5445         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5446         instead of one on 64 bit systems.
5447
5448         * method-to-ir.c: Remove unused includes.
5449
5450 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5451
5452         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5453         cfg->used_int_regs, since the two are different on arm.
5454
5455 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5456
5457         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5458         mono_method_get_vtable_index() to get the vtable index.
5459
5460 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5461
5462         * method-to-ir.c (mono_method_to_ir2): Don't create native
5463         wrappers for array methods, because they're never called (and if
5464         they were called they wouldn't work).
5465
5466 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5467
5468         * method-to-ir.c (mono_method_to_ir2): Array methods are
5469         special-cased and must not be invoked indirectly via the (M)RGCTX
5470         when generic sharing is turned on.  Fixes #431413.
5471
5472 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5473
5474         * method-to-ir.c: When generic sharing is active, call
5475         non-interface virtual generic methods via the standard trampoline.
5476
5477         * mini-trampolines.c: Handle virtual generic shared methods.
5478
5479         * mini.h, mini-x86.c, mini-x86.h: New argument for
5480         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5481         method thunks and which is the trampoline to call if the lookup
5482         fails.  Enable the virtual generic method thunk for x86.
5483
5484         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5485         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5486         argument but assert that it's NULL, because these archs don't yet
5487         implement the virtual generic method thunk.  Changes in the IMT
5488         thunk data structures.
5489
5490 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * aot-compiler.c (emit_globals): Avoid invalid characters in
5493         the static linking symbol.
5494
5495         * objects.cs: Add a test for the range check optimization. Fix warnings.
5496
5497         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5498         optimization from the current JIT.
5499
5500         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5501         later in decompose_array_access_opts () to allow more optimizations.
5502
5503         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5504         mono_decompose_soft_float () for consistency.
5505
5506         * mini-ops.h: Fix arguments of OP_STRLEN.
5507
5508         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5509         into a separate function.
5510         (reset_cast_details): Ditto.
5511         (handle_unbox): Save cast details. Fixes #431254.
5512
5513         * method-to-ir.c: Remove some obsolete FIXMEs.
5514
5515 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5516
5517         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5518
5519 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5520
5521         * mini-codegen.c: More work on macros to make them
5522         ready for multiple regbanks.
5523
5524 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5527
5528         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5529
5530 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * mini-codegen.c (mono_spillvar_offset): Proper support for
5533         multiple regbanks.
5534
5535 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5538         the stack overflow changes.
5539
5540 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * mini-codegen.c: Make all bank macros depend on reg_bank.
5543
5544         * mini-codegen.c (mono_local_regalloc): Make free mask
5545         initialization regbank aware.
5546
5547 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5548
5549         * mini-codegen.c (mono_local_regalloc): Extract callee
5550         mask selection to a function and make it regbank aware.
5551
5552 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5553
5554         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5555         code to deal with many regbanks.
5556
5557 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * mini-codegen.c: More fp->regbank changes.
5560
5561 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5562
5563         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5564         of a hardcoded constant.
5565
5566 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5567
5568         * method-to-ir.c (type_from_stack_type): Fix typo.
5569
5570 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5571
5572         * mini-ia64.c (emit_move_return_value): Convert float return values to
5573         double.
5574
5575         * objects.cs: Add a new test.
5576         
5577         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5578         VARARG methods to fix an assert later.
5579
5580         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5581         end so it at least compiles.
5582
5583 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5586
5587 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5590         optimization to a new function (emit_optimized_ldloca_ir) and enable
5591         it for both ldloca and ldloca_s.
5592
5593 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5594
5595         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5596         gshared CASTCLASS code.
5597
5598         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5599         amd64, where the libc stack unwinder encounters stack frames referring to
5600         native code in unmapped memory.
5601
5602         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5603         sharing.
5604
5605         * generics.cs: Add new test.
5606
5607 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5608
5609         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5610         add a check that one of the ARM_FPU_ constants is defined.
5611
5612         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5613         
5614         * mini-exceptions.c: Fix build on non-altstack platforms.
5615
5616         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5617         sharing of vtypes.
5618
5619         * ir-emit.h: Add a comment to NEW_PCONST.
5620
5621         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5622
5623         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5624
5625         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5626         after the changes to MonoJitDomainInfo.
5627
5628 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5629
5630         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5631
5632 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5633
5634         * mini-ppc.c: Compiler warning fixes.
5635
5636 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5637
5638         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5639         for pinvokes.
5640
5641 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5642
5643         * exceptions-ppc.c, mini-ppc.h: Compile
5644         mono_arch_handle_altstack_exception() on Darwin, too.
5645
5646 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5647
5648         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5649         work on archs which don't have generic sharing implemented, only
5650         without the vtable_arg.
5651
5652 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5653
5654         * mini.c: Added comment explaining why delegate ctor icall
5655         wrappers are compiled.
5656
5657 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5658
5659         * mini.c: Don't produce trampolines to delegate ctor icall
5660         wrappers but compile them upfront.
5661
5662 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5663
5664         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5665         runtime-set function when going back to managed code. Currently this
5666         is used to set back the protection on the soft ovf pages and/or to
5667         throw the stack overflow exception that happened in unmanaged code.
5668
5669 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5670
5671         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5672         runtime-set function when going back to managed code. Currently this
5673         is used to set back the protection on the soft ovf pages and/or to
5674         throw the stack overflow exception that happened in unmanaged code.
5675
5676 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5677
5678         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5679         the support code for restoring stack protection after stack overflows
5680         that happen in unmanaged code. Don't set the exec permission on the
5681         soft overflow area.
5682
5683 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5686         delegate->method_ptr is set. Fixes #428054.
5687
5688 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5689
5690         * tests.cs: Rename to ratests.cs.
5691
5692         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5693         emit_get_rgctx_... functions.
5694
5695 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5696
5697         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5698
5699 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5700
5701         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5702         before asserting that method is sharable.
5703
5704 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5705
5706         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5707         whether method needs a static RGCTX wrapper used instead of
5708         complex conditions.
5709
5710         * generic-sharing.c, mini.h: A few functions moved to
5711         metadata/generic-sharing.c.
5712
5713 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5714
5715         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5716         Generic code sharing for value types, which essentially means
5717         treating value type methods like static methods.  The RGCTX is
5718         passed in the same way.
5719
5720 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5723         opcode when creating multi-dimensional arrays of open types.
5724
5725         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5726         open generic types.
5727
5728         * generics.cs: Add a test.
5729
5730         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5731
5732 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5733
5734         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5735
5736         * mini.c (mini_method_compile): Set it when running under the debugger. 
5737
5738         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5739         vreg optimization if the flag is set.
5740
5741         * driver.c (mono_main): Add --attach= option to pass options to
5742         the attach agent.
5743
5744         * mini.c (sigquit_signal_handler): Start the attach agent.
5745
5746         * ssapre.c: Disable this to save space since it is not yet ported to
5747         linear IR.
5748
5749         * regalloc2.c: Disable this to save space.
5750
5751         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5752
5753 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5754
5755         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5756         the -v option useful again.
5757
5758 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5761         --break-at-bb.
5762
5763         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5764         arrays of arrays. Fixes #428406.
5765
5766         * method-to-ir.c (mini_emit_castclass): Ditto.
5767
5768         * objects.cs: Add new test.
5769         
5770 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5771
5772         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5773         was wrong at it choked against target_type_is_incompatible for byref types.
5774
5775 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5778         places.
5779
5780 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5781
5782         * mini-exceptions.c: update a few more exceptions-related counters.
5783
5784 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5785
5786         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5787         new functions to allocate from persistent mempools.
5788
5789 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5790
5791         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5792         multiple register banks in the future.
5793
5794         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5795
5796 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5797
5798         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5799
5800         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5801
5802         * mini.h: Export type_to_eval_stack_type.
5803
5804         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5805         is only ins->klass of byref types.
5806
5807 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5808
5809         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5810         (mini_emit_memcpy2): Ditto.
5811
5812         * mini-amd64.c: Fix a warning.
5813
5814 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5815
5816         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5817         linking.
5818
5819 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * method-to-ir.c: Extract stloc micro-optimization to a
5822         function and apply it to all cases.
5823
5824 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5825
5826         * method-to-ir.c: Don't fail generic code sharing in cases we
5827         already support.
5828
5829 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5830
5831         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5832
5833 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5834
5835         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5836         implementation.
5837
5838 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5839
5840         * trace.c: make tracing more useful and correct, with per-thread
5841         id and indent info.
5842
5843 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5844
5845         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5846         doing a method call and the argument is an R4.
5847
5848 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5851         generic methods.
5852
5853 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5854
5855         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5856
5857 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5860         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5861
5862 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * driver.c: Add a --agent argument (not supported yet) to load managed
5865         agent assemblies before loading the main assembly, similarly to how the
5866         Java VM handles agents.
5867
5868 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5869
5870         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5871         function to do stack layout of local variables.
5872
5873 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5874
5875         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5876         calculation.
5877
5878 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5879
5880         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5881         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5882         JIT if DISABLE_JIT is defined.
5883
5884         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5885         defined.
5886
5887 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5888
5889         * iltests.il.in: Disable the fconv test on PPC (the result is
5890         undefined according to ECMA).
5891
5892 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5893
5894         * iltests.il.in: Enable tail call tests for PPC.
5895
5896         * mini.h: Add variable for storing incoming valuetype argument
5897         addresses for tail calls.
5898
5899         * mini-ppc.c: Implement valuetype arguments and return values for
5900         tailcalls on Linux.
5901
5902 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5903
5904         * mini-ppc.c: Partially implement tail calls (struct arguments and
5905         return values not supported).
5906
5907         * method-to-ir.c: Enable tail calls on PPC.
5908
5909 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5910
5911         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5912         runtime-invoke wrappers to work around the problem of them getting
5913         assigned to a random class.
5914
5915         * aot-runtime.c (mono_aot_get_method): Ditto.
5916         
5917 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5920         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5921
5922 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5923
5924         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5925         until they're implemented properly.
5926
5927         * exceptions-ppc.c: Use arch-independent exception-handling code
5928         instead of custom one.
5929
5930         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5931         for Linear IR.
5932
5933         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5934
5935         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5936         applies when __powerpc__ is defined.
5937
5938 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5939
5940         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5941         methods to their code to avoid computing the full name of wrappers and
5942         doing a lookup in a string hash table.
5943
5944 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5945
5946         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5947         we identify bblocks before method_to_ir () is ran.
5948
5949         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5950         Also avoid optimizing branches pointing to themselves.
5951
5952         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5953
5954 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5955
5956         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5957
5958 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5959
5960         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5961         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5962         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5963         'buf'.
5964
5965         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5966         jumped to the same entry in plt_jump_table.
5967
5968 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5969
5970         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5971         dynamic images.
5972
5973 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5976         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5977         #421807.
5978
5979 2008-08-29  Geoff Norton  <gnorton@novell.com>
5980
5981         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5982         segment, and doesn't properly handle .space as .text.  Fixes
5983         AOT Mach/ARM
5984
5985 2008-08-29  Geoff Norton  <gnorton@novell.com>
5986
5987         * mini.c: Disable the mach exception handler when running on 
5988         ARM
5989
5990 2008-08-29  Geoff Norton  <gnorton@novell.com>
5991
5992         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5993         globals on Darwin/ARM
5994
5995 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5996
5997         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5998         since too many things depend on it. Instead, call 
5999         mono_runtime_set_no_exec ().
6000         
6001         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6002         the new JIT.
6003
6004         * aot-compiler.c: Add an 'asm-only' AOT option.
6005
6006         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6007                 
6008         * aot-compiler.c (compile_method): Disable gshared support for now as it
6009         doesn't yet work.
6010
6011 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6012
6013         * mini-amd64.h : Fix a compiler warning.
6014
6015         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6016           Changed to use a callback function to retrieve the unwind info.
6017           This avoids problems observed when code blocks were removed by
6018           unloading an app domain.
6019
6020         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6021           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6022           to work properly.
6023
6024         Contributed under MIT/X11 license.
6025
6026 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6027
6028         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6029           case to keep the stack aligned to 8.
6030
6031         Contributed under MIT/X11 license.
6032
6033 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6036         avoid repeated linear searches.
6037
6038 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6041         methods it can't handle.
6042         
6043         * aot-compiler.c (add_method): Avoid adding a method twice.
6044         (add_wrappers): Add runtime invoke wrappers for all methods.
6045
6046         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6047         function to create an aot-compatible version of this trampoline.
6048
6049         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6050
6051 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6054
6055         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6056         with a generic sharing failure.
6057
6058         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6059
6060         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6061         CEE_RETHROW. Fixes #419634.
6062
6063         * mini.c (mono_method_to_ir): Ditto.
6064
6065         * exceptions.cs: Add a new test.
6066         
6067         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6068         to mono_type_stack_size_internal () since some callers might not pass in
6069         an rgctx.
6070
6071         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6072         instrument_prolog. Fixes #419878.
6073
6074         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6075         doubles in soft float mode volatile.
6076
6077 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6078
6079         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6080
6081         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6082         to handle soft float correctly.
6083
6084         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6085         the fast path.
6086
6087         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6088
6089         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6090         to sp, since the generics catch code requires it.
6091
6092         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6093         copying.
6094
6095         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6096         mono_arch_emit_imt_argument ().
6097
6098         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6099
6100         * mini-arm.c tramp-arm.c: Generic sharing updates.
6101
6102 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6103
6104         * mini-arm.c: Fix the arm build.
6105
6106         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6107         handling enums, generic instances and generic sharing.
6108         (mini_type_stack_size_full): Ditto.
6109
6110         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6111         
6112         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6113
6114         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6115
6116         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6117         trampolines.
6118
6119         * mini-arm.c: Various small generic sharing changes.
6120
6121         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6122         this for x86.
6123         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6124         custom code.
6125
6126         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6127         helper function to return a generic class init trampoline.
6128
6129         * method-to-ir.c mini.c: Use it.
6130         
6131         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6132         arch-specfic function to return a generic class init trampoline.
6133
6134         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6135         the GENERIC_CLASS_INIT custom code.
6136
6137         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6138         a fatal error, not a sharing failure.
6139
6140         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6141         needed.
6142
6143         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6144         trampoline argument from MONO_ARCH_VTABLE_REG.
6145
6146         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6147         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6148         argument, and pass the vtable in VTABLE_REG.
6149
6150         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6151         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6152         argument, and pass the vtable in VTABLE_REG.
6153         (mono_arch_create_trampoline_code_full): Remove some special casing for
6154         the rgctx fetch trampoline.
6155
6156         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6157         Fixes #419273.
6158
6159         * iltests.il: Add a test for it.
6160
6161 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6162
6163         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6164
6165         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6166         no longer needed.
6167
6168         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6169         use mono_jit_info_table_find () to avoid recursion.
6170         (mono_delegate_trampoline): Add a sync wrapper here.
6171
6172         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6173         here.
6174
6175         * mini.c (mono_method_to_ir): Ditto.
6176         
6177         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6178         add_sync_wrapper argument. Don't add a sync wrapper here.
6179         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6180
6181         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6182         
6183 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6184
6185         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6186           of nonvolatile registers back from MonoContext to CONTEXT.
6187
6188         Contributed under MIT/X11 license.
6189
6190 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6191
6192         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6193           arguments on Winx64 there are only 4 argument registers.  For this
6194           logic to work the last argument must be pulled from the stack.  
6195
6196         Contributed under MIT/X11 license.
6197
6198 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6201
6202         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6203         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6204         encode/decode_method_ref ().
6205
6206         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
6207
6208         * aot-runtime.c (decode_patch): Ditto.  
6209
6210         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
6211         MONO_PATCH_INFO_METHOD.
6212
6213         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
6214         MonoGenericJitInfo.
6215
6216         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
6217         MonoGenericJitInfo.
6218
6219         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
6220
6221         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
6222         one from the caller.
6223
6224         * aot-runtime.c (decode_generic_inst): New function to decode and
6225         return a interned generic inst.
6226         (decode_klass_ref): Use it.
6227         (decode_method_ref): Ditto.
6228
6229         * aot-compiler.c (emit_exception_debug_info): Save 
6230         jinfo->has_generic_jit_info too.
6231
6232 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6233
6234         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6235
6236         * iltests.il.in: Add a test for fconv_to_i.
6237
6238         * liveness.c: Disable the liveness2 pass for now to save space.
6239
6240         * regalloc2.c: Include mempool-internals.h to fix warnings.
6241
6242         * aot-compiler.c (encode_method_ref): Encode the context of generic
6243         instance methods.
6244
6245         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6246         the context saved in the aot file.
6247
6248         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6249
6250         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6251
6252         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6253         volatile so they won't be optimized away.
6254
6255 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6256
6257         * ssa.c:
6258         * ssa2.c:
6259         * mini.c:
6260         * regalloc2.c:
6261         * dominators.c: Remove duplicated functions that now are in
6262         mempool-internals.h.
6263
6264 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * aot-compiler.c: Fix warnings.
6267
6268         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6269
6270         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6271
6272         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6273         as the patch type.
6274
6275         * mini.c (mono_resolve_patch_target): Ditto.
6276         
6277         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6278         (encode_klass_ref): Add support for encoding VARs/MVARs.
6279
6280         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6281
6282         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6283         the handling of the got entries into a separate 'decode_got_entry' function.
6284         Add support for RGCTX_FETCH.
6285
6286         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6287         clobbered by the trampoline code.
6288
6289         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6290         not clobbered by the indirect calling code.
6291
6292 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6295         to fix the build.
6296
6297 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6298
6299         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6300         signature using the compilation mempool otherwise we would leak it.
6301
6302 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6305         mono_emit_abs_call ().
6306
6307         * patch-info.h: Add GENERIC_CLASS_INIT.
6308
6309         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6310
6311         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6312         as their target as a near call.
6313
6314         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6315         ABS handling code.
6316         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6317
6318         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6319         call to a runtime function described by a patch.
6320
6321         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6322         mono_emit_abs_call, this has the advantage that the ABS handling code in
6323         mono_codegen () can handle them both, and can handle other stuff in the
6324         future without additional code.
6325
6326         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6327         entry.
6328         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6329         abs addresses.
6330
6331         * mini.h: Add missing bblock related prototypes.
6332
6333         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6334         reverse_inst_list_len fields.
6335
6336         * mini.c: Refactor this file a bit by moving branch optimizations to 
6337         branch-opts.c.
6338
6339         * method-to-ir.c: Merge generic sharing changes missed earlier.
6340
6341         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6342
6343         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6344         shared patches. Process METHODCONST as a shared patch.
6345
6346         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6347         as it crashes on the 2.0 mscorlib.
6348
6349         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6350         to cause crashes.
6351         
6352         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6353         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6354         by IMT.
6355
6356         * aot-compiler.c: Reorganize the got handling code to be a bit more
6357         understandable.
6358
6359 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6362         mono_patch_info_equals/hash, and use it to massively simplify
6363         get_plt_index ().
6364
6365         * mini.c (mono_patch_info_hash): Simplify this and add support for
6366         more patch types.
6367
6368         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6369
6370         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6371         handling code, since an offset is not enough to identify a trampoline.
6372
6373         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6374
6375 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6376
6377         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6378
6379         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6380
6381         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6382
6383         * decompose.c: PPC decompositions for various ops.
6384
6385         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6386
6387 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6390         call the generic trampoline code using a call, instead of a jump, to
6391         remove some special casing from the generic trampoline code.
6392
6393         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6394         (mono_codegen): Ditto.
6395
6396         * aot-compiler.c aot-runtime.c: Ditto.
6397
6398         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6399
6400         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6401         helper function to find the offset corresponding to a lazy fetch trampoline.
6402
6403         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6404         when doing generic sharing.
6405
6406         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6407         places.
6408         
6409         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6410         mini-trampolines.c to be with the other trampoline creation functions.
6411
6412         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6413         as it is equal to method->signature in most cases, add a 
6414         mono_emit_method_call_full variant which takes a signature and an imt
6415         argument as well.
6416
6417 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6418
6419         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6420         to this function, since it could be computed easily from the method 
6421         argument.
6422         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6423         more.
6424
6425         * method-to-ir.c mini.c: Remove references to 
6426         compile_generic_method_wo_context.
6427
6428         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6429         generic method calls.
6430         
6431         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6432         dimensional non-szarrays.
6433
6434         * mini.c (mini_init): Register mono_array_new_1.
6435
6436         * jit-icalls.c (mono_array_new_1): New jit icall.
6437
6438         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6439         pointing to the method.
6440
6441         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6442         method addresses belonging to METHOD_JUMP patches in the 
6443         jump_target_got_slot_hash.
6444         (mono_aot_load_method): Ditto.
6445
6446         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6447         METHOD_JUMP patches.
6448
6449         * mini.c (mini_create_jit_domain_info): New helper function which 
6450         initializes/frees domain->runtime_info.
6451         (mini_free_jit_domain_info): Ditto.
6452         (mini_init): Install the domain hook functions with the runtime.
6453
6454         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6455         information maintained by the JIT.
6456
6457         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6458         insertion into jump_table_hash into mono_codegen (), also implement proper
6459         locking.
6460
6461         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6462         tail calls, it is already done by the aot code.
6463         
6464         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6465         mechanism on amd64.
6466
6467         * iltests.il.in: Make the jmp test a bit more complex.
6468
6469         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6470         generic instances which doesn't have a token.
6471
6472         * aot-runtime.c (decode_method_ref): Ditto.
6473         
6474         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6475         can handle this case now.
6476         (handle_box): Ditto.
6477
6478 2008-08-15  Geoff Norton  <gnorton@novell.com>
6479
6480         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6481         debugging check.
6482
6483 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6486         calling generic methods.
6487
6488         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6489
6490         * aot-runtime.c (decode_patch_info): Ditto.
6491
6492         * mini.c (mono_resolve_patch_target): Ditto.
6493         
6494         * patch-info.h: Add METHOD_RGCTX.
6495
6496         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6497
6498 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6499
6500         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6501         arguments in registers.
6502
6503         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6504         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6505
6506         * mini.c (mini_method_compile): Abort aot compilation for generic
6507         methods if generic sharing is disabled.
6508         
6509         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6510         an mrgctx.
6511
6512         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6513         requiring an mrgctx.
6514
6515         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6516         store instructions when converting a vcall to a normal call.
6517
6518         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6519         mono_arch_find_jit_info.
6520
6521 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6524         avoid calling mono_method_full_name () for every method even if the
6525         env var is not set.
6526         (check_inline_caller_method_name_limit): Ditto.
6527
6528 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6529
6530         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6531         assemblies in one run.
6532
6533         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6534         skipped methods if it is not 0.
6535
6536         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6537
6538 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6539
6540         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6541           MONO_ARCH_HAVE_UNWIND_TABLE.
6542
6543         Contributed under MIT/X11 license.
6544
6545 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6546
6547         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6548           from default optimizaton list on Winx64.
6549
6550         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6551
6552         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6553           the LMF from the MonoJitTlsData structure.
6554
6555         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6556
6557         Contributed under MIT/X11 license.
6558
6559 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6560
6561         * mini.c (sigsegv_signal_handler): Fix the build.
6562
6563         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6564         assembly->aot_module.
6565
6566         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6567         hash table. This simplifies and speeds up a lot of code, and fixes support
6568         for .netmodules.
6569
6570         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6571         with the runtime.
6572
6573         * mini-exceptions.c: Ditto.
6574         
6575         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6576         'native_offset' argument, since these are computed in the 
6577         mono_find_jit_info () function.
6578
6579         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6580         is used by exceptions-ppc.c.
6581
6582         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6583         mono_arch_find_jit_info ().
6584         
6585         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6586         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6587         generic code in mini-exceptions.c.
6588
6589 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6590
6591         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6592
6593         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6594         
6595         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6596         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6597         called while holding the loader lock. Fixes #415608.
6598         (mono_aot_get_method_from_token_inner): Ditto.
6599
6600 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6603         to reduce differences between this and the generic implementation in
6604         mini-exceptions.c.
6605         (ves_icall_get_frame_info): Ditto.
6606
6607         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6608
6609         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6610         longer neccesarry.
6611
6612         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6613         mono_arch_get_call_filter () and make it non-static, for consistency with the
6614         other architectures.
6615
6616 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6617
6618         * mini.c:
6619         * local-propagation.c:
6620         * mini-x86.c: Correct the name of arch defines.
6621
6622 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6625         NO_EMULATE_LONG_SHIFT_OPS define.
6626
6627 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6630         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6631
6632         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6633         MACH fixes. Merged from the 2.0 branch.
6634
6635         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6636
6637         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6638         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6639
6640         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6641
6642         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6643         mono_marshal_get_native_wrapper () signature changes.
6644
6645 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6646
6647         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6648         conversion bug under arm.
6649
6650 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6653
6654         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6655         with overflow checking.
6656
6657 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6658
6659         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6660         to the genmdesc.pl file
6661
6662 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6663
6664         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6665         arg_array in the soft-float versions of the LOAD/STORE macros.
6666
6667         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6668         implementation.
6669
6670         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6671
6672 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6673
6674         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6675         a float HFA. Fixes #413621.
6676
6677 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6678
6679         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6680         frame_size to args_size. Fixes build.
6681
6682 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6683
6684         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6685         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6686
6687         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6688         the stack are not unaligned. Fixes #413247.
6689         
6690 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6691
6692         * mini.c: update jitted methods performance counters.
6693
6694 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6695
6696         * mini-exceptions.c: increase the exceptions thrown performance
6697         counter in mono_handle_exception ().
6698
6699 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6700
6701         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6702         can work with netmodules.
6703
6704 2008-07-28  Geoff Norton  <gnorton@novell.com>
6705
6706         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6707         regression tests.
6708
6709 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6712         correct place.
6713
6714 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6715
6716         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6717           The float param registers and other param registers must be the 
6718           same index on Windows x64.
6719
6720         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6721           ArgValuetypeAddrInIReg argument case.  Setting the argument
6722           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6723
6724         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6725           variable computed above as the copy length for arguments of storage
6726           type ArgValuetypeAddrInIReg.
6727
6728         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6729           ArgValuetypeAddrInIReg argument case.  This case will rely on
6730           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6731
6732         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6733           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6734           jump and tail call instructoins as they do not follow the typical call behavior.
6735
6736         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6737           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6738           local variable and pass the local variable by reference to the called method.
6739
6740         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6741           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6742           of a struct is passed in a register it must be saved with the other
6743           volatile argument on the stack.
6744
6745         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6746           frame pointer the stack adjustment value must be saved to the unwind 
6747           info structure.
6748
6749         Contributed under MIT/X11 license.
6750
6751 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6752
6753         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6754         which got lost in the merge.
6755
6756 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6759         build.
6760
6761         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6762         
6763         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6764         icalls, since they won't be patched.
6765
6766         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6767         different code sequence when running under valgrind to prevent some valgrind
6768         errors.
6769
6770         * iltests.il.in: Add new regression test.
6771
6772         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6773         end with a throw.
6774
6775         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6776         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6777
6778         * iltests.il.in: Add new test.
6779
6780         * aot-compiler.c: Fix some warnings.
6781
6782         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6783         Fixes #412494.
6784
6785 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6788         (mini_usage_jitdeveloper): Add a missing --wapi option.
6789
6790 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * mini-codegen.c: Simplify the is_fp macros.
6793         (free_up_ireg): Remove, use free_up_reg instead.
6794         (free_up_reg): Fix the fp case.
6795
6796 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6799         lowered earlier.
6800
6801         * exceptions-x86.c: Merge some changes which seemed to have got lost
6802         in the linear-ir merge.
6803
6804         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6805
6806         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6807         long vreg volatile even if the variable was already created.
6808
6809         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6810         volatile variables.
6811
6812 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6815
6816         * mini.c (mono_jit_compile_method_inner): Add support for 
6817         MONO_EXCEPTION_BAD_IMAGE.
6818
6819         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6820         mini_method_get_context () returns NULL. Fixes #356531.
6821
6822         * mini.c (mono_method_to_ir): Ditto.
6823         
6824         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6825         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6826
6827 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6828
6829         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6830         in the LDFTN implementation.
6831
6832 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6833
6834         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6835         code, patch calls to icalls, too, even if they're not in the
6836         shared generic code hash.  Fixes #411962.
6837
6838 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * cpu-x86.md: Increase the length of the fcall opcodes.
6841
6842         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6843         calls returning floats.
6844
6845         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6846         on NEWARR.
6847         
6848         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6849         missed earlier.
6850
6851         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6852         into the domain->method_code_hash.
6853
6854         * aot-compiler.c: Fix win32 build.
6855
6856         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6857         
6858         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6859         gshared NEWARR implementation.
6860
6861         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6862
6863         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6864         can be used outside of method_to_ir.
6865
6866         * mini.h (MonoCompile): Add arg_types field.
6867
6868         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6869         
6870         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6871         the values of the local arg_array and param_types array.
6872
6873 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6874
6875         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6876         got accesses might only get generated later when NEWOBJ is decomposed.
6877         
6878         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6879         looking up the native code of the target method when a delegate is called
6880         for the first time.
6881
6882         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6883         optimization.
6884
6885         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6886
6887         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6888         AOT work on platforms without a working dlsym implementation.
6889
6890         * mini.h: Bump AOT image format version.
6891         
6892 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6893
6894         * mini-exceptions.c: Free a MonoType with
6895         mono_metadata_free_type() instead of g_free().
6896
6897         * aot-runtime.c: Free a MonoType.
6898
6899 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6900
6901         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6902         optimization.
6903
6904         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6905         fp stack on x86.
6906
6907 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6908         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6909         profiler hook.
6910
6911 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6914         NEWOBJ calls on valuetypes.
6915
6916         * iltests.il.in: Add new test.
6917
6918         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6919
6920 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6923         is no longer needed.
6924
6925         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6926         non register sized integer arguments.
6927         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6928         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6929         emit_memcpy2 ().
6930
6931         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6932         CEE_MONO_RETOBJ.
6933         
6934         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6935         two a binop with different sized arguments is emitted.
6936
6937         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6938         instruction in the ins==NULL case.
6939
6940 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6941
6942         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6943
6944         * mini-x86.c: Fix osx build.
6945
6946         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6947         opcodes as well.
6948
6949         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6950         instruction for non int sized variables.
6951
6952         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6953         implementation.
6954
6955 2008-07-23  Robert Jordan  <robertj@gmx.net>
6956
6957         * method-to-ir.c: Fix MSVC build.
6958
6959 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6960
6961         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6962         a non int sized type, widen it to an int since newer versions of gcc seem to
6963         generate code which needs this.
6964
6965         * ssa2.c abcremoval2.c: Fix warnings.
6966
6967         * *: Merge the Linear IR branch.
6968
6969         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6970         the ChangeLog file there describes all the changes done over the years. 
6971         Further documentation can be found at www.mono-project.com/Linear_IL.
6972
6973 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6974
6975         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6976           The float param registers and other param registers must be the 
6977           same index on Windows x64.
6978
6979         Contributed under MIT/X11 license.
6980
6981 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6982
6983         * mini.c: Make the previous fix GC safe.
6984
6985 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6986
6987         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6988
6989 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6990
6991         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6992           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6993           ArgValuetypeAddrInIReg instead.
6994
6995         Contributed under MIT/X11 license.
6996
6997 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * mini-codegen.c (get_register_spilling): Fix a warning.
7000
7001 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7002
7003         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7004         for types which the initialization fails. Raises the provided exception
7005         at the right stop after cleanup.
7006
7007 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7008
7009         * aot-compiler.c: Free most of the memory allocated during compilation.
7010
7011         * mini.c (mini_parse_debug_options): Fix a leak.
7012         
7013         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7014         during aot compilation.
7015
7016 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7019         it has too much register pressure.
7020
7021 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7024
7025 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7028         on x86.
7029
7030         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7031         on amd64 similar to the way it is done on arm.
7032
7033         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7034
7035         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7036         consistency, normalize error messages, avoid loading aot-only modules in
7037         normal mode.
7038
7039         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7040         for consistency.
7041
7042         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7043
7044 2008-07-11  Martin Baulig  <martin@ximian.com>
7045
7046         * debug-debugger.h
7047         (MonoDebuggerInfo): Add `interruption_request'.
7048
7049 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * aot-compiler.c (emit_plt): Remove some dead code.
7052
7053         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7054
7055         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7056         return the plt info offset belonging to a given plt entry.
7057
7058         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7059         mono_aot_get_plt_info_offset.
7060         
7061         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7062         similar to the amd64 code by makeing jumps through a separate jump table 
7063         instead of embedding the jump addresses into the code.
7064
7065 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7066
7067         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7068         method.
7069
7070 2008-07-10  Martin Baulig  <martin@ximian.com>
7071
7072         * mini.c (mini_method_compile): Disable generics sharing when
7073         running in the debugger.
7074
7075 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7078
7079         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7080         the local register allocator from running out of registers on x86 when 
7081         using aot.
7082
7083 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7084
7085         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7086         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7087         C4146.
7088
7089         Contributed under MIT/X11 license.
7090
7091 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7092
7093         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7094         speed up the assembler.
7095
7096 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7099         support.
7100
7101         * mini.c: Move the soft float handling macros a bit earlier, add 
7102         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7103         place.
7104
7105         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7106
7107         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7108         read-only to help catch code allocation requests.
7109         
7110         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7111         and turn it off when using --aot-only or when compiling with --aot=full.
7112
7113         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7114         jump table for switches from the normal domain mempool, not the code
7115         manager.
7116
7117         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7118         unbox trampoline which handles aot-only mode too.
7119
7120         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7121         an AOTed unbox trampoline.
7122
7123         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7124
7125 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7126
7127         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7128         ""
7129
7130         Contributed under MIT/X11 license.
7131
7132 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7133
7134         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7135           the unwind information for the method at the end of the allocated block.
7136           
7137         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7138           MonoCompileArch to hold the unwind info for SEH on Winx64
7139         
7140         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7141           frame pointer info for the method being compiled.
7142           
7143         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7144           the call to mono_exception_from_token.
7145           
7146         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7147           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7148           information is stored a the end of the method block because it is all 32-bit offset based.
7149
7150         Contributed under MIT/X11 license.
7151
7152 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7155
7156         * wapihandles.c: Fix warnings.
7157
7158         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7159         mode.
7160
7161         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7162         mono_jit_compile_method in aot-only mode since that calls the type 
7163         initializer.
7164         
7165         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7166         get_delegate_invoke_impl in aot-only mode.
7167
7168         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7169
7170 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7171
7172         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7173
7174         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7175         is on by default.
7176
7177         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7178
7179         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7180         init trampoline from the AOT file as well.
7181
7182         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7183         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7184         code.
7185
7186         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7187         mono_init.
7188
7189         * exceptions-amd64.c: Add _full variants for the remaining exception code
7190         creation functions as well, allow emission of relocatable code, remove
7191         caching since that is now done by the caller.
7192
7193         * mini-exceptions.c: Add _full variants for the remaining exception code
7194         creation functions as well, add aot-only support.
7195
7196         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7197         if we can determine a proper token for them.
7198         (add_wrappers): Add a few more wrappers.
7199         (emit_method_code): Remove some dead code.
7200         (emit_trampolines): Emit exception code too.
7201
7202         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7203
7204         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7205         mono_array_new_va which avoids varargs.
7206
7207         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
7208
7209         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
7210         mono_arch_create_specific_trampoline () in all places.
7211
7212         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
7213         a bit so it can be used for other things as well.
7214         
7215         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
7216         on demand as well.
7217
7218         * exceptions-amd64.c: Rename the caching from the exception code creation
7219         functions, it is done by the caller instead.
7220         
7221         * exceptions-amd64.c: Change the signature of the exception code creation 
7222         functions to allow the creation of relocatable code later.
7223
7224         * mini-exceptions.c: Add a set of functions to query the various 
7225         runtime-generated exception functions.
7226
7227         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7228         mono_arch_.. () functions.
7229         
7230 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7231
7232         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7233
7234         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7235
7236         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7237         (mini_get_vtable_trampoline): Ditto.
7238
7239         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7240         code in the AOT case by returning the code size and a list of relocations to
7241         the caller.
7242
7243         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7244
7245 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7246
7247         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7248           clean the stack.
7249
7250         Contributed under MIT/X11 license.
7251
7252 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7255         so the buffer size can be computed correctly. Fixes #404735.
7256
7257         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7258         normally as cfg->debug_info is already freed.
7259
7260 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * mini-amd64.c: For calls returning vtypes in registers, don't store
7263         the return address on the stack, instead allocate a separate local for
7264         it. Fixes #404729.
7265
7266 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7267
7268         * mini-trampolines.c, mini.h: Add an argument to
7269         mono_create_jit_trampoline_in_domain() for turning off the adding
7270         of the sync wrapper.
7271
7272         * mini.c: Use the JIT trampoline without sync instead of
7273         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7274         be patched.
7275
7276 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7277
7278         * driver.c: Turn on GSHARED optimization by default.
7279
7280 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7283         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7284
7285         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7286         create a variant of the generic trampoline code callable from AOTed trampolines.
7287
7288         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7289         trampoline code callable from AOTed trampolines.
7290
7291         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7292
7293 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7294
7295         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7296         pass-through manner.
7297
7298         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7299         and don't fail sharing for them anymore.
7300
7301         * mini-exceptions.c: Handle exceptions in shared generic methods.
7302
7303         * generic-sharing.c: When checking the context of a generic
7304         method, also check its class's context.  Don't treat wrappers as
7305         sharable.
7306
7307         * mini-trampolines.c: Some code factored out to
7308         metadata/generic-sharing.c.  Handle the MRGCTX case.
7309
7310         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7311         we must deal with the method being of another instantiation of the
7312         class.  Add static rgctx invoke wrappers to generic methods.
7313
7314 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7315
7316         * mini.c: Provide all jit infos of generic shared methods with a
7317         generic jit info.
7318
7319         * mini-exceptions.c: Handle the new situation that a generic info
7320         might be available, but not info about the this/vtable/mrgctx
7321         variable.
7322
7323 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7324
7325         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7326         generic methods.
7327
7328 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * dominators.c (check_dominance_frontier): Fix a warning.
7331
7332         * mini.h: Add some missing prototypes.
7333
7334         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7335
7336         * driver.c (mono_jit_init_version): Correct the comments since the first
7337         argument should be the name of the root domain, not a filename.
7338
7339         * aot-runtime.c (make_writable): Error out if this is called while running
7340         with --aot-only.
7341         (load_aot_module): Ditto.
7342
7343         * aot-compiler.c: Really fix the computation of method indexes.
7344
7345         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7346         optimizations as this is no longer called frequently.
7347
7348         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7349         method and the invoke impl code and pass it to the delegate trampoline instead of
7350         just the delegate class.
7351
7352 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * aot-compiler.c: Fixup the computation of method indexes.
7355         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7356         the method builder infrastructure.
7357
7358         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7359         has no header.
7360
7361         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7362         mode, load the method right away instead of creating a trampoline.
7363
7364         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7365
7366         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7367         some checks a bit.
7368
7369 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7372         (mono_aot_load_method): Use method_index instead of method->token.
7373
7374         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7375         can handle icalls etc. properly.
7376
7377         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7378
7379         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7380
7381         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7382         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7383         JIT_ICALL_ADDR patch type.
7384
7385         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7386
7387         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7388         request flag.
7389         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7390
7391         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7392
7393 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7396         domain->jit_code_hash.
7397
7398 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7401
7402 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7405         get_this_arg_from_call, let it compute it when needed.
7406
7407         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7408         gsctx from code only when needed.
7409
7410         * mini-trampolines.c (get_generic_context): Rename this to 
7411         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7412         it can be called by the arch backends.
7413
7414         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7415
7416 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7417
7418         * driver.c (mono_main): Add experimental --aot-only command line option.
7419
7420         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7421         set.
7422
7423 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7424
7425         * driver.c (DllMain): Remove mono_module_handle.
7426
7427         Contributed under MIT/X11 license.
7428
7429 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7430
7431         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7432         for emitting methods which are not in the source assembly. Detect and report
7433         failure of assembling+linking.
7434         
7435         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7436
7437         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7438
7439 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7440
7441         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7442
7443 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7444
7445         * mini.h: Remove some obsolete prototypes.
7446
7447         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7448
7449 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7450
7451         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7452         supported by Visual Studio, so use alloca().
7453
7454 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7455
7456         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7457         Fixes #402585.
7458
7459 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7460
7461         * mini.c: Fail sharing of a generic method if it contains an open
7462         catch clause (because we don't pass MRGCTXs yet).
7463
7464 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini.c: When compiling a method with generic sharing, insert the
7467         method instantiated with an all-Object generic context into the
7468         jit info table, instead of the context of the first instantiation
7469         of the method we happen to compile.
7470
7471 2008-06-18  Martin Baulig  <martin@ximian.com>
7472
7473         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7474         `major_version' and `minor_version'.
7475
7476 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7477
7478         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7479         mono_method_is_generic_sharable_impl() takes an additional
7480         argument specifying whether to treat type variables as reference
7481         types.
7482
7483 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7484
7485         * mini.h: Removed obsolete prototypes.
7486
7487 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7488
7489         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7490         already handle them.
7491
7492 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7493
7494         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7495         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7496         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7497         tramp-x86.c: Added a MonoGenericContext* argument to
7498         mono_arch_get_unbox_trampoline() so that it can call other
7499         functions which require it.
7500
7501 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7502
7503         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7504         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7505         mono_arch_get_this_arg_from_call() takes a
7506         MonoGenericSharingContext* as well.
7507
7508 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7509
7510         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7511         implement generic sharing of unbox.
7512
7513 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7514
7515         * mini.c: Don't compute the vtable to determine whether a field is
7516         special static, because it might not work for open types.
7517
7518 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7519
7520         * mini.c: Removed the unused token_type and token_source arguments
7521         from get_runtime_generic_context_ptr().
7522
7523 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7524
7525         * mini.c (ADD_BINOP): fix the build
7526
7527 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7530         a widening op.
7531
7532 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7533
7534         * mini.h: Removed class relations enum that's not used anymore.
7535
7536 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7537
7538         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7539
7540         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7541         the lazy fetch trampoline access code.
7542
7543 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7546
7547 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7550
7551         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7552
7553         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7554
7555 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7556
7557         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7558         intrinsics.
7559
7560         * mini-ops.h: Add MIN/MAX_UN opcodes.
7561
7562         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7563         intrinsics.
7564
7565         * basic-math.cs: Add more min/max tests.
7566
7567         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7568
7569 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7570
7571         * mini.c: Small fix in the prologue of emit_castclass.
7572
7573 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7576
7577         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7578         do not work even for unsigned types. Fixes #400014.
7579
7580         * basic-math.cs: Add regression tests for unsigned Min/Max.
7581
7582 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7583
7584         * mini.c: Added additional context_used argument to several
7585         functions, which will be needed for sharing generic methods.  Use
7586         GET_RGCTX macro wherever appropriate.  Declare only one
7587         context_used in mono_method_to_ir().
7588
7589 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7590
7591         * mini.c, generic-sharing.c: Removed generic class relations.
7592
7593         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7594         functions due to MRGCTX changes.
7595
7596 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7597
7598         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7599         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7600         with calculated IMT.
7601
7602         * mini.c: Generic sharing of calls via generic interfaces.
7603
7604         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7605         generic method with non-constant MonoGenericContext*.  Instead,
7606         the context is taken out of the method itself.
7607
7608 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7609
7610         * mini.c: Generic sharing of ldvirtftn.
7611
7612 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7613
7614         * mini.c: Generic sharing of ldftn.
7615
7616 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7617
7618         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7619
7620 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7621
7622         * mini.c: Generic sharing of the special case of ldtoken followed
7623         by a call to GetTypeFromHandle.
7624
7625 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7626
7627         * mini.c: Generic sharing of box for nullable types.
7628
7629 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7630
7631         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7632         are passed on the stack. Fixes #324807.
7633
7634 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7635
7636         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7637         for the ArgValuetypeAddrInIReg case.
7638
7639         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7640         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7641
7642         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7643         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7644         local variable and pass the local variable by reference to the called method.
7645           
7646         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7647         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7648
7649         Contributed under MIT/X11 license.
7650
7651 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7652
7653         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7654
7655         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7656         everything.
7657
7658 2008-06-10  Martin Baulig  <martin@ximian.com>
7659
7660         * debug-mini.c
7661         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7662
7663 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7664
7665         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7666         possible error when no arguments are passed.
7667
7668         Contributed under MIT/X11 license.
7669
7670 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7671
7672         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7673         where the file name is NULL.
7674
7675 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * mini.c: Fix s390 build.
7678
7679 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * trace.c (mono_trace_parse_options): Fix warnings.
7682
7683         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7684
7685 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * mini.c (remove_block_if_useless): Avoid printing the method name.
7688         
7689         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7690         MONO_INST_NEW.
7691
7692         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7693         LMF. Not yet used.
7694
7695         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7696         translated code after it has been patched.
7697
7698 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7699
7700         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7701         avoid problems during code patching on SMP systems.
7702         (emit_call): Avoid adding a patch info which is already added by 
7703         emit_call_body.
7704         (mono_arch_emit_exceptions): Ditto.
7705
7706 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7709         MONO_TYPE_ISSTRUCT already checks for it.
7710
7711 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7712
7713         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7714           structs with floats on Winx64 the float registers are not used.  
7715           The integer registers are always used..
7716         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7717           only one register will be used and only if the size of the struct 
7718           is 1,2,4, or 8 bytes.
7719
7720         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7721           to work for Winx64.
7722
7723         Contributed under MIT/X11 license.
7724
7725 2008-06-05  Martin Baulig  <martin@ximian.com>
7726
7727         * debug-debugger.c (debugger_lookup_class): Also call
7728         mono_class_setup_methods() here; we're only called from RTI.
7729
7730 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7731
7732         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7733         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7734         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7735         Post-process object files and add dtrace-generated object, if necessary.
7736
7737         Contributed under MIT/X11 license.
7738
7739 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7740
7741         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7742         element class.
7743
7744         * mini.c: Generic sharing for unbox.any and castclass.
7745
7746 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7747
7748         * mini.c: Ignore tailcall prefix in shared generic code and when
7749         doing calls which require a vtable/rgctx argument.
7750
7751 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7752
7753         * mini.c: Don't free the JIT info.
7754
7755         * driver.c: Changes in the JIT info table testing code.
7756
7757 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7758
7759         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7760         interruption. Fix some warnings.
7761
7762         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7763         interruption_checkpoint.
7764
7765 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7766
7767         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7768         from embedding applications.
7769
7770 2008-06-02  William Holmes  <billholmes54@gmail.com>
7771
7772         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7773           reserving 32 bytes on the stack when making calls. 
7774
7775         Contributed under MIT/X11 license.
7776
7777 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7778
7779         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7780         the linear IL branch.
7781
7782         * driver.c: Print out more information for --version on arm.
7783
7784 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7787         bb_exit instead, since out of line bblocks might not actually be emitted
7788         out-of-line.
7789         
7790         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7791         maximum epilog size for out of line bblocks if tracing is enabled.
7792
7793         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7794
7795 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7796
7797         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7798
7799 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7800
7801         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7802         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7803         opcodes.
7804
7805 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7808         the 'value' to store is a constant.
7809
7810         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7811
7812         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7813         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7814
7815 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7816
7817         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7818         for accessing method->generic_container.
7819
7820 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7823         
7824         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7825
7826         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7827
7828         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7829         fails.
7830
7831 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7832
7833         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7834
7835         * mini.c: Handle the case when mono_class_vtable () fails.
7836
7837 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7838         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7839         the stat profiler.
7840
7841 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7842
7843         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7844         together with domain sharing.
7845
7846 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7847
7848         * mini.c: Treat callvirts to final methods like non-virtual calls
7849         when doing generic sharing, i.e. look them up in the runtime
7850         generic context.
7851
7852 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7853
7854         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7855         with computed types (for generic sharing).
7856
7857         * mini.c: Generic sharing for mkrefany and refanyval.
7858
7859 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7860
7861         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7862         possible.
7863
7864         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7865         the generic sharing code.
7866         
7867         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7868         when needed.
7869
7870 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7871
7872         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7873
7874 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7875
7876         * driver.c: updated copyright date
7877
7878 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7879
7880         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7881         needed.
7882
7883 2008-05-19  Martin Baulig  <martin@ximian.com>
7884
7885         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7886         pointing to the new `_mono_debug_using_mono_debugger' variable.
7887
7888         * driver.c
7889         (mono_main): Check mono_debug_using_mono_debugger() rather than
7890         the `MONO_INSIDE_MDB' environment variable to check whether we're
7891         inside the debugger.
7892
7893 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7896         argument.
7897
7898 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7899
7900         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7901
7902         * mini.c: Added mini_assembly_can_skip_verification. This
7903         function checks if the assembly requested to skip verification. 
7904         Fixes part of #387274.
7905
7906 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * mini.c (mini_get_method): Disable the check for open generic classes when
7909         using generic sharing.
7910
7911         * generics.cs: Add a test for #387034.
7912
7913         * mini.c (mini_get_method): Check whenever the method class is an open generic
7914         type, and return NULL in that case, causing a verification error. Fixes
7915         #384123.
7916
7917 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7918
7919         * driver.c (mono_main): Revert r102623. The right
7920         thing to do is to enable the verifier under verifiable
7921         unless a --security flag was passed.
7922
7923         We need this non-trivial behavior for --verify-all otherwise
7924         mcs-compileall won't be able to use it. As it needs everything to
7925         be verified under validil.
7926
7927 2008-05-06  Martin Baulig  <martin@ximian.com>
7928
7929         Fix #383749.
7930
7931         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7932         (mono_debugger_thread_cleanup): Likewise.
7933         (mono_debugger_extended_notification): Likewise.
7934
7935 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7938         against both inflated and non-inflated methods. We need to check against the
7939         generic definition for cases where the instantiated method is not visible.
7940         We need to check against the inflated types for cases where the instantiation
7941         changes any super type. This fixes #382986.
7942
7943         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7944         that check for visibiliy as generic params only appears as the type subject
7945         of tokens on call opcodes. Field manipulation and ldftn must always
7946         target an exact type.
7947
7948 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7951         if no related --security flag is passed.
7952
7953 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7954
7955         * mini-arch.h: Prepare support for ppc64.
7956
7957         Contributed under MIT/X11 license.
7958
7959 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7960
7961         * aot-runtime.c: Prepare support for ppc64.
7962
7963         Contributed under MIT/X11 license.
7964
7965 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7966
7967         * mini-ops.h: Prepare support for ppc64.
7968
7969         Contributed under MIT/X11 license.
7970
7971 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7972
7973         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7974
7975         Contributed under MIT/X11 license.
7976
7977 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7978
7979         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7980         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7981         assemblies on windows.
7982
7983 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7984
7985         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7986         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7987         * main.c: Use UTF-8 encoded command line instead of Windows default code
7988         page on Windows to support Unicode.
7989         * driver.c (DllMain): New function for mixed-mode assembly support.
7990         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7991         export __stdcall functions without decoration.
7992
7993         Contributed under MIT/X11 license.
7994
7995 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7996
7997         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7998         saving it very early.
7999
8000 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8001
8002         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8003         deleted.  The only way to access the new RGCTX is via the
8004         trampline.
8005
8006         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8007         vtable instead of the RGCTX to static methods.
8008
8009         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8010         accessing the new RGCTX.
8011
8012         * generic-sharing.c: There is no separation between self, type
8013         arguments and other types in the RGCTX anymore.
8014
8015 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8016
8017         * mini-amd64.c (add_general): Remove previous stack adjustment.
8018         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8019         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8020         for 32 bytes of stack space reserved for all calls.
8021         
8022         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8023         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8024         adjustment.
8025         
8026         Code contributed under MIT/X11 license.
8027
8028 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8029
8030         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8031         against the root definition, peeling out method and type instantiations.
8032         Cache verify success results, code that fails verification is still
8033         checked multiple times.
8034
8035 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8036
8037         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8038
8039 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8040
8041         * mini-amd64.c (add_general): Always increment stack on Win64.
8042         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8043         on Win64.
8044         
8045         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8046         stack based argument handling on Win64.
8047         
8048         Code contributed under MIT/X11 license.
8049
8050 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8051
8052         * Makefile.am (version.h): Add support for git-svn.
8053
8054 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8055
8056         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8057         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8058         avoiding allocations and libc functions which might deadlock.
8059         
8060         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8061         'no-gdb-backtrace' option is set.
8062
8063         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8064
8065         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8066
8067 2008-04-21  Martin Baulig  <martin@ximian.com>
8068
8069         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8070         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8071
8072 2008-04-21  Martin Baulig  <martin@ximian.com>
8073
8074         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8075         `thread_vtable', `event_handler_ptr' and `event_handler'.
8076
8077 2008-04-21  Martin Baulig  <martin@ximian.com>
8078
8079         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8080         allows delayed initialization of the `executable_code_buffer' when
8081         attaching.
8082
8083 2008-04-21  Martin Baulig  <martin@ximian.com>
8084
8085         * mini.h (mono_debugger_create_notification_function): Removed.
8086         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8087
8088         * mdb-debug-info64.s
8089         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8090
8091         * mdb-debug-info32.s
8092         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8093
8094         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8095         currently only works on x86 and x86_64, so don't create it on ppc.
8096
8097 2008-04-21  Martin Baulig  <martin@ximian.com>
8098
8099         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8100
8101         * mini.c
8102         (mini_method_compile): In the fp elimination check, check
8103         `debug_options.mdb_optimizations' in addition to
8104         mono_debug_using_mono_debugger().       
8105
8106         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8107         disable some JIT optimizations which are only disabled when
8108         running inside the debugger.
8109         Added `--help-debug' option to describe the debugging options.
8110         (parse_debug_options): New static function to parse the `--debug'
8111         options, so we can easily add more stuff in future.
8112
8113 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8116         the method has no body.
8117
8118 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8119
8120         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8121         assembly is not allowed in MSVC 64-bit compiler. 
8122         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8123         as we get floating point exceptions everywhere.
8124         
8125         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8126         correctly align arguments for call to throw_exception.
8127         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8128         
8129         Code contributed under MIT/X11 license.
8130
8131 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8134
8135 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8136
8137         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8138
8139         * mini-amd64.c (NEW_INS): Set cil_code.
8140
8141         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8142         from mini-amd64.c so all debugger related logic is in one place.
8143
8144         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8145         later won't have a random ip assigned to them.
8146
8147 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8148
8149         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8150         the arch specific function initializes code_size.
8151         (mono_create_delegate_trampoline): Ditto.
8152
8153         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8154         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8155         platforms.
8156
8157         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8158         running under the debugger.
8159
8160         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8161         debugger.
8162
8163         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8164         debugger. Also move the disabling of optimizations here from driver.c.
8165         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8166         debugger.
8167
8168         * mini.h (MonoCompile): Add a few new flags.
8169
8170 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8173         so the cil_code field of created MonoInst's is properly set.
8174         (mini_select_instructions): Ditto.
8175
8176         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8177         (MONO_INST_NEW_CALL): Ditto.
8178
8179         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8180         in many places so the ins->cil_code field is properly initialized.
8181
8182         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8183         place.
8184
8185 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8186
8187         * mini.c (mini_method_compile): Print a different message when compiling a 
8188         shared method.
8189         
8190         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8191         > 1.
8192
8193 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8196         SSE2 instructions.
8197
8198         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8199         
8200 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8201
8202         * mini.c (handle_stack_args): Make this return void since its return value was
8203         never used. Also set cfg->unverifiable for invalid IL instead of calling
8204         G_BREAKPOINT ().
8205
8206 2008-04-10  Mark Probst  <mark.probst@gmail.com>
8207
8208         * mini.c: Make sure "this" is live in catch clauses with type
8209         variables in shared generic code.
8210
8211 2008-04-08  Mark Probst  <mark.probst@gmail.com>
8212
8213         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
8214         generic_class_is_reference_type() to ensure the proper behaviour
8215         when sharing generic code and the type in question is a type
8216         argument.
8217
8218 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
8221         race conditions when printing thread dumps. Fixes #377738.
8222
8223 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
8224         
8225         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
8226         shows up when both MonoInst arguments can cause aliasig.
8227         There is likely no way in the current JIT to trigger this problem, but
8228         it showed up in the development of generics sharing, when in a new
8229         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8230         When the generics sharing code will be committed, its tests will be
8231         valid also for this bug.
8232
8233 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8234
8235         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8236         PATCH_INFO_METHOD.
8237
8238         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8239         NULL.
8240
8241 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8242
8243         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8244         use a more detailed exception message for InvalidCastException.
8245
8246         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8247
8248         * driver.c (mono_main): Add --debug=casts option to turn on better 
8249         InvalidCastException message details.
8250
8251         * mini.c (mini_get_debug_options): New helper function to return the address of
8252         the debug_options variable.
8253
8254         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8255         the jit_tls TLS variable.
8256
8257         * mini.c (mono_jit_tls): New TLS variable.
8258
8259         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8260         option is used.
8261
8262 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8265
8266         * mini.c: Removed verifer related stuff, code moved to verify.c.
8267
8268         * driver.c: Using code from verify.c instead of mini.c.
8269
8270 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8273         longer valid.
8274
8275 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8276
8277         * mini.c (check_for_method_verify): Enabling verification of
8278         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8279         have been fixed.
8280
8281 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8282
8283         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8284         caller saved registers as well.
8285         
8286         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8287         saved registers as well.
8288
8289 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8292
8293         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8294         code.
8295
8296 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8297
8298         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8299         to get_call_info.
8300         (get_call_info): Take a gsctx argument instead of 'cfg'.
8301
8302 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8303
8304         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8305         mono_verify_all is set.
8306
8307         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8308
8309         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8310
8311 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8314         an exception.
8315
8316         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8317         verifier and the code generated by the compiler.
8318
8319 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8320
8321         * mini.c: Generic sharing of the non-nullable case of the box
8322         instruction.
8323
8324 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * inssel.brg: Fix the build.
8327
8328         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8329
8330 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8331
8332         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8333         Array:Address. Fixes #372410.
8334
8335         * iltests.il.in: New tests for readonly prefix.
8336
8337 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8340         mini-trampolines.c.
8341
8342         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8343         mini-exceptions.c.
8344
8345         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8346         
8347         * mini.c (mono_decompose_op_imm): New helper function.
8348
8349         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8350         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8351         return value.
8352
8353         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8354         mono_arch_output_basic_block. Fix warnings.
8355
8356         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8357         for now.
8358
8359 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8362         since the extra frame is now detected automatically inside the loop.
8363
8364         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8365         opts which are now in mono_peephole_ins ().
8366         
8367         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8368
8369         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8370         frames and skip duplicate managed-to-native frames. Fixes #367665.
8371
8372         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8373         opts which are now in mono_peephole_ins ().
8374         (mono_arch_peephole_pass_2): Ditto.
8375
8376         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8377
8378         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8379         arch independent peephole optimizations.
8380
8381         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8382         opts which are now in mono_peephole_ins ().
8383
8384         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8385         
8386         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8387
8388         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8389         pattern.
8390
8391         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8392         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8393         opcode. 
8394
8395 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8396
8397         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8398         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8399         return value.
8400
8401         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8402         mono_arch_output_basic_block. Fix warnings.
8403
8404 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8405
8406         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8407         conv.ovf.u.un.
8408
8409 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8410
8411         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8412         conv.ovf.u.un.
8413
8414         * iltests.il: Add new tests.
8415
8416 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8417
8418         * mini.c: Removed Windows version macros.
8419
8420 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8421
8422         * generic-sharing.c: Put reflection types in the extensible part
8423         of the runtime generic context.
8424
8425         * mini.c: Generic sharing of the GetTypeHandle special case of the
8426         ldtoken instruction.
8427
8428 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8429
8430         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8431
8432         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8433         
8434         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8435         consistency with the other version on the linear IR branch.
8436
8437         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8438
8439         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8440
8441         * iltests.il.in: Add new tests.
8442
8443 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8444
8445         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8446
8447         * iltests.il.in: Add new tests.
8448
8449 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8450
8451         * mini.c: Two variables with the same name were declared in
8452         nesting contexts and one wasn't initialized.  Fixed.
8453
8454 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8455
8456         * mini.c: Generic sharing of the initobj instruction.
8457
8458 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8459
8460         * mini.c: make the test to optimize ldtoken from typeof() more
8461         precise.
8462
8463 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8464
8465         * mini.c: Generic sharing of the initobj instruction for reference
8466         types.
8467
8468 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8469
8470         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8471         the mono_breakpoint_clean_code() code to perform bound checks.
8472
8473 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8474
8475         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8476         mono_arch_patch_callsite() to include the start of the managed method
8477         to be able to perform bound checks.
8478
8479 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8480
8481         * mini.c: Generic sharing for the isinst instruction.
8482
8483 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8484
8485         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8486         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8487         with the runtime generic context argument.
8488
8489         * mini.c: Share calls to several types of unsharable methods by
8490         putting the address of the method code in the runtime generic
8491         context and doing an indirect call.
8492
8493         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8494         to switches.
8495
8496 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8497
8498         * generic-sharing.c: Change due to a change in the runtime genric
8499         context API.
8500
8501 2008-03-15  Martin Baulig  <martin@ximian.com>
8502
8503         * tramp-x86.c
8504         (mono_arch_nullify_class_init_trampoline): Add call to
8505         mono_breakpoint_clean_code() to make things work when running
8506         inside the debugger.
8507
8508         * tramp-amd64.c
8509         (mono_arch_nullify_class_init_trampoline): Add call to
8510         mono_breakpoint_clean_code() to make things work when running
8511         inside the debugger.
8512
8513 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8514
8515         * inssel-long.brg (reg): Fix 64 bit build.
8516
8517 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8518
8519         * mini.c, mini.h: Share static generic code by passing it an
8520         implicit argument pointing to the runtime generic context.
8521
8522         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8523         inssel-long32-mips.brg: New opcodes for calling shared static,
8524         which need to be passed the runtime generic context.
8525
8526         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8527         argument on the stack in the prologue if needed.  New function for
8528         finding the runtime generic context argument from the registers
8529         saved by the trampoline.
8530
8531         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8532         runtime generic context argument.
8533
8534         * tramp-amd64.c: Also restore the register used for the runtime
8535         generic context argument.
8536
8537         * mini-trampoline.c: Resolve shared static calls by consulting the
8538         runtime generic context via the new argument.
8539
8540         * generic-sharing.c: Add an argument to sharability-checking
8541         functions that specifies whether type variables should be treated
8542         as sharable type arguments.
8543
8544         * inssel-x86.brg: Removed a superfluous, buggy rule.
8545
8546         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8547         to switches.
8548
8549 2008-03-14  Martin Baulig  <martin@ximian.com>
8550
8551         * debug-debugger.c (main_thread_handler): Call
8552         mono_runtime_run_main() without sending any notifications.
8553
8554         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8555
8556 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8559
8560 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8561
8562         * tramp-x86.c: Fixed register restore offsets in the trampoline
8563         code for ECX and EDX.
8564
8565 2008-03-12  Geoff Norton  <gnorton@novell.com>
8566
8567         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8568         different ucontext_t implementations.
8569         * exceptions-arm.c: Use the above defines to get exceptions working on 
8570         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8571         * mini-arm.c: Implement iPhone icache support (based on a patch by
8572         Luke Howard lukeh@padl.com)
8573
8574 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8575
8576         * mini.c: Enable generic sharing of calls to non-static
8577         non-interface non-generic non-value-type methods.
8578
8579         * mini-trampolines.c: Resolve calls from shared generic code.
8580
8581 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8584
8585         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8586
8587 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8588
8589         * mini.c: some fixes for the AOT compiler.
8590
8591 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * cpu-amd64.md: Add clob:1 to some float opcodes.
8594
8595 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8596
8597         * mini.h: Added MiniVerifierMode enumeration.
8598
8599         * mini.c: Added mini_verifier_set_mode to control
8600         the usage of the new verifier.
8601
8602         * mini.c (mono_method): Integrated the new verifier.
8603
8604         * driver.c: Extended --security option with validil and
8605         verifiable options to activate the new verifier.
8606
8607 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8608
8609         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8610         optimization to ctors taking 0 or 2 arguments too.
8611
8612         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8613         a bit.
8614
8615         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8616
8617         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8618
8619 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8622         non-aot case as well.
8623
8624         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8625
8626         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8627         changes.
8628
8629         * aot-compiler.c (encode_patch): Ditto.
8630
8631         * mini.h (G_MININT32): Fix the definition of this.
8632
8633 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8634
8635         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8636
8637         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8638
8639 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8642         methods returning vtypes in registers.
8643         (mono_arch_allocate_vars): Ditto.
8644
8645         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8646
8647         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8648
8649         * generics.cs: Add a test from the linear IR branch.
8650
8651         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8652
8653         * mini.c (inline_method): Cache failed inline attempts.
8654
8655 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8656
8657         * mini.c: For shared methods of generic classes put the location
8658         of "this" into the MonoGenericJitInfo.
8659
8660         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8661         register out of a MonoContext by register number.  Add the generic
8662         sharing context as an argument to mono_arch_find_this_argument().
8663
8664         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8665         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8666         for new arch function.
8667
8668         * mini-exception.c: Handle open exception clauses in shared
8669         generic code.
8670
8671         * mini-trampolines.c: Supply additional argument to
8672         mono_arch_find_this_argument().
8673
8674 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * Makefile.am (regtests): Run the bench.exe tests last.
8677
8678 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8679
8680         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8681         a bit.
8682
8683 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8686         with MS.
8687
8688         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8689         
8690         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8691
8692         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8693         whose class has no cctor.
8694
8695         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8696
8697 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8698
8699         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8700         unverified.
8701
8702 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8703
8704         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8705         to be in sync with the code on the linear IR branch.
8706
8707         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8708
8709         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8710
8711 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8714
8715         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8716
8717         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8718
8719         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8720
8721         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8722         
8723         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8724         body.
8725
8726 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8727
8728         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8729         OP_LOADR4_MEMBASE emission.
8730
8731         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8732         (mono_spillvar_offset_float): Ditto.
8733
8734         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8735
8736         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8737         emission.
8738
8739         * basic-long.cs: Add regression tests for them.
8740
8741         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8742         use.
8743         (mono_arch_allocate_vars): Fix representation of single-precision float
8744         argument.
8745         (mono_arch_output_basic_block): Ditto.
8746
8747         * inssel-mips.brg: Ditto, remove duplicate items.
8748
8749         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8750         arguments of tail calls as on other platforms.
8751         (mono_arch_output_basic_block): Handle tail calls.
8752
8753         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8754         register.
8755
8756         * objects.cs (test_5_pass_static_struct): Add test for it.
8757
8758         Contributed under MIT/X11 license.
8759
8760 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8761
8762         * Makefile.am: Use gmcs for compiling the regression tests.
8763
8764         * *.2.cs *.2.il: Rename to *.cs and *.il.
8765
8766 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * regalloc.h: Make the vassign array smaller.
8769
8770         * mini.c (mini_method_compile): Remove an unused field in cfg.
8771
8772         * mini-codegen.c: Add a bunch of micro optimizations.
8773
8774 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * regalloc.h: Remove some unused fields.
8777
8778 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8781
8782         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8783
8784 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8785
8786         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8787
8788         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8789         trampoline: Fetch an entry from the runtime generic context.  If
8790         it's NULL, jump to the actual trampoline to fill the runtime
8791         generic context.  Otherwise, return it.
8792
8793         * mini.c: Call the lazy fetch trampoline to get entries out of the
8794         runtime generic context.
8795
8796         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8797         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8798         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8799
8800 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8801
8802         * mini.c: Fetch data out of the extensible part of the runtime
8803         generic context instead of calling a helper function.
8804
8805         * generic-sharing.c: Some functions moved into
8806         metadata/generic-sharing.c.  Helper function for fetching other
8807         types now checks and asserts against extensible rgctx (just for
8808         debugging purposes - the helper function isn't called anymore
8809         unless for debugging).
8810
8811 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8814         for tail calls up to the point that the tests in iltests.exe run. Also add a
8815         dummy CKFINITE implementation.
8816         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8817         needed for trampoline LMF frames.
8818
8819         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8820         trampoline LMF frames.
8821
8822 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8823
8824         * mini.c (inline_method): clean any pending loader error when inlining fail.
8825         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8826
8827 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8830
8831         * aot-runtime.c (decode_patch_info): Ditto.
8832
8833         * mini.c (mono_resolve_patch_target): Ditto.
8834         
8835         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8836         icall wrappers.
8837
8838         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8839         
8840         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8841         if it references an icall address.
8842
8843 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8844
8845         * cpu-s390x.md: Remove some more unused opcodes.
8846         
8847         * cpu-s390x.md: Remove some unused opcodes.
8848
8849         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8850         mono_op_imm_to_op ().
8851
8852         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8853         instead of a switch statement.
8854         
8855         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8856         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8857
8858         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8859         
8860         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8861
8862         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8863         -1.
8864
8865 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8868         opened. Fixes #362607.
8869
8870         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8871
8872         * iltests.il.in: Add a test for static methods in interfaces.
8873
8874 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * genmdesc.c (build_table): Fix a crash on older glib versions.
8877
8878         * cpu-sparc.md: Remove some unused opcodes.
8879         
8880         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8881         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8882
8883         * cpu-amd64.md: Remove some unused opcodes.
8884
8885         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8886         like the other opcodes.
8887
8888 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8889
8890         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8891
8892         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8893
8894         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8895         variables 'cfg' instead of 'm' for consistency.
8896
8897         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8898
8899         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8900         argument holding the vtype return address, to avoid the ambigious use of
8901         cfg->ret for this purpose.
8902
8903         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8904
8905         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8906         
8907         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8908         new mono_print_ins () function which only takes one argument.
8909
8910 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8911
8912         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8913         macro arguments.
8914
8915 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8916
8917         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8918
8919         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8920
8921         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8922         opcodes and other small changes.
8923
8924         * mini-ops.h: Add some new opcodes from the linear IR branch.
8925
8926         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8927
8928         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8929         opcodes, use the REG_MEMBASE opcodes instead.
8930         
8931         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8932         opcodes, use the REG_MEMBASE opcodes instead.
8933         
8934         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8935         linear IR branch.
8936
8937         * mini.c (mono_op_imm_to_op): New helper function.
8938
8939         * mini-ops.h: Add some opcodes from linear IR branch.
8940
8941 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8944         <tsv@solvo.ru>.
8945
8946 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8947
8948         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8949         OP_ICONV_TO_R4/R8.
8950
8951         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8952
8953 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * aot-compiler.c (emit_method_code): Add an assert.
8956
8957         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8958         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8959         methods.
8960
8961 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8964         some load/store opcodes so they are consistent. 
8965         (mono_arch_emit_prolog): Simplify some code.
8966
8967         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8968
8969         * objects.cs: Add tests for large argument offsets on ARM.
8970
8971         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8972         stack offsets. Fixes #359651.
8973
8974         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8975
8976         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8977
8978         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8979
8980         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8981
8982         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8983
8984         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8985         rid of CEE_CONV_R_UN.
8986
8987         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8988
8989 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8992
8993         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8994
8995         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8996
8997         * cpu-amd64.md: Remove some unused opcodes.
8998
8999         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9000
9001         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9002
9003         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9004         arch specific functions for its parts. Call the peephole pass after local
9005         regalloc so the prolog can compute a more accurate max_offset.
9006         
9007         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9008         the corresponding OP_I/OP_L opcodes.
9009
9010         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9011
9012         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9013
9014 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9017         as they are handled in mini.c.
9018
9019         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9020         
9021         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9022         case since it is handled in mini.c.
9023
9024         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9025
9026         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9027
9028         * *.c: Use the new opcodes in the IR and back end code.
9029
9030         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9031
9032         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9033
9034 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9035
9036         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9037         an assert because it has a race condition.
9038
9039 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9040
9041         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9042
9043         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9044
9045         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9046
9047         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9048         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9049
9050 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * cpu-amd64.md (move): Correct the maximum size of move.
9053
9054 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9055
9056         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9057         the generic class init trampoline to return quickly if the class
9058         is already inited.
9059
9060 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9061
9062         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9063         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9064
9065 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9066
9067         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9068         branch.
9069
9070 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * objects.cs: Add some soft-float tests.
9073
9074         * mini.c: Fix a couple more soft-float issues.
9075
9076         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9077
9078         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9079         avoid a REX prefix.
9080
9081 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9082
9083         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9084         exception happens while compiling a virtual method.
9085
9086 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9089         
9090         * mini-sparc.c: Fix build.
9091
9092         * mini-sparc.c (get_call_info): Add support for generic sharing.
9093
9094         * mini-exceptions.c: Add a FIXME.
9095
9096 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9099         altstack handling code.
9100
9101         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9102         
9103         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9104
9105         * mini-s390.c: Add support for generic sharing.
9106
9107         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9108         Fix CAS on s390.
9109         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9110
9111         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9112
9113         * mini-s390x.c: Add support for generic sharing.
9114         
9115         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9116         Fix CAS on ia64.
9117         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9118
9119         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9120         can be used since it takes a 16 bit signed immediate.
9121
9122         * inssel-s390x.brg: Fix OP_SETRET.
9123
9124         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9125
9126         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9127
9128         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9129
9130         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9131
9132         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9133         in one place.
9134
9135         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9136         stuff.
9137
9138         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9139         of the unused mono_arch_patch_delegate_trampoline stuff.
9140
9141 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9142
9143         * basic-long.cs: Move the fp related tests to basic-float.cs.
9144
9145         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9146
9147         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9148
9149         * basic-calls.cs: Add a test for proper float argument passing.
9150
9151         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9152         if the context corresponds to an exception received through a signal.
9153
9154         * exceptions.cs: Add a test for nullref handling at the start of a try
9155         clause.
9156
9157         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9158
9159         * jit-icalls.c (mono_break): New JIT icall.
9160
9161         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9162
9163         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9164
9165 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * cpu-*.md: Get rid of unused opcodes.
9168
9169         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9170
9171         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9172         by all platforms.
9173
9174         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9175         define.
9176
9177         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9178         the arch independent trampoline code in mini-trampolines.c.
9179
9180         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9181
9182         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9183
9184         * mini-s390.h: Remove an unused define.
9185         
9186         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9187         the arch independent trampoline code in mini-trampolines.c.
9188
9189         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9190
9191 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9192
9193         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9194
9195         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9196
9197         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9198
9199         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9200
9201         * cpu-amd64.md: Use smaller sizes for int opcodes.
9202
9203         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9204
9205         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9206         objects.cs.
9207
9208         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
9209         debugging.
9210
9211         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
9212         instead of though a pointer to save an indirection when accessing elements of
9213         the array.
9214
9215         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
9216         some typos.
9217         (NOT_IMPLEMENTED): New helper macro.
9218         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
9219         of a bb.
9220
9221         * *.c: Use the new helper macro.
9222
9223 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
9226
9227 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9230         stack slots.
9231
9232 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9233
9234         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9235         profiling is enabled.
9236         
9237         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9238         the end.
9239         (mono_arch_emit_prolog): Add more first bblock optimizations.
9240
9241         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9242         in order if possible.
9243         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9244         bblock, since the arguments are still in their original registers.
9245
9246         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9247
9248 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9251         as well.
9252
9253         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9254         offset 0.
9255
9256         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9257
9258         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9259         process async exceptions received while in unmanaged code.
9260
9261         * mini.c (mini_init): Install a callback with the runtime which will be called
9262         when a thread receives an async exception while in unmanaged code.
9263
9264         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9265
9266         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9267
9268 2008-01-16  Wade Berrier  <wberrier@novell.com>
9269
9270         * cpu-g4.md:
9271         * cpu-arm.md:
9272         * cpu-s390x.md:
9273         fix build
9274
9275 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9276
9277         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9278         compilation with sun cc.
9279
9280         * cpu-*.md: Fix the build.
9281
9282         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9283
9284         * mini-amd64.h: Add some comments to the MonoLMF structure.
9285
9286         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9287         
9288         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9289         in the LMF structure if possible. This saves two instructions in the
9290         managed->native wrappers.
9291
9292         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9293
9294 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9295
9296         * generic-sharing.c: New type argument lookup code which uses the
9297         runtime generic context template.
9298
9299 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9300
9301         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9302
9303         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9304         (mono_arch_output_basic_block): Fix localloc implementation.
9305
9306         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9307
9308         * mini-ia64.c (peephole_pass): Fix ia64 build.
9309
9310         * mini-amd64.c (peephole_pass): Fix a warning.
9311         
9312         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9313         at a constant offset from sp/fp.
9314
9315         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9316         instead of obtaining it from *lmf in the managed method case.
9317
9318 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9319
9320         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9321
9322 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9323
9324         * mini.h (MonoInstList): New type.
9325         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9326         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9327         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9328         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9329         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9330         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9331         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9332         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9333         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9334         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9335         MONO_INST_LIST_FOR_EACH_ENTRY,
9336         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9337         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9338         mono_inst_list_first, mono_inst_list_last,
9339         mono_inst_list_next, mono_inst_list_prev): New instruction
9340         list handling interfaces.
9341         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9342         list head 'ins_list'.
9343         (MonoInst): Replace next pointer with list head 'node'.
9344         (MonoCallInst): Make 'out_args' a MonoInstList.
9345         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9346         (MonoCompile): Delete reverse_inst_list and
9347         reverse_inst_list_len.
9348         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9349         mono_arch_lowering_pass, mono_arch_local_regalloc,
9350         mono_arch_output_basic_block, mono_arch_emit_prolog):
9351         Convert to new instruction lists.
9352         (insert_after_ins): Delete.
9353         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9354         instruction lists.
9355         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9356         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9357         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9358         mono_emulate_opcode, mono_emit_load_got_addr,
9359         inline_method, mono_method_to_ir, mono_print_bb_code,
9360         print_dfn, decompose_pass, nullify_basic_block,
9361         replace_out_block_in_code, remove_block_if_useless,
9362         merge_basic_blocks, move_basic_block_to_end,
9363         try_unsigned_compare, optimize_branches, mono_print_code,
9364         mini_select_instructions, remove_critical_edges): Likewise.
9365         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9366         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9367         mono_arch_output_basic_block, mono_arch_emit_prolog):
9368         Likewise.
9369         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9370         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9371         mono_arch_output_basic_block): Likewise.
9372         (inst_list_prepend, insert_after_ins): Delete.
9373         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9374         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9375         instruction lists.
9376         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9377         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9378         mono_arch_emit_prolog): Likewise.
9379         * cfold.c (mono_constant_fold): Likewise.
9380         * liveness.c (visit_bb, mono_analyze_liveness,
9381         optimize_initlocals): Likewise.
9382         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9383         * graph.c (mono_draw_code_cfg): Likewise.
9384         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9385         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9386         mono_ssa_cprop): Likewise.
9387         * abcremoval (get_relations_from_previous_bb, process_block):
9388         Likewise.
9389         * local-propagation (mono_cprop_invalidate_values,
9390         mono_local_cprop_bb): Likewise.
9391         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9392         peephole_pass, mono_arch_output_basic_block,
9393         mono_arch_emit_prolog): Likewise.
9394         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9395         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9396         mono_arch_emit_prolog): Likewise.
9397         (insert_after_ins): Delete.
9398         * aliasing.c (print_code_with_aliasing_information,
9399         mono_build_aliasing_information, mono_aliasing_deadce):
9400         Convert to new instruction lists.
9401         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9402         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9403         mono_arch_local_regalloc, mono_arch_output_basic_block):
9404         Likewise.
9405         (insert_after_ins): Delete.
9406         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9407         peephole_pass, mono_arch_output_basic_block): Convert to
9408         new instruction lists.
9409         * mini-codegen (InstList, inst_list_prepend,
9410         insert_after_ins): Delete.
9411         (insert_before_ins, get_register_force_spilling,
9412         get_register_spilling, free_up_ireg, free_up_reg,
9413         create_copy_ins, create_spilled_store, alloc_int_reg,
9414         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9415         to new instruction lists.
9416         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9417         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9418         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9419         (insert_after_ins): Delete.
9420         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9421         mono_arch_local_regalloc, mono_arch_output_basic_block,
9422         mono_arch_call_opcode): Convert to new instruction lists.
9423         (insert_after_ins): Delete.
9424         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9425         peephole_pass, mono_arch_output_basic_block,
9426         mono_arch_emit_prolog): Convert to new instruction lists.
9427
9428 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9429
9430         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9431
9432         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9433         Fixes #353182.
9434
9435         * Makefile.am (version.h): Make this work with non-bash shells.
9436
9437 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9438
9439         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9440
9441 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9444         the InitializeArray optimization.
9445
9446 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9447
9448         * mini.c driver.c: Don't include os/gc_wrapper.h.
9449
9450 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * mini.c (print_jit_stats): Print GC statistics if available.
9453
9454 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9457
9458 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9461
9462 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9463
9464         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9465         
9466         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9467
9468         * driver.c (mono_main): Ditto.
9469
9470 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9471
9472         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9473
9474         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9475         in the vtable can't be encoded.
9476         (compile_method): Ditto.
9477
9478 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9479
9480         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9481         defined.
9482
9483         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9484         lmf->rbp.
9485
9486         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9487         the top LMF entry belongs to the current method.
9488
9489         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9490
9491 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9492
9493         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9494         
9495         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9496
9497         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9498
9499         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9500
9501         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9502
9503         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9504         implementation.
9505
9506         * basic-float.cs: Add an ulong->double cast test.
9507
9508 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * mini.c (mono_method_to_ir): Fix a warning.
9511
9512 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * mini-ops.h: Add OP_SWITCH.
9515
9516         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9517         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9518
9519 2007-12-11  Geoff Norton  <gnorton@novell.com>
9520
9521         * mini-s390x.c: Minor change to the MAX() define to allow
9522         it to compile with other gcc versions.
9523
9524 2007-12-11  Geoff Norton  <gnorton@novell.com>
9525
9526         * cpu-s390x.md:
9527         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9528
9529 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9530
9531         exceptions-arm.c (mono_arch_get_restore_context): Restore
9532         the frame pointer.
9533
9534         exceptions-arm.c (throw_exception): Save the frame pointer.
9535         This is a partial fix for #323747. Only the client side is
9536         fixed.
9537
9538 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9539
9540         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9541         was using an unrelated variable to log the class which
9542         needed the cctor to be called. This was crashing on arm.
9543
9544 2007-12-09  Robert Jordan  <robertj@gmx.net>
9545
9546         * mini-x86.c (mono_arch_emit_epilog):
9547         Consider all kinds of 64-bit types. Fixes #323114.
9548
9549 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9552
9553 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9556
9557 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9558
9559         * mini.c: run type ctor before allocating an object, not only
9560         when running it's constructor method (fixes at least part of bug #342507).
9561
9562 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9563         
9564         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9565         
9566         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9567         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9568         function.
9569
9570         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9571         mono_generic_class_init_trampoline () the same as it is done with the other
9572         trampolines.
9573
9574         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9575         aot-runtime.c aot-compiler.c: Implement AOT support.    
9576
9577 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9578
9579         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9580         build for archs which don't have the vtable trampoline defined
9581         yet.
9582
9583 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9584
9585         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9586
9587         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9588
9589         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9590
9591         * tramp-<ARCH>.c: Use the new helper function.
9592
9593 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9594
9595         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9596         trampoline call, which takes a vtable argument.
9597
9598         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9599         OP_TRAMPCALL_VTABLEs like other calls.
9600
9601         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9602         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9603         call.  Implemented a support function which fetches the vtable
9604         from a register set.
9605
9606         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9607         Implemented a generic class init trampoline, using the
9608         OP_TRAMPCALL_VTABLE opcode.
9609
9610         * mini.c: Implemented static field access when sharing generic
9611         code.  This implies initing the class using the new
9612         OP_TRAMPCALL_VTABLE call.
9613
9614 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9615
9616         * mini.c: Don't compile methods with sharing enabled if their
9617         classes are disabled for sharing.
9618
9619 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9620
9621         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9622         opcodes. Fixes #346563.
9623
9624         * objects.cs: Add a new test.
9625
9626         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9627
9628         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9629         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9630
9631 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9632
9633         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9634
9635 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9638         code stream.
9639
9640 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9641
9642         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9643
9644         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9645         optimization in the AOT case.
9646         
9647 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9648
9649         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9650         
9651         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9652
9653         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9654
9655         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9656
9657         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9658         is created by the inlined delegate ctor.
9659
9660         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9661
9662         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9663
9664 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9665
9666         * cpu-x86.md: Fix the length of ckfinite.
9667
9668 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
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-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9673         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9674
9675         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9676
9677         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9678         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9679
9680 2007-11-28  Martin Baulig  <martin@ximian.com>
9681
9682         * mini-x86.c
9683         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9684         after creating the trampoline.
9685
9686 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9689
9690         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9691         the same version.
9692
9693         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9694         instead of the calling method to help AOT.
9695
9696         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9697
9698 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9701         is defined.
9702
9703 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9706         
9707         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9708         (encode_method_ref): No need to handle generic method definitions specially.
9709
9710         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9711
9712         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9713         decode_klass_info.
9714
9715         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9716         encode_klass_info.
9717         (compile_method): Enable generic sharing.
9718
9719 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9720
9721         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9722         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9723
9724         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9725         generic code.
9726
9727         * mini-trampolines.c: Fix a warning.
9728
9729         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9730         NEW_PCONST.
9731         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9732         (generic_class_is_reference_type): Remove unused function.
9733
9734         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9735         in the generic vtable trampoline case.
9736
9737         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9738         
9739         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9740         return an AOT method based on a vtable slot.
9741
9742         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9743
9744         * mini.c (mini_get_vtable_trampoline): Export this.
9745
9746 2007-11-22  Martin Baulig  <martin@ximian.com>
9747
9748         * debug-debugger.h
9749         (MonoDebuggerInfo): Move `debugger_version' up.
9750
9751 2007-11-22  Martin Baulig  <martin@ximian.com>
9752
9753         * mini-amd64.c
9754         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9755
9756         * mini-trampolines.c
9757         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9758         after compiling the method.
9759
9760 2007-11-20  Martin Baulig  <martin@ximian.com>
9761
9762         * debug-mini.c
9763         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9764         (mono_debugger_remove_breakpoint): Likewise.
9765         (mono_debugger_check_breakpoints): Likewise.
9766
9767         * debug-debugger.c: Implement the new breakpoint interface here.
9768
9769 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9772         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9773
9774         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9775
9776 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9777
9778         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9779
9780         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9781         mini.c.
9782
9783         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9784         mini.c.
9785
9786         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9787         returning a vtype in a register.
9788
9789         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9790         here from the arch specific code.
9791
9792         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9793         mini.c.
9794
9795         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9796         (mono_arch_emit_prolog): Increment maximum prolog size.
9797
9798         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9799         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9800
9801         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9802         MonoGenericSharingContext.
9803
9804         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9805         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9806
9807 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9808
9809         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9810         which extract fields out of the runtime generic context.  Full
9811         sharing of the NEWARR opcode.
9812
9813 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9814
9815         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9816         --enable-minimal=ssa.
9817
9818 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9819
9820         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9821         mono_marshal_get_delegate_invoke () signature change.
9822
9823 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9824
9825         * mini.c: Removed the shared context in favor of the generic
9826         sharing context.  Allocate the MonoJitInfo structure with room for
9827         the generic sharing context if it's needed.
9828
9829         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9830         domain-internals.h now.
9831
9832         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9833
9834         * generic-sharing.c: Several changes for working without a shared
9835         context and instead operating on open types instead.
9836
9837 2007-11-12  David S. Miller  <davem@davemloft.net>
9838
9839        * inssel-sparc.brg: Fix double instruction emit.
9840
9841 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9842
9843         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9844         Get/Set/Address methods.
9845         
9846         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9847         mono_marshal_get_delegate_invoke signature change.
9848
9849 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9850
9851         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9852         This can happens with dynamic methods. Fixes the other bug in #322722.
9853
9854 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9855
9856         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9857         BX call sequence.
9858
9859         * mini-arm.c (arm_patch): Implement patching of BX call
9860         sequence. Fixes one of the bugs in #322722.
9861
9862 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9863
9864        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9865        under Linux.  We only need to flush every 32-byte cache line.    
9866
9867 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9868
9869         * mini.c:
9870         move_basic_block_to_end: Add branches when needed, eventually creating
9871         a new BB.
9872         optimize_branches: added a parameter that tells if it's ok to create
9873         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9874         and avoid calling move_basic_block_to_end when it's not ok.
9875         Fixes bug 318677.
9876
9877 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9878
9879         * mini.c: Abort inlining call to InitializeArray if something
9880         looks wrong.  Let the icall handle it, which now has proper safety
9881         checks.
9882
9883 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9884
9885         * mini.c (mono_spill_call): add support for soft-float.
9886
9887         * mini.c (mono_method_to_ir): add support for soft-float
9888         to inlined functions that return float.
9889
9890         * mini.c (mono_method_to_ir): add support for soft-float
9891         to cee_stsfld opcode on float fields.
9892
9893 2007-11-05  Geoff Norton  <gnorton@novell.com>
9894
9895         * mini-x86.h: Fix the structure access for X86 Leopard.
9896
9897
9898 2007-11-05  Martin Baulig  <martin@ximian.com>
9899
9900         * mini-trampolines.c
9901         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9902         after compiling the method to notify the debugger.
9903
9904 2007-11-05  Martin Baulig  <martin@ximian.com>
9905
9906         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9907
9908 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9909
9910         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9911         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9912
9913 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9914
9915         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9916         native-to-managed wrappers.
9917         
9918 2007-11-01  Geoff Norton  <gnorton@novell.com>
9919
9920         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9921         members.
9922
9923 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9924
9925         * mini.c, mini-x86.c: when getting back from unmanaged code
9926         to managed via a marshaled delegate we also need to set the
9927         right domain.
9928
9929 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9930
9931         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9932         for amd64.
9933
9934 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9935
9936         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9937         let the debugger or other external agents to tell the JIT when
9938         a sw breakpoint has been inserted in the code that the JIT needs
9939         to be able to inspect.
9940
9941 2007-10-31  Martin Baulig  <martin@ximian.com>
9942
9943         * debug-debugger.h
9944         (MonoDebuggerInfo): Remove `runtime_class_init'.
9945
9946 2007-10-30  Martin Baulig  <martin@ximian.com>
9947
9948         * debug-mini.h
9949         (mono_debugger_thread_created): Added `MonoThread *' argument.
9950         (mono_debugger_extended_notification): New public method.
9951         (mono_debugger_trampoline_compiled): New public method.
9952
9953         * debug-mini.c
9954         (MonoDebuggerThreadInfo): Added `thread' and
9955         `extended_notifications' fields.
9956
9957         * debug-debugger.c
9958         (debugger_executable_code_buffer): New static variable.
9959
9960         * debug-debugger.h
9961         (MonoDebuggerInfo): Added `executable_code_buffer',
9962         `executable_code_buffer_size', `breakpoint_info_area',
9963         `breakpoint_table' and `breakpoint_table_size'.
9964
9965 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9966
9967         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9968         that IP  either is an unused value or the vtable pointer. IMT 
9969         calls use vtable + offset now. Reduced by almost half the size
9970         of IMT entries.
9971
9972 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9973
9974         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9975         defines to access param registers. Replace long usage with
9976         gsize as sizeof(long) != sizeof(void*) on Win64.
9977
9978         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9979         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9980         instead of non-existant _GetAddressOfReturnAddress.
9981
9982         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9983         param registers. Save/restore %rdi and %rsi in MonoLMF.
9984
9985         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9986         param registers. Modify (throw_exception) signature to take 
9987         %rdi and %rsi on Win64. 
9988
9989         Code is contributed under MIT/X11 license.
9990
9991 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9992
9993         * helpers.c: unlink debugging output files.
9994
9995 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * mini.c: Move mono_create_ftnptr () to object.c.
9998
9999 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10000
10001         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10002         optional. This function can now be used to disassemble code generated
10003         outside the JIT such as trampolines and IMT thunks.
10004
10005         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10006
10007         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10008         vtable pointer from a ldr instruction.
10009
10010         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10011         new IMT call sequence.
10012
10013         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10014         call sequence for interface invocations.
10015
10016         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10017         for imt support. This function is empty since IMT on ARM requires no
10018         special handling on the IR side.
10019
10020         * mini-arm.c (mono_arch_find_imt_method): added, required for
10021         imt support.
10022
10023         * mini-arm.c (mono_arch_find_this_argument): added, required
10024         for imt support.
10025
10026         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10027         a ldr instruction to load a value stored in the code stream.
10028
10029         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10030         for imt support.
10031
10032
10033 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10034
10035         * mini.c (mini_init): Install the jump trampoline callback.
10036
10037 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10038
10039         * mini-trampolines.c: handle synchronized methods with the common
10040         vtable trampoline (bug #335601).
10041
10042 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10045
10046         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10047         64 bit platforms.
10048
10049         * mini-ia64.h mini-ia64.c: Add support for IMT.
10050
10051         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10052         prolog. Fixes #331958.
10053
10054 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10057
10058 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10059
10060         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10061         trampoline.
10062
10063 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10064
10065         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10066         trampoline.
10067
10068 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10069
10070         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10071         trampoline.
10072
10073 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10074
10075         * mini-trampolines.c: changed the magic rampoline to understand
10076         the common vtable trampoline method: the method to invoke is
10077         determined by the vtable displacement of the call.
10078
10079 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10080
10081         * mini.c, mini.h: register the common vtable trampoline if the
10082         architecture supports it.
10083
10084 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10085
10086         * cpu-amd64.md: use the correct max length for tls_get.
10087
10088 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10091         CEE_STELEM_ANY. Fixes #333696.
10092
10093 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10094
10095         * exceptions-x86.c: provide more graceful handling of the case where
10096         we followed a bogus function pointer from managed code (bug #332866).
10097
10098 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10099
10100         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10101         replaces the generic_shared flag and will carry more information
10102         in the future.
10103
10104         * generic-sharing.c: Added mini_type_stack_size() which allows
10105         allows open types if given a generic sharing context.
10106         mini_get_basic_type_from_generic() takes a
10107         MonoGenericSharingContext* instead of a MonoCompile* now.
10108
10109         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10110         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10111         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10112         changes above.  Just passing arguments through to the right
10113         places.
10114
10115 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10116
10117         * mini-arm.c: unify the call emission to emit_code_seq().
10118
10119 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10120
10121         * tramp-arm.c: reduced the trampoline size.
10122
10123 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10124
10125         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10126         variable handling out of arch-specific code.
10127
10128 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10129
10130         * mini-arm.c: implemented fast delegate dispatch.
10131
10132 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10135         that fp elimination is turned off if the space required by locals is too
10136         big. Fixes #331958.
10137
10138 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10139
10140         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10141         ARM to the new style trampoline.
10142
10143 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10146
10147         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10148
10149 2007-10-09  Martin Baulig  <martin@ximian.com>
10150
10151         * debug-debugger.h
10152         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10153         `field_info_offset_offset'.     
10154
10155 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10156
10157         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10158         removed more internal usage of the r11 register and made it available
10159         to the register allocator.
10160
10161 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10162
10163         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10164         when sharing generics and treat type variables as references.
10165
10166 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10167
10168         * mini-ppc.c: started removing the internal uses of register r11
10169         to eventually allow the register allocator to manage it as an
10170         additional available register.
10171
10172 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10173
10174         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10175
10176 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10177
10178         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10179         specific trampolines as they are not performance critical as a jump
10180         target (maybe align as before only for AOT code?). This saves about
10181         200 KB of native code on x86 for monodevelop startup.
10182
10183 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10184
10185         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10186         monodevelop startup.
10187
10188 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10189
10190         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10191
10192         * mini-sparc.h mini-sparc.c: Implement IMT support.
10193
10194         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10195         its smaller and doesn't clobber sparc_g1.
10196
10197         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10198
10199 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10200
10201         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10202
10203 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10204
10205         * mini-ppc.c: implemented fast delegate invocation.
10206
10207 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10208
10209         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
10210
10211 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10212
10213         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
10214         code to the new style trampoline in preparation for IMT support.
10215
10216 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10217
10218         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
10219         systems already. This also reduces the specific trampiline sizes and
10220         prepares for the use of r12 as the IMT identifier register.
10221
10222 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10223
10224         * mini-mips.h: endianess fix (simplified from a patch by
10225         Thomas Kunze <thommy@tabao.de>, bug #323737).
10226
10227 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10228
10229         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10230         to access ucontext fields and enable netbsd support
10231         (partially from Magnus Henoch <mange@freemail.hu>).
10232
10233 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10234
10235         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10236         use the preprocessor from the CPP env var if it is set.
10237
10238 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10239
10240         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10241         code, before interface_offset gets used.
10242
10243 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10244
10245         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10246         mono_class_setup_vtable () before accessing klass->vtable.
10247
10248 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10249
10250         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10251         hackish.
10252
10253 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10254
10255         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10256         IMT slots (this saves hundreds of KB of memory in programs like
10257         IronPython and Monodevelop).
10258
10259 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10260
10261         * mini.c: print the delegate counter.
10262
10263 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10264
10265         * mini-x86.c: make it easier to enable the debugging code for IMT
10266         slots.
10267
10268 2007-09-28  Martin Baulig  <martin@ximian.com>
10269
10270         * debug-debugger.h
10271         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10272         `mono_method_klass_offset' and `mono_method_token_offset'.
10273
10274 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10275
10276         * mini.c: First generics sharing implementation.  Can only share
10277         in very simple cases.  If sharing doesn't work it falls back to
10278         dedicated compilation.
10279
10280         * mini.h: Flag in MonoCompile to specify whether generic
10281         compilation is shared.  Flags enum for marking which generic inst
10282         of a context is used.  Prototypes for helper functions.
10283
10284         * generic-sharing.c: Helper functions for generic method sharing.
10285
10286         * optflags-def.h: Optimization flag (gshared) for enabling generic
10287         method sharing added.
10288
10289         * Makefile.am: generic-sharing.c added.
10290
10291 2007-09-19 Daniel Nauck <dna@mono-project.de>
10292
10293         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10294
10295 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10296         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10297         fixes bug 325507.
10298
10299 2007-09-19  Martin Baulig  <martin@ximian.com>
10300
10301         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10302         mono_debug_cleanup() is now part of mono_cleanup().
10303
10304 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10305
10306         * driver.c (mono_main): Fix a warning.
10307
10308 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10309
10310         * aot-compiler.c: Optimize various parts when processing large assemblies.
10311         Fixes ##325568.
10312
10313         * mini.c (mono_patch_info_hash): Improve hash function.
10314
10315 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10316
10317         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10318         
10319         Code is contributed under MIT/X11 license.
10320
10321 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini.c (mini_init): Fix a leak.
10324
10325         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10326
10327 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10328
10329         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10330
10331 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10334
10335 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10338         variance tests.
10339
10340         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10341
10342         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10343
10344         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10345
10346         * aot-runtime.c (decode_patch_info): Ditto.
10347
10348 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10349
10350         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10351         static case. Cache delegates in architecture specific code, 
10352         based on number of parameters.
10353         
10354         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10355         in architecture specific code, based on number of parameters.
10356         
10357         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10358         caching happen in architecture specific code now.
10359         
10360         Code is contributed under MIT/X11 license.
10361
10362 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10363
10364         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10365         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10366         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10367
10368         Code is contributed under MIT/X11 license.
10369
10370 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10371         * mini.c: (mono_thread_abort) Fixed bug #82416.
10372
10373 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10374
10375         * mini.: hook the new managed GC allocation feature into the JIT.
10376
10377 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10378
10379         * mini.c: implementation for the new runtime tls opcode.
10380
10381 2007-09-11  Martin Baulig  <martin@ximian.com>
10382
10383         * debug-debugger.h
10384         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10385         `mono_method_inflated_offset'.
10386
10387 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10388
10389         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10390         async exceptions into a method.
10391
10392         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10393         purpose of testing whenever the unwinder works at every instruction.
10394
10395 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10396
10397         * mini.c: check accessibility of method used in ldftn (fixes
10398         bug #82635).
10399
10400 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10401
10402         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10403
10404         * inssel.brg: Fix a warning.
10405
10406 2007-09-03  Martin Baulig  <martin@ximian.com>
10407
10408         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10409         now takes the `main_method' as argument.
10410
10411 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10414
10415 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10416
10417         * driver.c: include the cil-coff.h header on Windows.
10418         
10419         Code is contributed under MIT/X11 license.
10420
10421 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10422
10423         * mini.c, driver.c: don't include the cil-coff.h header.
10424
10425 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10426
10427         * mini.c: flag places that needs fixes fo soft-float support.
10428
10429 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10430
10431         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10432         endian systems (partially from Dean Jenkins, bug #81924).
10433
10434 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10435
10436         * mini.c (check_linkdemand): Remove embedded reference object in
10437         call to LinkDemandSecurityException.
10438         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10439         with an IntPtr instead of a reference object.
10440
10441 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * mini.c (handle_initobj): Handle alignment properly.
10444
10445         * inssel.brg (mini_emit_memset): Ditto. 
10446
10447         * inssel.brg (mini_emit_memcpy): Ditto. 
10448
10449         * inssel-sparc.brg: Ditto.              
10450
10451         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10452
10453 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10456         exceptions raised in unmanaged code. Fixes part of #82594.
10457
10458 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10459
10460         * mini.c (mono_method_to_ir), declsec.c
10461         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10462
10463 2007-08-22  Martin Baulig  <martin@ximian.com>
10464
10465         * debug-mini.h
10466         (MonoDebuggerThreadInfo): New typedef.
10467         (mono_debugger_thread_table): New global variable.
10468         (mono_debugger_thread_created): New public function.
10469         (mono_debugger_thread_cleanup): New public function.
10470
10471         * debug-debugger.h
10472         (MonoDebuggerInfo):
10473         - removed `get_current_thread' and `lookup_assembly'.
10474         - removed `data_table'.
10475         - added `thread_table'.
10476
10477         * mini.c
10478         (mono_thread_start_cb): Call mono_debugger_thread_created().
10479         (mono_thread_attach_cb): Likewise.
10480         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10481         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10482         initial domain.
10483
10484         * driver.c (mono_main): Move mono_debug_init() up, before calling
10485         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10486
10487 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10488
10489         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10490         together when passing several arguments of type double (gives a small
10491         speedup and saves a few bytes of generated code).
10492
10493 2007-08-20  Jb Evain  <jbevain@novell.com>
10494
10495         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10496
10497 2007-08-20  Jb Evain  <jbevain@novell.com>
10498
10499         * mini.c (mono_method_to_ir): throw MethodAccessException
10500         and FieldAccessException instead of InvalidProgramException.
10501
10502 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10503
10504         * mini.c: CoreCLR security checks.
10505
10506         * mini.h: Removed MonoSecurityMode (moved to
10507         metadata/security-manager.h) and mono_security_mode global var
10508         (replaced by set/get functions in security-manager.h).
10509
10510         * driver.c: Added "core-clr-test" security mode for testing.  Used
10511         set-function for setting security mode.
10512
10513 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10514
10515         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10516         the new jit_info_table.
10517
10518         * driver.c: Test code for the new jit_info_table (enabled by the
10519         define MONO_JIT_INFO_TABLE_TEST).
10520
10521 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10524         detection of call <REG> instruction sequence. Fixes build on freebsd.
10525
10526 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10527
10528         * mini-exceptions.c: Fix a warning.
10529
10530 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10531
10532         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10533         stack overflow handling code on amd64 too.
10534
10535         * mini-exceptions.c (mono_setup_altstack): Make this use 
10536         mono_thread_get_stack_bounds ().
10537
10538         * mini-x86.h: Disable sigaltstack on solaris x86.
10539
10540 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10543
10544 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10545
10546         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10547
10548 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10551
10552         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10553
10554 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10555
10556         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10557         due to alignment.
10558
10559 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10560
10561         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10562         to be emitted (bug #82281).
10563
10564 2007-08-01  Martin Baulig  <martin@ximian.com>
10565
10566         Merged the `debugger-dublin' branch.
10567
10568         * debug-debugger.h (MonoDebuggerInfo):
10569         Removed the `old_*' compatibility entries.
10570         Added `debugger_version' and `data_table'.
10571         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10572         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10573
10574         * debug-mini.c
10575         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10576         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10577         instead of a `gconstpointer'.
10578         (mono_debugger_insert_method_breakpoint): Return a
10579         `MonoDebugMethodAddressList *'.
10580
10581 2007-06-28  Martin Baulig  <martin@ximian.com>
10582
10583         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10584
10585 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10588         __builtin_frame_address () since it is broken on older gcc versions.
10589
10590 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10591
10592         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10593         on the stack overflow handling and made the managed stack overflows
10594         catchable in most cases using soft guard pages.
10595         * exceptions-x86.c: added code to restore the protection in the soft
10596         guard pages at the end of exception handling.
10597
10598 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10599
10600         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10601
10602 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10603
10604         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10605         exception handling.
10606
10607 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10608
10609         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10610         signal handling support until it has been ported to the new mechanism.
10611         * mini.c: fixed stack overflow detection and use the new
10612         architecture code  to handle signals on the altstack.
10613
10614 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10615
10616         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10617         stack overflows on the alt stack.
10618
10619 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10620
10621         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10622         stack overflows on the alt stack.
10623
10624 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10625
10626         * exceptions-ppc.c: cleanup preparing for altstack support.
10627
10628 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10629
10630         * exceptions-arm.c: cleanup preparing for altstack support.
10631
10632 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10633
10634         * mini.c (print_jit_stats): Output hazard pointer stats.
10635
10636 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10637
10638         * driver.c, mini.c: Replaced security mode flags with a single
10639         enum variable.
10640
10641 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10642
10643         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10644
10645 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10646
10647         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10648         (which doesn't do anything yet) for activating Core CLR
10649         (Silverlight) security.
10650
10651 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10652
10653         * mini-codegen.c: work around a possible gcc bug on arm.
10654
10655 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10656
10657         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10658         message for platforms that don't support AOT compilation.
10659
10660 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10661
10662         * mini.h, mini.c, driver.c: temporary smcs hack.
10663
10664 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10665
10666         * mini-arm.h, mini-arm.c: arm EABI fixes.
10667
10668 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10669
10670         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10671         case.
10672
10673         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10674         trampolines taking a method argument.
10675
10676         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10677
10678         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10679         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10680
10681         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10682         JIT compilation throws an exception. Fixes #82050.
10683
10684 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10685
10686         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10687         with the MONO_EXCEPTION_ defines.
10688
10689 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10690
10691         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10692         #82117.
10693         
10694         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10695         the cause of an assertion.
10696
10697 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10698
10699         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10700         removed.
10701
10702 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10703
10704         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10705         assert. Should fix #82103.
10706
10707 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10710         here too. Fixes #82095.
10711
10712         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10713         addresses.
10714
10715         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10716
10717         * mini-amd64.h: Enable IMT for amd64.
10718         
10719         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10720
10721 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10724
10725 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10726
10727         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10728         as soon as check_linkdemand sets an exception_type.
10729
10730 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10731
10732         * mini-x86.c: fixed offsets for IMT call sequence.
10733         * mini-x86.h: enable IMT again.
10734
10735 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * trace.c (mono_trace_enter_method): Decode MonoType too.
10738
10739         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10740
10741         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10742
10743         * mini-amd64.c: Add preliminary IMT implementation.
10744         
10745 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10746
10747         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10748         understand the new IMT-base interface invocation (thanks to
10749         Daniel Nauck for the report and the remote debugging session).
10750
10751 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10752
10753         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10754
10755 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10758
10759 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10760
10761         * mini-trampolines.c: implement AOT IMT support.
10762         * mini-x86.h: enable IMT support for wider testing.
10763
10764 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * inssel.brg (emit_imt_argument): Add aot support here.
10767
10768         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10769
10770 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10771
10772         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10773         of the IMT implementation, partially from massi, with my
10774         implementation of the bsearch sequence. Disabled by default until
10775         the AOT code is implemented.
10776
10777 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10780
10781         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10782
10783 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10784
10785         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10786         arch-independent IMT JIT code from Massimiliano
10787         Mantione (massi@ximian.com) with small cleanups from me.
10788
10789 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10790
10791         * Makefile.am: fix svn invocation to get the svn revision to be
10792         independent of the local language (build fix).
10793
10794 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10795
10796         * mini.c (inline_method): Reset cfg->exception_type if the
10797         inlining is aborted.  Fixes: 82049.
10798
10799 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10800
10801         * mini.c: remove assert from exception handling code when exception_ptr
10802         is not set.
10803
10804 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * mini.c (mono_codegen): Add an assert.
10807
10808         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10809         enter and leave code.
10810         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10811
10812 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10813
10814         * mini-ppc.c: fixed memory corruption for localloc(0)
10815         (bug #81852).
10816
10817 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10818         
10819         * mini.c: Fix warnings.
10820
10821 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10822
10823         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10824         to emit better double->int conversions.
10825
10826 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10827
10828         * mini.c: the provided Min/Max optimizations are valid for unisgned
10829         ints.
10830
10831 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10832
10833         * 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
10834
10835 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10836
10837         * mini.c (mono_running_on_valgrind): Add support for reporting the
10838         method and  its boundaries to valgrind.
10839
10840 2007-06-28  Martin Baulig  <martin@ximian.com>
10841
10842         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10843
10844 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10847
10848         * generic.2.cs: Add new test case.
10849
10850 2007-06-25  Martin Baulig  <martin@ximian.com>
10851
10852         Merged the `debugger-dublin' branch.
10853
10854         * debug-mini.c
10855         (mono_debugger_insert_method_breakpoint): New public method.
10856         (mono_debugger_remove_method_breakpoint): Likewise.
10857         (mono_debugger_check_breakpoints): New static method.
10858         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10859
10860         * debug-debugger.h (MonoDebuggerInfo):
10861         Renamed (to keep backward compatibility in the vtable):
10862         `insert_breakpoint' -> `old_insert_breakpoint'.
10863         `remove_breakpoint' -> `old_remove_breakpoint'.
10864         `create_string' -> `old_create_string'.
10865         `lookup_class' -> `old_lookup_class'.
10866         `lookup_type' -> removed; changed into a dummy field.
10867         `lookup_assembly' -> `old_lookup_assembly'.
10868         Added (same functionality, but different signature):
10869         `create_string', `lookup_class', `lookup_assembly'
10870         Added new:
10871         `get_method_addr_or_bpt', `remove_method_breakpoint',
10872         `runtime_class_init'.
10873
10874         * debug-debugger.c: Merged the `debugger-dublin' branch.
10875
10876 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10879         well.
10880         (peephole_pass): Likewise.
10881
10882 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10883
10884         * driver.c: hopefully make setaffinity work also for ancient
10885         versions of linux.
10886
10887 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10888
10889         * driver.c : win32 build fix.
10890
10891 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10892
10893         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10894         processor if it is set.
10895
10896 2007-06-21  Martin Baulig  <martin@ximian.com>
10897
10898         * debug-mini.h: New file.
10899
10900         * debug-mini.c
10901         (mono_debugger_insert_breakpoint_full): Moved here from
10902         ../metadata/mono-debug-debugger.c.
10903         (mono_debugger_remove_breakpoint): Likewise.
10904         (mono_debugger_breakpoint_callback): Likewise.
10905
10906 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10907
10908         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10909         changes in MonoGenericClass.
10910
10911 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10912
10913         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10914
10915 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10916
10917         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10918         removal of MonoGenericMethod.
10919
10920 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10921
10922         * mini-exceptions.c: hooks for the exception events profiling API.
10923
10924 2007-06-14  Randolph Chung  <tausq@debian.org>
10925
10926         * Makefile.ma: Add hppa target.
10927         * mini-arch.h: Include mini-hppa.h
10928         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10929         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10930         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10931
10932 2007-06-14  Randolph Chung  <tausq@debian.org>
10933
10934         * inssel.brg: Add rules for "chained" compare-branch operations so that
10935         a single compare op can affect multiple branches.  Adjust cost for
10936         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10937         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10938         cost for some rules so that they can more easily be overridden by
10939         per-arch rules (with fixes from lupus).
10940         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10941
10942 2007-06-13  Randolph Chung  <tausq@debian.org>
10943
10944         * mini-ops.h: Reorder branch ops so that they match the order of the
10945         corresponding CEE_* ops.  The code expects them this way.
10946         Add new ops for HPPA target.
10947         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10948
10949 2007-06-13  Randolph Chung  <tausq@debian.org>
10950
10951         * mini-exceptions.c: Handle cases where the stack grows towards
10952         larger addresses.
10953         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10954
10955 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10956
10957         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10958         counter.
10959         * driver.c: explain where a non-matching corlib is found.
10960
10961 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10962
10963         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10964
10965 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10966
10967         * mini-exceptions.c: Generate a method profile leave event during
10968         an exception to ensure that the profiler gets notified.
10969
10970 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10971
10972         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10973         branch.
10974
10975         * cpu-amd64.md: Add long_and/or/xor opcodes.
10976
10977 2007-06-06  Wade Berrier  <wberrier@novell.com>
10978
10979         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10980         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10981         length of instruction shr_imm (expected 8, got 10)
10982
10983 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10986
10987 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10988
10989         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10990         MonoInternalHashTable again (fixed bug in the internal hash table
10991         code).
10992
10993 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10994
10995         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10996         Have to figure out what makes it crash the SWF regression.
10997
10998 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11001
11002 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11003
11004         * mini.c: optimize out the type check when storing null in a
11005         reference array.
11006
11007 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11008
11009         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11010         MonoInternalHashTable.
11011
11012 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11013
11014         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11015         signed integer methods.
11016
11017 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11018
11019         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11020         permanently since the current approach doesn't work.
11021
11022 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11025         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11026
11027 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11030         the sreg2==rdx case.
11031         
11032         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11033         account if it contains a rex prefix.
11034         (peephole_pass): Handle OP_FMOVE as well.
11035
11036 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11037
11038         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11039         as it causes regressions.
11040
11041 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11044         static case as well.
11045
11046         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11047
11048         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11049         (mono_arch_get_this_arg_from_call): Ditto.
11050
11051         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11052
11053         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11054         invoke_impl field.
11055
11056         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11057         (mono_arch_get_this_arg_from_call): Ditto.
11058
11059         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11060         
11061         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11062         try to create optimized invoke code and use that for further invocations. 
11063         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11064
11065         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11066
11067 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11068
11069         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11070         sealed classes or methods.
11071         *devirtualization.cs: tests for the new optimization
11072
11073 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11076         by the update_volatile () function.
11077
11078 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11081         require it.
11082
11083         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11084
11085 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11086
11087         * mini.c: Add configure checks for header files.
11088         * mini-x86.c: Add configure checks for header files.
11089         * trace.c: Add configure checks for header files.
11090         * aot-runtime.c: Add configure checks for header files.
11091         * aot-compiler.c: Add configure checks for header files.
11092         * driver.c: Add configure checks for header files.
11093         * mini-codegen.c: Add configure checks for header files.
11094         
11095         Code is contributed under MIT/X11 license.
11096
11097 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11100         icompare_imm -128 + op_iclt. Fixes #81703.
11101
11102 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11103
11104         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11105
11106 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11107
11108         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11109         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11110         so that all isinst checks now use "interface_bitmap".
11111
11112 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * cpu-amd64.md (jmp): Fix a warning.
11115
11116         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11117
11118         * basic.cs: Add new regression test.
11119
11120         * basic.cs: Remove test which is now in basic-long.cs.
11121
11122         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11123
11124         * basic-long.cs: Add new test.
11125         
11126 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11127
11128         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11129
11130 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11131
11132         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11133
11134         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11135         places.
11136         
11137         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11138         throwing code a bit.
11139
11140         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11141         the exception throwing code a bit.
11142
11143         * mini-x86.c (get_call_info): Allocate result from a mempool.
11144
11145 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11148
11149         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11150
11151         * mini.h (MonoCompile): Add 'token_info_hash' field.
11152
11153         * mini.c: Save token->method associations during compilation so the AOT 
11154         compiler can use it.
11155         
11156         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11157         which reference generic classes and methods.
11158
11159 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11162
11163         * aot-compiler.c (compile_method): Fix a typo in a comment.
11164
11165         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11166
11167         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11168         everything generic.
11169
11170         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11171
11172 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * mini.h (MonoCompile): Add 'args' field.
11175
11176         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11177         into cfg->args.
11178
11179         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11180
11181 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11182
11183         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11184
11185         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11186
11187         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11188         opcodes for some opcodes.
11189
11190         * mini.h *.brg *.c: Use the new opcodes.
11191
11192 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11193
11194         * mini.h: Bumped aot revision.
11195
11196         * inssel.brg: modified code generation of type checks for interfaces
11197         to use the new "MonoClass.interface_bitmap" instead of the old
11198         "MonoClass.interface_offsets".
11199
11200 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11201
11202         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11203
11204 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
11207         64 bit platforms.
11208
11209 2007-04-27  Neale Ferguson <neale@sinenomine.net>
11210
11211         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
11212
11213 2007-04-27  Wade Berrier  <wberrier@novell.com>
11214
11215         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
11216         mini.h) to fix build.
11217
11218 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11219
11220         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
11221         
11222         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
11223         causes the corlib unit tests to fail.
11224
11225 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11226
11227         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11228
11229         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11230
11231         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11232         opcodes to the comparison relations.
11233
11234         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11235         opcodes to their types.
11236         
11237         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11238
11239         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11240         it in cfg->arch.cinfo.
11241
11242         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11243
11244         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11245         cfg->cil_offset_to_bb.
11246
11247 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11250         created becase of initlocals.
11251
11252 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11255         Sergey Tikhonov <tsv@solvo.ru>.
11256
11257 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11258
11259         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11260
11261 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * cpu-s390.md (break): Correct the length of break instruction.
11264
11265 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11266
11267         * mini.c: fix a couple of soft-float issues and comments.
11268
11269 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11270
11271         * trace.c (is_filenamechar): - is also a filename char.
11272
11273 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11274
11275         * mini-s390.c: Correct checking for enum type in return value processing.
11276
11277 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11278
11279         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11280         (version.h): Makefile is in the build directory.
11281
11282 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11283
11284         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11285
11286 2007-04-11  Martin Baulig  <martin@ximian.com>
11287
11288         * mini.c (can_access_member): Fix handling of generic classes;
11289         fixes #81259.
11290
11291 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11292
11293         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11294
11295 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11296
11297         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11298
11299 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11300
11301         * mini-codegen.c: make sure the right spill amount is
11302         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11303
11304 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11305
11306         * mini-ppc.c: fixes for the fp_branch_nan test.
11307
11308 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11309
11310         * basic.cs: Comment out new test which still fails on ia64.
11311
11312 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11313
11314         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11315
11316 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11317
11318         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11319
11320 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11321
11322         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11323         on 64 bit machines. Fixes part of #80738.
11324
11325         * basic.cs: Add regression test.
11326
11327 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11328
11329         * inssel.brg basic.cs: Revert previous change to fix build.
11330
11331         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11332         platforms.
11333         
11334         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11335
11336         * basic.cs: Add new regression test.
11337
11338 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11341         many arguments.
11342
11343 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11344
11345         * cpu-s390x.md: Correct length of break instruction.
11346
11347 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11348
11349         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11350         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11351
11352 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11353
11354         * *.c: Begin WIN64 port.
11355         * mini.c:  Use correct register in profiler.
11356         * mini-amd64.c: No inline assembly on Win64.
11357         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11358         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11359         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11360         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11361         mono_arch_ip_from_context for Win64.
11362         
11363         Contributed under MIT/X11 license.
11364
11365 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11366
11367         * exceptions-amd64.c (seh_handler): Ditto.
11368
11369         * exceptions-x86.c (seh_handler): Fix a memory leak.
11370
11371 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11372
11373         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11374         mini-s390x.c: fixed peephole optimizations to deal
11375         correctly with 1 and 2 byte reload avoidance.
11376
11377 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11378
11379         * cpu-s390.md, cpu-s390x.md: update localloc length.
11380
11381 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11382
11383         * cpu-g4.md: added missing descriptions.
11384
11385 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11386
11387         *  Makefile.am: Add support so the tail tests are not executed on
11388         PowerPC as that is a known limitation of the PowerPC port.
11389
11390 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11391
11392         * runmdesc.bat:  Move to msvc directory.
11393         
11394 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11395
11396         * runmdesc.bat:  Run executable that was produced by the current
11397         target and sent via an argument.
11398         
11399 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11400
11401         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11402         #81102.
11403
11404         * generics.2.cs: Add regression test.
11405
11406 2007-03-09  Wade berrier  <wberrier@novell.com>
11407
11408         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11409
11410 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11413         AOT code depends on this.
11414
11415 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11416
11417         * mini.c: more precise tracking of types in the eval stack
11418         (part of fix for bug #81044).
11419
11420 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11423
11424         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11425
11426 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11429
11430         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11431
11432 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11435         a pointer on 64 bit systems. Fixes #80190.
11436
11437         * iltests.il: Add new regression test.
11438
11439 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11440
11441         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11442
11443 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11444
11445         * trace.c: Remove an erroneous alignemnt check when tracing.
11446           Fixes --trace on OSX86.
11447
11448 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11449
11450         * mini-$(arch).h: initialize SP in context for all the archs.
11451
11452 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11453
11454         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11455         regressions in the thread tests.
11456
11457 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11458
11459         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11460         - fixed implementation of LOCALLOC opcode
11461         - implemented non-un compare for floats
11462         - code cleanup
11463         - implementation of FDIV and CKFINITE opcodes
11464         - fixes for latest mono updates
11465         - additional arch opcodes
11466
11467 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11468
11469         * Makefile.am: simplify and merge rules for cross-compilation.
11470
11471 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11472
11473         * local-propagation.c: Actually *apply* the fix for bug 80591...
11474
11475 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11476
11477         * mini-exceptions.c: backuot part of the last change
11478         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11479
11480 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11481         * inssel.brg: Fix bug 59286.
11482
11483
11484 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11485
11486         * mini-exceptions.c: patch from Zoltan to correctly check for
11487         stack boundaries (using the stack register, not the frame register),
11488         fixes bugs #80724, #79717.
11489
11490 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11491
11492         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11493         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11494
11495         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11496         presence of frame pointer elimination.
11497
11498 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11499         
11500         * mini-x86.h: NetBSD UCONTEX_REG defines.
11501
11502 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11503
11504         * inssel-amd64.brg: Fix amd64 build.
11505
11506 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11507
11508         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11509         on amd64.
11510
11511 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11512
11513         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11514         ends.
11515
11516         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11517
11518 2007-01-30 Mark Mason <mason@broadcom.com>
11519
11520            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11521            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11522            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11523            beginning support for CEE_JMP [not quite working yet]
11524            * tramp-mips.c: LMF handling now works
11525         
11526 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11527
11528         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11529
11530         * mini.h (NULLIFY_INS): New macro.
11531
11532 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * mini.c: statistical profiler fix for windows, patch
11535         from Tor Lillqvist (tml@novell.com).
11536
11537 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11538         * local-propagation.c: Fix bug 80591.
11539
11540 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11541
11542         * Makefile.am: put back the --export-dynamic option as with
11543         the previous gmodule flags (thanks to Robert Jordan).
11544
11545 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11548
11549         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11550         simplify and speed up the local register allocator. Also rename some fields
11551         like iassign->vassign.
11552         
11553         * regalloc.c: Remove some functions which are no longer used since their
11554         inlined version is in mini-codegen.c.
11555         
11556         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11557
11558         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11559
11560 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11563         narrowing. Fixes #80622.
11564
11565         * iltests.il: Add new regresssion test. 
11566
11567 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11568
11569         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11570         debug-debugger.c, debug-debugger.h: warning fixes.
11571         * driver.c: updated copyright year and made it fit in one line.
11572
11573 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11574
11575         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11576
11577 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11580
11581         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11582
11583         * iltests.il: Add new test for bug #80507.
11584
11585 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11586
11587         * mini-arm.h: use soft-float also on vfp for now.
11588
11589 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11590
11591         * mini.c: fix some more soft-float issues.
11592
11593 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11594
11595         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11596
11597 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11598         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11599         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11600         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11601
11602 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11603
11604         * mini-arm.c: typo fix.
11605
11606 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11607
11608         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11609
11610 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11611
11612         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11613         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11614
11615         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11616
11617         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11618
11619         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11620         
11621         * inssel.brg: Fix a warning.
11622
11623         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11624
11625         * abcremoval.c ssa.c ssapre.c: Update after this change.
11626         
11627         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11628
11629         * dominators.c (df_set): Use mono_bitset_union_fast.    
11630
11631 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11632
11633         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11634         mini-codegen.c: reduce relocations and memory usage for the cpu
11635         description.
11636
11637 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11638
11639         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11640
11641         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11642         to reduce their size.
11643
11644 2007-01-19 Mark Mason <mason@broadcom.com>
11645
11646         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11647         * mini-mips.c: more configuration macros, support long conditional branches, additional
11648         asserts, fix epilog instrumentation.
11649         * mini-mips.h: use standard stack walk
11650         * cpu-mips.md: increase size of div, rem and conditional branches
11651         
11652 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11653
11654         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11655         to cpu spec data.
11656
11657 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11658
11659         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11660         (compile_method): Ditto.
11661
11662         * aot-runtime.c (decode_klass_info): Ditto.
11663
11664         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11665         needed by the code generated by inssel.brg. Also fix a warning.
11666
11667 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11668
11669         * mini.c: deal with enums that become genericinsts by
11670         being nested in a generic class (bug #79956).
11671
11672 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11673
11674         * mini.c: match the generic definition to check for
11675         private access with generic types (bug #78431).
11676
11677 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11678
11679         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11680         to make life easier for people cross-compiling that insist on not
11681         using scratchbox.
11682
11683 2007-01-17 Mark Mason <mason@broadcom.com>
11684
11685         * inssel-long.brg: patch to deal with mips missing flags
11686         * inssel-long32-mips.brg: implement overflow checks
11687         * insset-mips.brg: implement overflow checks
11688         * mini-mips.h: implement conditional exception handling
11689         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11690           Remove unused code, minor cleanups.
11691         * exceptions-mips.c: minor cleanups
11692         * mini-ops.h: add mips conditional exception ops
11693         * cpu-mips.md: add mips conditional exception ops
11694
11695         
11696 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11697
11698         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11699         to deal with mips missing of flags.
11700
11701 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11702
11703         * exceptions-ppc.c: execute fault handlers.
11704
11705 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11706
11707         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11708
11709 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11710
11711         * mini.c: handle also floating point values in initialize_array.
11712
11713 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11714
11715         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11716         array initialization and make it conditional on the intrins option.
11717
11718 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11719
11720         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11721         relocations and put the patch info names close to the enum definition.
11722
11723 2007-01-15 Mark Mason <mason@broadcom.com>
11724
11725         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11726
11727 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11728
11729         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11730
11731 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11732
11733         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11734
11735 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11736
11737         * Makefile.am: distribute the mips sources.
11738
11739 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11740
11741         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11742         directly.
11743
11744 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11745
11746         * cpu-x86.md: back out for now as this triggers other regressions.
11747
11748 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11749
11750         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11751         to eax:edx, so ecx can't get allocated to them (bug #80489).
11752
11753 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11754
11755         * mini.c, mini-exceptions.c: enabled running fault handlers
11756         (bug #80469).
11757
11758 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11759
11760         * driver.c: If nothing fail, do not use the string "failed",
11761         because it makes it very annoying to view test result logs on the
11762         web. 
11763
11764 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11765
11766         * debug-debugger.c (mono_debugger_main): Rename "main" to
11767         "main_method" to prevent a warning.
11768
11769         Remove a warning for unused field.
11770
11771 2006-12-28  Martin Baulig  <martin@ximian.com>
11772
11773         * debug-debugger.c
11774         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11775
11776 2006-12-22  Martin Baulig  <martin@ximian.com>
11777
11778         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11779         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11780         seperate `.mdb_debug_info' section, so we can access it from the
11781         debugger even if the binary is stripped.
11782
11783         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11784         from the `.mdb_debug_info' here to prevent the linker from
11785         removing that section.
11786
11787         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11788         mdb-debug-info64.s.
11789
11790 2006-12-19  Robert Jordan  <robertj@gmx.net>
11791
11792         * mini-x86: enable the code to return small structures in
11793         registers for FreeBSD as well. Fixes bug #80278.
11794         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11795
11796 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11797
11798         * mini-x86.c: align the stack when calling the profiler
11799         function instrumenting the prolog (on OSX).
11800
11801 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11802
11803         * mini.c: emit a break opcode where Debugger.Break () is called.
11804
11805 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11806
11807         * mini.c (mono_method_to_ir): Provide useful information on this
11808         assert, to prevent others from debugging like I did.
11809
11810 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11811
11812         * mini.c: enable code which was incorrectly commented
11813         (bug #80235).
11814
11815 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11816
11817         * mini-x86.c: enable on OSX, too, the code to return small
11818         structures in registers.
11819
11820 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11821
11822         * mini-x86.c: remove the use of the dynamic code manager here, too.
11823
11824 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11825
11826         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11827         mono_debugger_create_notification_function() to use
11828         mono_global_codeman_reserve () instead of a dynamic code manager.
11829
11830 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11831
11832         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11833         ves_array_element_address() jit icall and use a generated
11834         managed method instead (which is about 4 times faster for a rank 3
11835         array access).
11836
11837 2006-11-29  Mark Mason  <mason@broadcom.com>
11838
11839         * basic-calls.cs: additional tests for passing
11840         structures as function arguments.
11841
11842 2006-11-29  Mark Mason  <mason@broadcom.com>
11843
11844         * mini-mips.h: disable custom exception handling
11845         * mini-mips.c: throw/rethrow should use jalr to call
11846         exception stubs.  Fixed bug with passing structures
11847         by value. More support for tracing floating point
11848         functions.
11849
11850 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11851
11852         * mini.c: fixed typo in the soft-float ldind.r4 handling
11853         (bug #80086).
11854
11855 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11856
11857         * mini.c, mini.h, driver.c: added --runtime command line
11858         option to select a different runtime than the autodetected one.
11859         * jit.h: added API for embedders to initialize with a specific
11860         runtime version.
11861
11862 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11863
11864         * mini.c: handle also boxing of r4 values (bug #80024).
11865
11866 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11867
11868         * mini-ppc.c: force indirect calls until we reserve
11869         enough address space for all the generated code.
11870
11871 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11872
11873         * exceptions-arm.c: workaround bugs in the libc definition
11874         of struct ucontext.
11875
11876 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11877
11878         * inssel.brg: fixes from me and Mark Mason.
11879
11880 2006-11-23  Dick Porter  <dick@ximian.com>
11881
11882         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11883         semaphore display now we've fixed the initial value
11884
11885 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11886
11887         * inssel.brg: partially revert the last change to fix the build.
11888
11889 2006-11-21  Mark Mason  <mason@broadcom.com>
11890
11891         * inssel.brg: Add and use compare-and-branch macros to support
11892         architectures that do not have condition code registers (ie. MIPS).
11893         * *-mips.{c,brg,md}: Fix copyright statements
11894
11895 2006-11-20  Mark Mason  <mason@broadcom.com>
11896
11897         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11898         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11899         * mini.h: Added declaration for mono_print_ins()
11900         * mini-codegen.c: added ins_spec initializer for MIPS
11901         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11902         vreg to be virtual and hreg to be non-virtual.
11903         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11904         is not yet working/implemented correctly.
11905         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11906         non-static, fixup calls to print_ins() from other parts in the file.
11907
11908 2006-11-20  Mark Mason  <mason@broadcom.com>
11909
11910         * basic-calls.cs: added tests for passing structures as arguments
11911         to calls.
11912
11913 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11914
11915         * inssel-long32.brg: optimize signed division by power of two.
11916
11917 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11918
11919         * mini-arm.c: added support for interworking with thumb code
11920         (mono must be still be built using the ARM instruction encoding).
11921
11922 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11923
11924         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11925         verifier has different rules for it.   Fixes a few verifier issues
11926         in the test suite.
11927
11928         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11929         at the end, so people know what happened.
11930
11931 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11932
11933         * brach-opts.c: in optimize_exception_target() make sure we
11934         are in a catch clause (fixes bug #79871).
11935
11936 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11937
11938         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11939         more soft-float support fixes.
11940
11941 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11942
11943         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11944         that are passed half on the stack and half in registers.
11945
11946 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11947
11948         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11949         more mips integration work from Mark E Mason 
11950         <mark.e.mason@broadcom.com>.
11951
11952 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11953
11954         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11955         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11956         tramp-mips.c: added sources for the mips port, not
11957         integrated in the build yet. Contributed by
11958         Mark E Mason <mark.e.mason@broadcom.com>.
11959
11960 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11961
11962         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11963
11964 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11965
11966         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11967         put the soft-float rules in its own file since it seems to
11968         break s390 compilation.
11969
11970 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11971
11972         * mini-arm.c: fixed wrnings.
11973
11974 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11975
11976         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11977         inssel-arm.brg: ARM support for soft-float.
11978
11979 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11980
11981         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11982         loads and stores of 32 bit fp values.
11983
11984 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11985
11986         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11987
11988         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11989         works. Fixes #79852 and #79463.
11990
11991 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11992
11993         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11994         more soft-float support WIP and fixes.
11995
11996 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11997
11998         * mini-arm.c: some VFP updates.
11999
12000 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12001
12002         * mini-exceptions.c: 0 is a valid local var offset in some
12003         architectures, don't assert (bug #78508).
12004
12005 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12006
12007         * exceptions-arm.c: fixed off by one error in stack walk code.
12008
12009 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12010
12011         * mini.h, mini.c: more precise tracking of type load exceptions.
12012
12013 2006-11-03  Robert Jordan  <robertj@gmx.net>
12014
12015         * Makefile.am: [WIN32] Add monow.exe target.
12016         * driver.c: [WIN32] Don't detach the console when debugging.
12017         Fixes bug #79797.
12018         
12019 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12020
12021         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12022
12023 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12024
12025         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12026
12027         * driver.c (mini_regression): Fix --regression with AOT.
12028
12029         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12030
12031 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12032
12033         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12034
12035         * mini-sparc.h: Don't use sigaction on sparc/linux.
12036
12037         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12038
12039         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12040
12041         * mini-exceptions.c: Add proper include files for getpid ().
12042
12043 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12044
12045         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12046         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12047         method.
12048
12049         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12050         name cache to reduce its size.
12051
12052         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12053
12054 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12055
12056         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12057         the mono_lmf TLS variable.
12058
12059         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12060         trampoline lmf frames.  
12061
12062         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12063
12064 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12067         the mono_lmf TLS variable.
12068
12069         * mini-exceptions.c: Access the LMF structure through accessors.
12070
12071         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12072         variable instead of in jit_tls->lmf.
12073
12074         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12075         
12076         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12077         trampoline lmf frames.
12078
12079         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12080
12081 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12082
12083        * mini.c trace.c mini-x86.c: Revert these too.
12084         
12085        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12086        signature change.
12087
12088 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12089
12090         * genmdesc.c: removed now dead code.
12091
12092 2006-10-09  Robert Jordan <robertj@gmx.net>
12093
12094         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12095
12096 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12097
12098         * mini.h: do not leave gaps in the opcode values.
12099
12100 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12101
12102         * jit-icalls.h: flag functions as internal here, too.
12103
12104 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12105
12106         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12107         functions with the internal attribute.
12108
12109 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12110
12111         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12112
12113 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12114
12115         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12116         for soft-float.
12117
12118 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12121         tail calls as on other platforms.
12122
12123         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12124
12125         * iltests.il: Add a few tailcall tests.
12126
12127 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12128
12129         * driver.c: fix loop for old compilers (bug #79521).
12130
12131 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12134
12135         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12136
12137         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12138         metadata without any code.
12139
12140         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12141         more precise debugging information using gdb.
12142
12143 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12144
12145         * inssel-ia64.brg: Make the helper methods static.
12146
12147 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12148
12149         * inssel-x86.brg: make the helper methods static.
12150
12151 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12152
12153         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12154
12155 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12156
12157         * mini.c: updates for monoburg changes.
12158         * inssel.brg: make a few helper functions static as they should.
12159
12160 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * Makefile.am: Move mini-codegen.c to common_sources.
12163
12164 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12165
12166         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12167         instructions.
12168         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12169         mini-ppc.h: port to use the common local register allocator.
12170
12171 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini.h: Remove the comment too then.
12174
12175 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12176
12177         * mini.h: put back backend.data which is to be used shortly and
12178         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12179         pointers on 4 byte boundaries it'd have much bigger issues running
12180         and you can ifdef it out anyway.
12181
12182 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12185         MonoInst size by 4 bytes on 64 bit machines.
12186
12187 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12188
12189         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12190         replacement with more meaningful field names. Arch maintainers, please
12191         check the assigned names are good enough for your arch.
12192
12193 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12196         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12197
12198 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12199
12200         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12201         relocations and memory requirements, put the optimization flags
12202         definitions in their own file.
12203
12204 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
12207
12208         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
12209
12210 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
12211
12212         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
12213
12214 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
12215
12216         * inssel.brg: use the correct function to get the size of an item
12217         in an array, given an element class.
12218         * aot-compiler.c: do not access class->class_size directly.
12219
12220 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12221
12222         * mini.h, debug-mini.c: added a debugging function to print
12223         info about local variables and arguments in a jitted method.
12224
12225 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
12226
12227         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12228
12229         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12230
12231 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12232
12233         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12234         inner and outer loops when passing vtypes.
12235
12236 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12237
12238         * mini-ppc.c: take into account the cpu errata for cache flushing
12239         which caused some random errors (bug #79381).
12240
12241 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12242
12243         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12244         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12245
12246 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12249         loaded.
12250
12251         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12252         freebsd ports tree.
12253
12254         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12255         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12256
12257         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12258         displacement.
12259
12260 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12263
12264 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12265
12266         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12267         macro does not have to be changed during debugging.
12268
12269         * 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>.
12270
12271         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12272
12273         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12274         
12275         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12276         MONO_ARCH_NO_EMULATE_MUL is defined.
12277
12278         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12279
12280         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12281
12282         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12283
12284         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12285         
12286 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12287
12288         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12289         stuff to mini-exceptions.c where it is used.
12290
12291         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12292         setup code, the real one is in mini-exceptions.c.
12293
12294         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12295         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12296         some changes from the freebsd ports tree.
12297
12298         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12299         constants.
12300         
12301         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12302
12303 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12304
12305         * mini.c: on Linux, check for /proc to be mounted
12306         (bug# 79351, novell bug#201204).
12307
12308 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12309
12310         * mini.c: handle cases where pthread_attr_getstack() behaves
12311         incorrectly (bug #78096).
12312
12313 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12314
12315         * mini-arm.c: support larger stack frames (bug #79272).
12316
12317 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12320
12321         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12322         tokens.
12323
12324         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12325         mono_class_from_name () to find a class from its name.
12326
12327         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12328
12329 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12332
12333 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12334
12335         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12336
12337 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12338
12339         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12340         callinfo->trampoline.
12341
12342         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12343         fixes #79271.
12344         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12345         future.
12346
12347 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12350
12351 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12352
12353         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12354         stats.method_trampolines, it is already done by the generic trampoline code.
12355
12356         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12357         
12358 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12361
12362         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12363
12364         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12365
12366         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12367         
12368         * mini.c (print_jit_stats): Print new stats.
12369
12370         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12371
12372 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12373
12374         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12375         Address on two dimensional arrays. Fixes #78729.
12376
12377         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12378
12379         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12380         a method.
12381
12382         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12383
12384         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12385         #79130.
12386         
12387         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12388         a race condition.
12389         (mini_get_ldelema_ins): Ditto.
12390
12391 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12392
12393         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12394         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12395         Fixes #79213.
12396
12397 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12398
12399         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12400         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12401
12402         * exceptions-s390x.c: Cosmetic change.
12403
12404         * tramp-s390.c: Fix warning.
12405
12406         * cpu-s390.md: Correct length of mul_imm.
12407
12408 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12409
12410         * aot-compiler.c: added binary writer with ELF backend
12411         implementation (only on Linux/x86 for now).
12412
12413 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * Makefile.am: Don't run net 2.0 AOT tests.
12416
12417         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12418         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12419
12420         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12421
12422 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12423
12424         * aot-compiler.c: simplified and refactored the asm-writing code
12425         to allow different backends.
12426
12427 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12428
12429         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12430
12431         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12432         little. Share patches of type TYPE_FROM_HANDLE as well.
12433
12434         * mini.c (mono_patch_info_equal): New helper function.
12435         (mono_patch_info_hash): Ditto.
12436
12437         * aot-compiler.c (emit_method_code): Fix s390 build.
12438
12439         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12440         is not handled because it is stored as a flag and not as a type ctor. Fixes
12441         #79016.
12442
12443 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12444
12445         * aot-compiler.c: Fix computation of GOT slot statistics.
12446         
12447         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12448         Also remove support for not PIC AOT.
12449
12450         * mini.h: Bump AOT file format version.
12451
12452         * objects.cs: Add a test for #78990.
12453
12454         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12455         (peter.dettman@iinet.net.au). Fixes #79087.
12456
12457         * basic-long.cs: Add a test for the above.
12458
12459 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12460
12461         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12462         
12463         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12464         code somewhat.
12465
12466 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12469         exceptions.
12470
12471 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12472
12473         * mini.c: Don't verify COM proxy invoke calls
12474         
12475
12476 2006-08-10  Dick Porter  <dick@ximian.com>
12477
12478         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12479         which process is holding semaphores locked.
12480
12481 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12482
12483         * mini-ia64.c mini-amd64.c: Fix #79027.
12484
12485         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12486
12487         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12488
12489         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12490         implicit arguments in a vararg call. Fixes #79027.
12491
12492 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12493
12494         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12495         (mono_get_array_new_va_signature): Ditto.
12496
12497 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12498
12499         * aot-runtime.c: Call init_plt lazily.
12500
12501         * inssel-long.brg: Fix unsigned long->int conversion.
12502
12503         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12504
12505         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12506         that most data is now in the .rss/.data section.
12507
12508 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12509
12510         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12511
12512         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12513
12514         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12515
12516         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12517
12518         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12519         virtual call. Fixes #79010.
12520
12521         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12522         and use the result as the this argument in the real call.
12523
12524         * generics.2.cs: Add a new test for #79010.
12525         
12526 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12527
12528         * mini-x86.c: Fix a warning.
12529
12530         * aot-compiler.c: Add a bunch of statistics.
12531
12532         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12533
12534 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12535
12536         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12537
12538 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * 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>.
12541
12542 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12543
12544         * mini.c (mono_method_to_ir): Obtain the original method in the
12545         CIL stream and use this to perform validation.
12546
12547         Fixed: #78816
12548
12549 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12552         (mono_arch_call_opcode): Ditto.
12553
12554         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12555         #78826.
12556
12557         * mini.c (mono_patch_info_dup_mp): New helper function.
12558         
12559         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12560         compilation. Fixes #78827.
12561
12562 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12563
12564         * declsec.c: Use original security informations for
12565           MONO_WRAPPER_MANAGED_TO_MANAGED.
12566
12567 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12568
12569         * mini.c: Allow Com Interop methods/classes and
12570         don't verify COM wrapper calls
12571         
12572
12573 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12574
12575         * inssel-long32.brg: Fix long->i4 checked conversion.
12576
12577         * exceptions.cs: Add a test for the above.
12578
12579 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12580
12581         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12582
12583         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12584         leaks.
12585
12586         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12587         #78775.
12588
12589 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * mini.c: Fix solaris/x86 exception handling.
12592
12593         * Makefile.am: Get rid of $(ICU_LIBS).
12594
12595 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12598         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12599         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12600
12601         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12602
12603         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12604         this function causes a SIGSEGV.
12605
12606 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini.c: Remove unused solaris/x86 includes.
12609
12610 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12613
12614 2006-06-20  Jb Evain  <jbevain@gmail.com>
12615
12616         * cpu-g4.md: fix max length of start_handler instruction.
12617
12618 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12619         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12620
12621 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12622         * ssa.c: Fixed bug 78653 for SSA based deadce.
12623         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12624         MonoInst.flags, used in SSA based deadce.
12625         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12626         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12627
12628 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12629
12630         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12631         it can end up using non executable memory on ppc64 systems
12632         running ppc32 userspace (fix from Johannes Berg).
12633
12634 2006-06-14  Dick Porter  <dick@ximian.com>
12635
12636         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12637         4.1.1
12638
12639 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12640         * mini.c: Made so that inline is locally disabled if it would
12641         trigger a .cctor, because too many apps depend on this behavior
12642         (which seems to be also the one of the MS CLR).
12643
12644 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12647         No idea why this worked before.
12648
12649         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12650         which branch to outer exception clauses since they could skip the
12651         inner finally clauses. Fixes #78633.
12652
12653         * exceptions.cs: Add a test for the above.
12654
12655         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12656         Fixes #78629.
12657
12658         * iltests.il: Add a test for the above.
12659
12660 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12663         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12664
12665         * iltests.il: Add a test for the above.
12666
12667 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12670         
12671         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12672         methods as instrinsics.
12673
12674 2006-06-09  Wade Berrier <wberrier@novell.com>
12675
12676         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12677         (simple-cee-ops.h ssapre-mini-ops.h)
12678
12679 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12680
12681         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12682         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12683         instruction).
12684         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12685         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12686
12687 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12688
12689         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12690
12691 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12692
12693         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12694         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12695         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12696         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12697         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12698         of opcodes, so that bug 78549 should not happen again.
12699         * ssapre.c: Updated to use the renamed files.
12700
12701 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12704         in OP_ATOMIC_EXCHANGE_I4.
12705
12706 2006-06-07  Wade Berrier <wberrier@novell.com>
12707
12708         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12709         in mono_debugger_create_notification_function)
12710
12711 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12714         
12715         * mini.c (type_from_stack_type): Disable some changes which do not
12716         seem to work.
12717
12718         * driver.c: Reenable opts.
12719
12720         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12721         of the evaluation stack.
12722         
12723         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12724         evaluation stack trace at entry to the bblock.
12725
12726         * mini.c (merge_stacks): New function to perform verification of stack merges.
12727         Turned off by default.
12728
12729         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12730         STACK_MP.
12731         
12732 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12733
12734         * local-propagation.c: Fixed bug 78549.
12735
12736 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12739
12740 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12741
12742         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12743         tramp-arm.c, tramp-ia64.c
12744         (mono_debugger_create_notification_function): Update signature to
12745         new signature and use new protocol for creating the notification
12746         function.  
12747
12748         Should fix the build.
12749
12750 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12751
12752         * exceptions-ppc.c (mono_jit_walk_stack)
12753         (ves_icall_get_frame_info): Fix the build
12754
12755 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12758
12759 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12760
12761         * il2tests.2.il: New file for generics CIL tests.  Add test for
12762         #78019.
12763         * Makefile.am: Update.
12764
12765         Fix #78019
12766         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12767         to nullable types.
12768
12769 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12770
12771         * aliasing.c: Fixed bug 78311.
12772
12773 2006-05-29  Martin Baulig  <martin@ximian.com>
12774
12775         * mini-exceptions.c (mono_find_jit_info): When computing the
12776         native offset, check whether we're actually inside the method's
12777         code; call mono_debug_print_stack_frame() to format the frame.
12778         (ves_icall_System_Exception_get_trace): Call
12779         mono_debug_print_stack_frame() to format the stack frame.
12780         (ves_icall_get_trace): Update to the new debugging API.
12781         (mono_jit_walk_stack_from_ctx): Likewise.
12782         (ves_icall_get_frame_info): Likewise.
12783
12784         * mini.c (get_method_from_ip): Use the new debugging API.
12785         (mono_print_method_from_ip): Likewise.
12786
12787         * exceptions-ppc.c
12788         (mono_jit_walk_stack): Use the new debugging API.
12789         (ves_icall_get_frame_info): Likewise.   
12790
12791 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12794
12795 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12796
12797         * mini.c: Added "limitator" to inline for debugging.
12798
12799 2006-05-24  Martin Baulig  <martin@ximian.com>
12800
12801         * debug-debugger.c (mono_debugger_init): Create a private,
12802         malloc()-based code manager for the notification function and
12803         intentionally leak it on exit.  This fixes the crash-on-exit race
12804         condition.
12805
12806         * tramp-amd64.c
12807         (mono_debugger_create_notification_function): Added
12808         `MonoCodeManager *' argument.
12809
12810         * tramp-x86.c
12811         (mono_debugger_create_notification_function): Added
12812         `MonoCodeManager *' argument.
12813
12814 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12815
12816         * aliasing.c: Fixed 64 bit issue.
12817         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12818         default since all known bugs are fixed (one more time!).
12819
12820 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12821
12822         * mini.c: write barrier support.
12823
12824 2006-05-23  Martin Baulig  <martin@ximian.com>
12825
12826         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12827         check at the top of the file.
12828
12829 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12830
12831         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12832         reverting changes without reason and without changelog entries.
12833
12834 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12837         to a few opcodes. Fixes #78439.
12838
12839         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12840         consistency with other archs.
12841
12842         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12843
12844 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12845
12846         * debug-debugger.c: fix the build.
12847
12848 2006-05-17  Martin Baulig  <martin@ximian.com>
12849
12850         * debug-debugger.c
12851         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12852         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12853         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12854         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12855
12856 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12859
12860 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12861
12862         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12863         MONO_TYPE_GENERICINST.
12864         
12865         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12866         MONO_TYPE_GENERICINST.
12867
12868 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12871         #78325.
12872
12873 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12874
12875         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12876         mempool.
12877         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12878
12879 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12882         mono_trace_cleanup ().
12883
12884         * iltests.il: Fix problem with the newly added test.
12885
12886         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12887         due to register constraints, free up the previous hreg. Fixes #78314.
12888
12889         * iltests.il: Add new test for #78314.  
12890
12891         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12892         Interlocked.Add. Fixes #78312.
12893
12894         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12895         
12896 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12899
12900 2006-05-05  Martin Baulig  <martin@ximian.com>
12901
12902         * debug-mini.c (mono_debug_open_block): New method.
12903
12904         * mini-amd64.c
12905         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12906         the beginning of each basic block.
12907
12908         * mini-x86.c
12909         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12910         the beginning of each basic block.
12911
12912 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12913
12914         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12915         default until I understand why they break the build on amd64.
12916
12917 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * mini.c (mini_cleanup): Call mono_cleanup ().
12920
12921         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12922         errors.
12923
12924 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12925
12926         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12927         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12928         default since all known bugs are fixed, and I cannot reproduce bug
12929         77944... I'm asking Matt Hargett to test again after this commit.
12930
12931 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12932
12933         * mini-codegen.c: Fixed typo that thrashed inline.
12934
12935 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12936
12937         * dominators.c (compute_dominators): Avoid using a worklist since
12938         it is not correct in some cases. Instead, iterate over all bblocks as
12939         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12940
12941 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12942
12943         * mini.c (mono_jit_compile_method_inner): Use
12944         mono_prepare_exception_from_error that resets the value
12945         internally.
12946
12947 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12948
12949         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12950         
12951 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12952
12953         * aliasing.c: Fixed bug 78210.
12954
12955 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12956
12957         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12958         default until all their problems (or the ones they trigger) are fixed.
12959
12960 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12963         
12964         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12965         as loaded only after resolving patches since that could invoke the same method.
12966
12967         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12968
12969         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12970         functions.
12971
12972         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12973         AOT loader.
12974
12975         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12976         stack.
12977
12978         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12979         made from AOT code through the PLT table.
12980
12981         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12982         holding the plt offset when a call is made to the aot plt trampoline.
12983         
12984 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12987         amd64 AOT support.
12988
12989         * Makefile.am (common_sources): Fix build breakage.
12990
12991         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12992         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12993         intra-assembly calls if possible.
12994         
12995         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12996
12997         * mini-trampolines.c: Handle PLT entries.
12998
12999         * mini.c: Avoid creating a GOT var for calls.
13000
13001         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13002         from mscorlib code.
13003
13004         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13005         from mscorlib code.
13006
13007         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13008         AOT code.       
13009
13010         * mini.h: Bump AOT file format version.
13011         
13012         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13013         covers more cases.
13014
13015 2006-04-25  Martin Baulig  <martin@ximian.com>
13016
13017         * driver.c: Disable copyprop, consprop and inline when running
13018         inside the debugger.
13019
13020 2006-04-25  Martin Baulig  <martin@ximian.com>
13021
13022         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13023         with `get_current_thread' and added `detach'.
13024         (MonoDebuggerMetadataInfo): Added `thread_size',
13025         `thread_tid_offset', `thread_stack_ptr_offset' and
13026         `thread_end_stack_offset'.
13027
13028 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13031         aot-runtime.c.
13032
13033         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13034         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13035
13036         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13037
13038         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13039
13040         * aot.c: Add support for ADJUSTED_IID.  
13041
13042 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13043
13044         * aot.c (emit_method_order): Don't align method_order_end.
13045
13046         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13047         the interface ID changes.
13048
13049 2006-04-21  Dick Porter  <dick@ximian.com>
13050
13051         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13052         cleaning up a thread.  Fixes the new part of bug 77470.
13053
13054 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13055
13056         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13057         to managed wrapper.
13058                      
13059 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13062         
13063         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13064         SIGSEGV. Fixes #78072.
13065
13066         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13067         unregister our SIGABRT handler.
13068
13069 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13070
13071         * mini.c: Disabled inline where it can alter the call stack in a
13072         way visible from managed code.
13073         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13074         default.
13075
13076 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13079         on other platforms. Fixes #78089.
13080
13081 2006-04-13  Martin Baulig  <martin@ximian.com>
13082
13083         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13084         determine whether we're inside the debugger.
13085
13086         * debug-debugger.h
13087         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13088
13089 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13092         handler clauses. Fixes #78024.
13093
13094         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13095         in the CALL_MEMBASE opcodes. Fixes #78088.
13096         (mono_arch_get_vcall_slot_addr): Ditto.
13097
13098 2006-04-10  Martin Baulig  <martin@ximian.com>
13099
13100         * debug-debugger.c: The thread handling code has now been moved
13101         into ../metadata/threads.c.
13102
13103 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * driver.c (mono_main): Fix --with-gc=none build.
13106
13107         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13108         (mono_spillvar_offset_float): Ditto.
13109         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13110         hreg, not when its !global, since on ia64, there is a third category: stacked
13111         registers.      
13112
13113 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13114
13115         * mini.c: set MonoInst->klass for load field address and a few other
13116         places.
13117
13118 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13119
13120         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13121
13122 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13123
13124         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13125         the branch opt changes.
13126
13127 2006-04-06  Dick Porter  <dick@ximian.com>
13128
13129         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13130         
13131         * wapihandles.c (mini_wapi_seminfo): 
13132         * driver.c (mono_main): Add semaphore info option
13133
13134 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13135
13136         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13137         branch optimization changes. Fixes #78009.
13138
13139 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13140
13141         * mini.c: ignore accessibility of methods in managed->native wrappers.
13142
13143 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13146         
13147         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13148
13149 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini.c: Modify the branch optimizations to preserve the invariant that
13152         the entries inside the in_bb and out_bb arrays are unique.
13153         (mono_unlink_bblock): Avoid creation of new arrays.
13154
13155 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13156
13157         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13158         change (#77992).
13159
13160 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13161
13162         * mini.c (optimize_branches): Remove the "optimizations" in
13163         the cbranch1/cbranch2 -> branch cases which were causing several
13164         problems in the past. Fixes #77986.
13165
13166 2006-03-31  Chris Toshok  <toshok@ximian.com>
13167
13168         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13169         default optimizations :(
13170
13171 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13174         branch.
13175
13176 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13177
13178         * local-propagation.c: Added comments to structs and removed
13179         "Mono" prefixes from local tree mover types.
13180
13181 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * Makefile.am (arch_sources): Define this for each architecture so 
13184         libmono_la_SOURCES is defined in one place.
13185
13186 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13187
13188         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13189         from handles/.
13190
13191 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13192
13193         * driver.c: print the GC name supplied by configure.
13194
13195 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13196
13197         * local-propagation.c: Added tree mover, and moved here all the
13198         local propagation code from mini.c
13199         * mini.c: Added support for treeprop, and moved all the local
13200         propagation code to local-propagation.c
13201         * mini.h: Added support for treeprop
13202         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13203         treeprop, inline and deadce by default
13204         * Makefile.am: Added local-propagation.c
13205
13206 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
13209
13210 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
13211
13212         * debug-debugger.c: make it compile without the Boehm GC.
13213
13214 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13215
13216         * mini.c: fixed issue with mismatch when an icall is registered
13217         with multiple names but same address.
13218
13219 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13220
13221         * declsec.c, mini-exceptions.c: use write barrier to set reference
13222         fields of managed objects.
13223
13224 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13227         (can_access_internals): Fix a warning.
13228
13229         * mini.c (print_method_from_ip): Rename this to 
13230         mono_print_method_from_ip so it gets exported.
13231
13232         * trace.c: Deal with strings inside StringBuilder's containing garbage
13233         and fix memory leaks. Fixes #77848.
13234
13235 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13238         fixes #77787.
13239
13240 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13241         
13242         * mini-s390.c: Remove OP_X86_TEST_NULL.
13243
13244 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13245
13246         * mini.c: use the correct GetHashCode() for the moving collector.
13247
13248 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13249
13250         * liveness.c: Regalloc spill cost tuning.
13251
13252 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13253         
13254         * mini-s390x.h: Correct S390_LONG macro.
13255
13256         * mini-s390x.c: Cleanup unused code.
13257
13258 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13259
13260         * jit-icalls.h: New file.
13261
13262         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13263         icalls and include that instead of including jit-icalls.c.
13264
13265         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13266         OP_X86 opcodes.
13267
13268 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13269
13270         * mini.c: when checking for member accessibility, also check for
13271         friend assemblies and for explicit interface implementations.
13272
13273 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13276
13277         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13278
13279         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13280         common cases are done first.    
13281
13282         * mini-ops.h: Only define platform specific opcodes on the given platform.
13283
13284         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13285         branch.
13286         
13287 2006-03-14  Martin Baulig  <martin@ximian.com>
13288
13289         Revert Paolo's change from r57348:
13290
13291         * mini.h: don't use gboolean for bitfields.
13292         * mini.c: verifier changes for fields and methods accessibility.
13293
13294 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13295
13296         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13297
13298         * mini-s390x.c: Fix conv_r_un.
13299
13300         * cpu-s390, cpu-s390x.md: Fix lengths.
13301
13302 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13303
13304         * mini.c: nested types have access to all the nesting
13305         levels, not just the enclosing types.
13306
13307 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13308
13309         * mini.c: added a few more verification checks.
13310
13311 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * liveness.c: Merge optimizations from the linear-il branch.
13314
13315 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini-ia64.c (emit_call): Add a comment.
13318
13319         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13320
13321         * tramp-ia64.c: Fix some warnings.
13322
13323 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13324
13325         * mini.h: don't use gboolean for bitfields.
13326         * mini.c: verifier changes for fields and methods accessibility.
13327
13328 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13331         lazy icall wrapper changes.
13332
13333         * dominators.c: Replace all the dominator algorithms with faster
13334         ones from the linear-il branch.
13335
13336         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13337         the mempool.
13338
13339         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13340         common cases are done first.
13341
13342         * mini-amd64.c: Fix some warnings.
13343
13344         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13345         from the mempool.
13346
13347         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13348         added code.
13349
13350         * mini.h: Add a missing prototype.
13351
13352 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13353
13354         * mini.c: Compile icall wrappers lazily.
13355
13356         * mini-codegen.c: Use printf instead of g_print since its much faster.
13357
13358         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13359         function.
13360
13361         * mini.c (optimize_branches): Cache the negative result from 
13362         remove_block_if_useless ().
13363
13364         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13365         Also fix some bblock linking issues.
13366
13367         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13368         assembly files.
13369
13370         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13371
13372         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13373         accessed fields first, for better cache behavior.
13374         
13375 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13376
13377         * mini.c: speedup IList<T> array accesses.
13378
13379 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13382         inline_costs counter. Fixes #77190.
13383
13384 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13385
13386         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13387         trace messages. Fixes #77706.
13388
13389 2006-03-04  Martin Baulig  <martin@ximian.com>
13390
13391         * tramp-amd64.c, tramp-x86.c
13392         (mono_debugger_create_notification_function): Use
13393         mono_global_codeman_reserve() to allocate a buffer at runtime and
13394         return it.
13395
13396         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13397
13398         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13399         notification function at runtime and then call `initialize' in the
13400         `MONO_DEBUGGER__debugger_info' vtable.
13401
13402 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * iltests.il: Fix a visibility problem.
13405
13406 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13407
13408         * driver.c, mini.c: add hooks for the counters API.
13409
13410 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13411
13412         * driver.c: show disabled options.
13413
13414 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13415
13416         * linear-scan.c: always use cost-driven selection.
13417
13418 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13419
13420         * jit-icalls.c (helper_compile_generic_method): Revert change from
13421         2006-02-24.
13422
13423 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13424
13425         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13426
13427 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13428
13429         * inssel.brg: style fixes, mostly to force the updated monoburg
13430         to run for people using svn.
13431
13432 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini.c: match monoburg changes.
13435
13436 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13437
13438         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13439         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13440         declaration in the header file.
13441
13442 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13443
13444         * helpers.c: reduce relocations and mem usage.
13445
13446 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13447
13448         * mini.h, mini-codegen.c: disable logging features if
13449         requested by configure.
13450
13451 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13452
13453         * mini.c: tiny verifier changes.
13454
13455 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13456
13457         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13458         cpu-pentium.md: stack alignment changes for osx/x86,
13459         partially from Geoff Norton <gnorton@customerdna.com>.
13460
13461 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13462
13463         * jit-icalls.c (helper_compile_generic_method): Update to changes
13464         in metadata/class.c.
13465
13466 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13467         
13468         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13469         
13470         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13471         interface calls with large offsets.
13472
13473 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13474
13475         * jit-icalls.c (helper_compile_generic_method): Document the
13476         special-case we depend on so that we can inflate the method twice
13477         with the same context with no bad side-effects.
13478
13479 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13480
13481         * mini-x86.c, mini-amd64.c: fix for case when xen support
13482         is disabled.
13483
13484 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13485
13486         * mini-x86.c, mini-amd64.c: generate code to access tls items
13487         in a faster way for Xen systems.
13488
13489 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13490
13491         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13492         updates and compilation fixes for the OSX/x86 port, mostly from
13493         Geoff Norton <gnorton@customerdna.com>.
13494
13495 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13496
13497         * inssel.brg: faster interface call implementation
13498         to sync with the interface_offsets MonoVTable changes.
13499
13500 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13501
13502         * mini.c: more verification checks.
13503
13504 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13505
13506         * mini.c: added a few more verification checks.
13507
13508 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13509
13510         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13511         facility on the processor and use it if available.
13512
13513 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13514
13515         * driver.c, aot.c, mini.c: throw exception if the IL code is
13516         invalid or unverifiable.
13517
13518 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13519
13520         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13521         m.StructField.
13522
13523 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13524
13525         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13526
13527 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13528
13529         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13530         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13531         handling of instantiated generic valuetypes.
13532
13533 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13534
13535         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13536         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13537         instead.
13538
13539         * generics.2.cs: Revert the nullable reftypes tests.
13540
13541 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13542
13543         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13544         using __builtin_frame_address (1) as it doesn't work in the presence
13545         of optimizations. Hopefully fixes #77273.
13546
13547         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13548         -> generics.cs change as it doesn't work with some automake versions.
13549
13550 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13551
13552         * mini.c: handle systems that sue a different way to
13553         retrieve the stack address of the current thread.
13554
13555 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13556
13557         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13558         it specially in the makefile.
13559
13560         * generics.2.cs: Add tests for nullable reference types.
13561
13562 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13563
13564         * mini.c: always handle the case when mono_jit_init()
13565         is called in a thread different from the main thread,
13566         confusing libgc (bug #77309).
13567
13568 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13569
13570         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13571
13572 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13573
13574         * mini.c: change optimize_branches () to use a single loop
13575         and introduce a new optimization to simplify some range checks.
13576
13577 2006-02-03  Martin Baulig  <martin@ximian.com>
13578
13579         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13580         and merged with debugger_thread_manager_add_thread().
13581         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13582         inform the debugger about the main thread.
13583
13584 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * basic.cs: Add test for div.un/rem.un constant folding.
13587
13588 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13589
13590         * cpu-s390x.md: correct int_xor_imm length
13591
13592 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13593
13594         * generics.2.cs: New test for #77442.
13595
13596         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13597         #77442.
13598
13599 2006-02-02  Martin Baulig  <martin@ximian.com>
13600
13601         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13602         <mono/metadata/mono-debug-debugger.h>   
13603
13604         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13605
13606 2006-02-02  Martin Baulig  <martin@ximian.com>
13607
13608         * debug-debugger.h: New header file for debug-debugger.c.
13609
13610         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13611         function is a separate thread anymore; add support for attaching.
13612
13613 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * tramp-x86.c: Fix a warning.
13616
13617 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13618
13619         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13620         on very large methods.
13621
13622         * aot.c (load_patch_info): Fix a warning.
13623
13624 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13625
13626         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13627         mini-ops.h: alu membase optimizations.
13628
13629 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13630
13631         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13632         to speedup StringBuilder.
13633
13634 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13635
13636         * dominators.c (mono_compute_natural_loops): Fix detection of
13637         loop body start blocks.
13638
13639         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13640
13641 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13644         #75145.
13645
13646 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13647
13648         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13649
13650 2006-01-25  Martin Baulig  <martin@ximian.com>
13651
13652         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13653         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13654         started to cleanup this file a little bit.
13655
13656 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13657
13658         * mini.c: optimize a codepath frequently happening in generics code.
13659
13660 2006-01-23  Martin Baulig  <martin@ximian.com>
13661
13662         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13663
13664         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13665         functions directly.
13666
13667         * driver.c: debug-debugger.c is only available if
13668         `MONO_DEBUGGER_SUPPORTED' is defined.   
13669
13670 2006-01-23  Martin Baulig  <martin@ximian.com>
13671
13672         * debug-debugger.c: Only enable this on platforms where the Mono
13673         Debugger is working (x86 and x86_64).
13674
13675 2006-01-21  Martin Baulig  <martin@ximian.com>
13676
13677         The Mono Debugger is now using the normal `mono' instead of the
13678         `mono-debugger-mini-wrapper' when executing managed code.
13679
13680         * debug-debugger.c: New file; previously known as
13681         debugger/wrapper/wrapper.c.
13682
13683         * debug-mini.c (mono_init_debugger): Removed.
13684
13685         * driver.c (mono_main): Added new `--inside-mdb' command line
13686         argument which is used when running inside the debugger.
13687
13688 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * liveness.c (mono_analyze_liveness): Remove some unused data
13691         structures.
13692
13693 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13694
13695         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13696
13697 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13698
13699         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13700         depends on implementation details of monobitset.
13701
13702         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13703         Fixes #77271.
13704
13705 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13706
13707         * liveness.c: Update after monobitset changes.
13708
13709 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13712
13713 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13714
13715         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13716
13717         * mini-s390x.c: Remove warning messages.
13718
13719 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13720
13721         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13722
13723 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13724
13725         * generics.2.cs: Add ldelem/stelem_any test.
13726
13727 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13728
13729         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13730
13731 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13732
13733         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13734         
13735 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13736
13737         * generics.2.cs: Reenable vtype tests.
13738
13739         * inssel-x86.brg: Remove an icorrect valuetype rule.
13740
13741 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13742
13743         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13744         initial support for OP_ABS.
13745
13746 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13747
13748         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13749
13750 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13751
13752         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13753         conversion and implement LADD/LSUB.
13754
13755         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13756         architectures.
13757
13758 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13759
13760         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13761
13762         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13763         architectures.
13764
13765 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13766
13767         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13768         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13769         (stack walk problem).
13770
13771 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13772
13773         * aot.c (mono_aot_load_method): Fix a warning.
13774
13775 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13776
13777         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13778
13779 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * iltests.il: Add test for #77148.
13782
13783         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13784         #77148.
13785
13786 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13787
13788         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13789
13790 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13791
13792         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13793         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13794
13795         * basic-long.cs: Add lconv-to-r4/r8 tests.
13796
13797 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13800
13801         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13802         here as on other archs.
13803
13804 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13805
13806         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13807
13808 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13809
13810         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13811         
13812         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13813
13814         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13815         instrument_prolog; Add memory_barrier instruction.
13816
13817 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13818
13819         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13820
13821 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13824
13825         * aliasing.c inssel.brg: Fix warnings.
13826
13827         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13828         could skip initialization of some parts of memory.
13829
13830         * mini.c mini-ia64.c: Fix warnings.
13831
13832         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13833
13834 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13835
13836         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13837         a crash seen on sparc.
13838
13839         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13840         
13841         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13842
13843 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13844
13845         * mini-ops.h: Add s390_backchain instruction
13846
13847         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13848
13849         * cpu-s390.md: Add s390_backchain instruction
13850
13851         * mini-s390.c: Significant ABI changes
13852
13853         * mini-s390.h: Cater for zero length structures
13854
13855 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13856
13857         * mini-s390.c: ABI fixes
13858
13859         * inssel-s390.brg: Remove debug statements
13860
13861         * cpu-s390.md: Fix length of ATOMIC_xx operations
13862
13863 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * basic-float.cs: Add float<->long conversion tests.
13866
13867 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13868
13869         * mini-s390.c: Fix LOCALLOC processing.
13870
13871         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13872
13873 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13874
13875         * iltests.il: Add tests for some opcodes not covered by the other
13876         tests.
13877
13878 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13879
13880         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13881         register loading for Tail processing; Correct trace output.
13882
13883         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13884
13885         * cpu-s390.md: Correct size of jmp instruction. 
13886
13887 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13888
13889         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13890
13891 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13892
13893         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13894           Bring s390 up to current level.
13895
13896 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13897
13898         * generics.2.cs: Disable the newly added tests as they do not work yet.
13899         
13900         * generics.2.cs: Add valuetype tests.
13901
13902 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * basic-long.cs: Add i4->u8 test.
13905
13906         * objects.cs: Add tests for JIT intrinsic.
13907
13908         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13909         optimizations lost by a mistake.
13910
13911 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * basic-long.cs: Remove a test moved to objects.cs.
13914
13915         * arrays.cs: Add more array tests.
13916
13917 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13918
13919         * arrays.cs: Add new tests for multi-dimensional arrays.
13920
13921 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13922
13923         * Makefile.am (test_sources2): Add generics.2.cs.
13924         (EXTRA_DIST): Add test_sources2.
13925
13926 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13927
13928         Support for boxing and unboxing nullable types as well as the
13929         isinst operation on nullables, per the CLI ammendment.
13930
13931         * inssel.brg (CEE_ISINST): Special case for nullable
13932
13933         * mini.c (handle_unbox_nullable): new method
13934         (handle_box): Special case for nullable types
13935         (mono_method_to_ir): Call handle_unbox_nullable in correct
13936         places.
13937
13938         * generics.2.cs: New test suite
13939
13940         * Makefile.am: Support for regression tests with generics.
13941
13942 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13943
13944         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13945         allocated to registers. Fixes #76800.
13946
13947 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13948
13949         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13950
13951 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13954         of platforms.
13955
13956 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13959         objects.cs.
13960
13961         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13962         
13963         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13964 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13965
13966         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13967         single precision before storing to a single precision location.
13968
13969 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13970
13971         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13972
13973 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13976         correct files.
13977
13978         * basic.cs: Remove test_0_byte_compares test which was moved to
13979         objects.cs a long time ago.
13980
13981 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13982
13983         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13984
13985 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13986
13987         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13988         handlers are called.
13989
13990         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13991         throwing code.
13992
13993          * mini-ia64.c: Add support for the throw->branch exception 
13994         optimization.   
13995
13996         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13997
13998 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13999
14000         * mini.c: Enabled "fastpath" deadce :-)
14001         
14002 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14003
14004         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14005         alias analysis pass to support it.
14006         * mini.h: Likewise.
14007         * ssa.c: Likewise.
14008         * liveness.c: Likewise (liveness computation can use aliasing
14009         information to be more accurate).
14010         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14011         moreover made so that "--compile-all" uses the given optimization
14012         flags and not the default ones.
14013         * aliasing.c: Alias analysis (new file).
14014         * aliasing.h: Likewise.
14015         * Makefile.am: added "aliasing.c" and "aliasing.h".
14016         
14017 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14018
14019         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14020         OP_L opcodes.
14021
14022 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14025         fp >= end_of_stack exit condition, as it is not needed, and it might
14026         become true for fp eliminated frames.
14027
14028 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14029
14030         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14031         coded offsets.
14032
14033 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14034
14035         * mini-arm.c: fixed alignment of doubles/longs to match
14036         the C ABI (bug #76635).
14037
14038 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14039
14040         * aot.c: fix compilation with --enable-minimal=aot.
14041
14042 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14043
14044         * mini-arm.c: fixed compatibility with the new
14045         floating point emulator package for compares.
14046
14047 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14048
14049         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14050
14051 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14052
14053         * mini-exceptions.c (print_stack_frame): Output to stderr.
14054         (mono_handle_native_sigsegv): Ditto.
14055
14056 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14057
14058         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14059         OP_LCONV_TO_OVF_I implementation.
14060
14061         * mini-amd64.c: Add support for the throw->branch exception 
14062         optimization.
14063
14064         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14065         when the catch clause catches a more general exception, i.e. Object.
14066
14067 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14068
14069         * cpu-ia64.md: Remove unused opcodes.
14070
14071         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14072         specific defines for architectures defining USE_SIGACTION.
14073
14074         * mini-ia64.c: Fix some warnings.
14075
14076         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14077         version seemed to skip a frame.
14078
14079 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14080
14081         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14082         only calls which are made to native code use this flag.
14083
14084 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14085
14086         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14087         varargs methods as well.
14088         
14089         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14090         which have save_lmf set. Reorganize methods prologs a bit.
14091
14092         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14093         debugger to the proper place.
14094
14095 2005-10-29  Martin Baulig  <martin@ximian.com>
14096
14097         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14098         when running inside the debugger until the debugger has support
14099         for it.
14100
14101 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * mini.h: Fix a warning.
14104
14105 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14106
14107         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14108         we expose publicly, this returns the string.
14109
14110 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14111
14112         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14113         with fp elimination.
14114
14115 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14116
14117         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14118         native stacktrace using the glibc 'backtrace' function if available.
14119
14120 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14121
14122         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14123
14124         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14125         handle SIGSEGVs received while in native code.
14126
14127         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14128         code, call mono_handle_native_sigsegv which will abort the runtime
14129         after printing some diagnostics, instead of converting it into a
14130         confusing NullReferenceException.
14131
14132 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * cpu-pentium.md: Remove unused opcodes.
14135
14136 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14137
14138         * mini-amd64.h (MonoLMF): Add rsp field.
14139
14140         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14141         the lmf too.
14142
14143 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14144
14145         * mini-codegen.c (get_register_spilling): Fix some warnings.
14146
14147 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14148
14149         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14150         elimination during exception handling. Enable fp elimination by
14151         default.
14152
14153         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14154         elimination.
14155
14156 2005-10-16  Martin Baulig  <martin@ximian.com>
14157
14158         * mini-exceptions.c
14159         (mono_debugger_run_finally): New public method for the debugger.
14160
14161 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * debug-mini.c (mono_debug_init_method): Fix warning.
14164
14165         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14166         the 'exname' parameter const to fix some warnings.
14167
14168 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14169
14170         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14171         introduced by the previous patch.
14172
14173 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14174
14175         * basic-float.cs: Add test for precision of float arithmetic.
14176
14177         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14178         when loading/storing single values from/to memory.
14179
14180         * mini.c (mono_jit_compile_method_with_opt): Create the function
14181         pointers in the correct domain.
14182
14183 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14184
14185         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14186         introduced by previous patch.
14187         
14188         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14189         when out_filter_idx is NULL.
14190
14191         * mini-exceptions.c: Don't run filter clauses twice during exception
14192         handling. Fixes #75755.
14193
14194 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * aot.c: Add support for ldflda wrappers.
14197
14198         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14199         #75902.
14200
14201 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14202
14203         * mini.c, mini.h: do not consider exception handlers blocks when
14204         setting up interface variables.
14205
14206 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
14207
14208         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
14209
14210 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
14211
14212         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
14213         causes a regression.
14214
14215         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
14216
14217 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
14218
14219         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
14220         of the OP_P definitions.
14221
14222         * TODO: Add a proposal for dealing with the CEE/OP mess.
14223
14224         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
14225         optimizations from the x86 port.
14226
14227         * cpu-amd64.md: Ditto.
14228
14229         * basic.cs basic-long.cs: Add tests.
14230
14231 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14232
14233         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14234         Patrik Torstensson's implementation of my exception-handling
14235         optimization idea, when the exception object is not used
14236         (bug #62150).
14237
14238 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14239
14240         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14241         of the mul_imm optimizations from the old jit.
14242
14243 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14244
14245         * mini.c, liveness.c: patch by Patrik Torstensson and
14246         Zoltan Varga to improve performance in methods with
14247         exception clauses.
14248
14249 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * driver.c: Remove 'Globalization' entry from --version.
14252
14253 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14254
14255         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14256         there is a profiler interested in JIT events.
14257
14258         * aot.c: Load profile files produced by the AOT profiling module, and
14259         reorder methods based on the profiling info. Add a 'method_order' table
14260         to the AOT file to make mono_aot_find_jit_info work with the reordered
14261         methods.
14262
14263         * mini.h: Bump AOT file version info.
14264
14265 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14266
14267         * mini-arm.h: work around what looks like a gcc bug when optimizations
14268         are enabled.
14269
14270 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14271
14272         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14273         conditionals.  Use ...
14274         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14275
14276 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14277
14278         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14279         to determine the amount of memory to copy when passing valuetypes.
14280
14281         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14282         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14283
14284 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14287         information about aot.
14288
14289 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14290
14291         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14292         macros. This will allow a deadlock debugger to easily be plugged
14293         in.
14294
14295 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14296
14297         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14298
14299 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14300
14301         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14302         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14303         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14304         ($(arch_built)) [CROSS_COMPILING]: Error out.
14305
14306 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * aot.c: Add support for the no_special_static flag for classes.
14309
14310 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14311
14312         * Reapply reverted patches.
14313
14314         * *: Revert r50174 as well.
14315
14316         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14317
14318 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14319
14320         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14321
14322 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14323
14324         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14325         part of the SIG_HANDLER_SIGNATURE.  
14326
14327 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14328
14329         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14330         statistics.
14331
14332         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14333         introduced by previous patch.
14334
14335 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14338         saved registers too.
14339
14340         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14341         upon the information returned by get_call_info ().
14342         
14343         * mini-x86.c (add_float): Fix stack size calculation.
14344         (mono_arch_call_opcode): Rewrite this so it works based up the
14345         information returned by get_call_info ().
14346         (mono_arch_get_this_vret_args): Ditto.
14347
14348 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14349
14350         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14351         in cinfo to determine the registers which need to be used.
14352
14353 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14354
14355         * driver.c (mono_main): Add --server and --desktop flags. 
14356
14357 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14358
14359         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14360         registers as global registers.
14361
14362         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14363         longer needed with the new register allocator.
14364
14365         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14366
14367         * cpu-ia64.md: Remove unused opcodes.
14368         
14369         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14370         
14371 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14372
14373         * cpu-amd64.md: Remove unused opcodes.
14374
14375         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14376         needed with the new register allocator.
14377
14378         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14379         reg-reg moves.
14380
14381 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14382
14383         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14384
14385 2005-09-16  Martin Baulig  <martin@ximian.com>
14386
14387         * exceptions-amd64.c
14388         (throw_exception): Don't call mono_debugger_throw_exception() if
14389         we're a rethrow - see the FIXME in the code.
14390
14391 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14392
14393         * mini.c (mono_init_exceptions): This only works on some architectures.
14394         
14395 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14396
14397         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14398         on ia64.
14399
14400         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14401
14402         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14403         now in mini-exceptions.c.
14404
14405 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14406
14407         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14408         now in mini-exceptions.c.
14409
14410 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14411
14412         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14413         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14414
14415         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14416         code into mini-exceptions.c. Add some assertions to it.
14417
14418 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14419
14420         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14421         (<software@solmersa.com>). Fix as errors on windows.
14422
14423 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14424
14425         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14426         method info into the LMF.
14427
14428 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14429         
14430         * mini-ia64.c: Add proper unwind info for method epilogs.
14431
14432         * exceptions-ia64.c: Add some code to help debugging.
14433         
14434         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14435
14436         * mini-exceptions.c: Fix warning.
14437
14438 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14439
14440         * mini.c: Really fix build.
14441
14442         * mini-x86.c mini-amd64.c: Fix build.
14443
14444 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14445
14446         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14447
14448         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14449         some Interlocked methods as intrinsics.
14450
14451         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14452         for Thread methods as well.
14453
14454         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14455
14456         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14457
14458         * mini-ia64.c mini-x86.c mini-amd64.c 
14459         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14460         OP_MEMORY_BARRIER.
14461         
14462         * mini.c (mono_init_exceptions): Fix build breakage.
14463
14464 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14465
14466         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14467         of instructions. Use the new ia64_unw_op macros for emitting unwind
14468         info.
14469
14470         * mini.c (mono_init_exceptions): Initialize exception handling
14471         related trampolines at startup.
14472
14473 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14474
14475         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14476
14477 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14478
14479         * mini.c: Handle type loading errors gracefully during compilation and
14480         throw the appropriate exception.
14481
14482 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14483
14484         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14485         for the mono binary.
14486
14487 2005-09-09  Martin Baulig  <martin@ximian.com>
14488
14489         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14490         the release.
14491
14492 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14493
14494         * mini-arm.h: use emulation for conv.r.un for the release.
14495
14496 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14497
14498         * mini-arm.c, objects.cs: more fixes and tests for them.
14499
14500 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14501
14502         * mini-arm.c: align structures to at least 4 bytes to be able
14503         to keep our current optimized memcpy.
14504
14505 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14506
14507         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14508
14509 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14510
14511         * mini.c: ignore SIGPIPE.
14512
14513 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14514
14515         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14516
14517         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14518
14519 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14520
14521         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14522
14523 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14524
14525         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14526         exception handling support.
14527         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14528         patch by Brian Koropoff <briank@marakicorp.com>).
14529
14530 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14531
14532         * mini.c: revert another 'optimization' which breaks when
14533         items on the eval stack need to be saved at a basic block end
14534         (bug #75940).
14535
14536 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14537
14538         * jit-icalls.c: for arrays, ensure we always provide
14539         lower bounds.
14540
14541 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14542
14543         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14544         
14545         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14546
14547 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14550         arguments in their original register.
14551
14552 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14553
14554         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14555         memset/memcpy.
14556
14557         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14558         when ssapre is enabled.
14559
14560         * inssel-long.brg: Fix bug in previous patch.
14561
14562         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14563         multiplication by a constant.
14564
14565 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14566
14567         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14568         icc.
14569
14570         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14571         saving registers.
14572
14573 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14574
14575         * inssel-arm.brg: apply changes tested by Brian Koropoff
14576         <briank@marakicorp.com>.
14577
14578 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14581         
14582 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14585         to the same register if dreg is just a base register.
14586         (print_ins): Improve printing of membase opcodes.
14587
14588         * inssel-x86.brg: Add optimized ldind(reg) rules.
14589
14590         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14591
14592 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14593
14594         * mini.c: when running under valgrind, set the stack bottom for
14595         the GC at the actual approximate stack for the app (fixes running
14596         mono with valgrind).
14597
14598 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini.c: do no break at the first valuetype to init found
14601         (fixes bug #75791).
14602
14603 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14604
14605         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14606
14607 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14608
14609         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14610
14611 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14612
14613         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14614
14615 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14616
14617         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14618
14619         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14620         code.
14621
14622         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14623         code.
14624
14625         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14626         methods.
14627
14628 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14629
14630         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14631
14632 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14633
14634         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14635         in the tail recursion optimization.
14636
14637         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14638         debug info into the assembly file.
14639
14640         * iltests.il: Add test for filter regions.
14641
14642         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14643         initial stack of filter regions. Fixes #75755.
14644
14645 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14646
14647         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14648         stack requirements.
14649
14650 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14651
14652         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14653         the check for an already compiled method on non-ia64 platforms.
14654         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14655         proper domain.
14656
14657         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14658
14659         * inssel-x86.brg: Add some optimized call rules.
14660
14661 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14662
14663         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14664         method here.
14665
14666         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14667         mono_arch_patch_delegate_trampoline.
14668
14669         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14670
14671         * mini-trampolines.c: Fix build.
14672
14673         * mini-amd64.h: Add delegate trampolines.
14674
14675         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14676
14677         * inssel-amd64.brg: Add optimized call rules.
14678         
14679         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14680
14681         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14682
14683 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14684
14685         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14686         change.
14687
14688         * mini-ia64.c: Remove LMF fixmes.
14689
14690         * mini-ia64.h: Remove most fields from LMF.
14691
14692         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14693
14694         * mini-trampolines.c: Add support for IA64 function descriptors.
14695
14696         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14697         for IA64 function descriptors.
14698
14699 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14700
14701         * tramp-arm.c: patch the vtable for virtual calls. Added
14702         support code to register/unregister the LMF.
14703         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14704         more LMF work.
14705
14706 2005-08-19  Dick Porter  <dick@ximian.com>
14707
14708         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14709         bit value if needed.
14710
14711 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14712
14713         * mini.c (mini_get_method): Move handling of wrapper data here.
14714
14715         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14716
14717         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14718         virtual.
14719
14720         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14721         bblock->code does not remain empty.
14722
14723 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14724
14725         * arrays.cs: Add regression test for #75832.
14726
14727         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14728         rules. Fixes #75832.
14729
14730         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14731         instruction scheduling.
14732
14733 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14734
14735         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14736
14737 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14738
14739         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14740
14741         * mini-codegen.c: Fix VC build.
14742
14743         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14744
14745 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14746
14747         * mini.h: fix signature for mono_register_opcode_emulation.
14748
14749 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14750
14751         * mini.c: Get rid of most of the helper_sig_... constants using
14752         mono_create_icall_signature ().
14753
14754 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14755
14756         * jit-icalls.c (helper_ldstr): New helper function.
14757
14758         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14759
14760         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14761         throw, load the string using a helper call instead of creating a string object.
14762
14763         * aot.c: Update after LDSTR changes.
14764
14765         * mini.h: Bump AOT file version.
14766         
14767         * aot.c: Save class size info into the AOT file. Print more statistics during
14768         compilation.
14769
14770         * mini.h: Bump AOT file version.
14771
14772         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14773         ordering of disasm cases. Fixes #74957.
14774
14775 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14776
14777         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14778         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14779         the generic code needed for the ARM port.
14780
14781 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14782
14783         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14784         inssel-arm.brg: more ARM features and fixes.
14785
14786 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14787
14788         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14789         ARM port work in progress.
14790
14791 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14792
14793         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14794
14795         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14796
14797         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14798
14799         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14800
14801         * *-ia64.*: Ongoing IA64 work.
14802         
14803         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14804
14805 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14806
14807         * TODO: Remove out-of-data todo stuff.
14808
14809         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14810         dead code.
14811
14812         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14813
14814         * mini.h: Bump corlib version.
14815
14816 2005-07-27  Martin Baulig  <martin@ximian.com>
14817
14818         * mini-codegen.c
14819         (create_copy_ins): Added `const unsigned char *ip' argument; set
14820         `copy->cil_code' from it.
14821
14822 2005-07-27  Martin Baulig  <martin@ximian.com>
14823
14824         * mini-exceptions.c (mono_handle_exception): Don't call
14825         mono_debugger_handle_exception() for filters.
14826
14827 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14828
14829         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14830         as well.
14831
14832 2005-07-26  Martin Baulig  <martin@ximian.com>
14833
14834         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14835
14836         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14837         helper_compile_generic_method() if the method is actually virtual
14838         and non-final.
14839
14840 2005-07-26  Martin Baulig  <martin@ximian.com>
14841
14842         * mini.c
14843         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14844         public; this is now accessed directly by the debugger.
14845         (mono_generic_trampoline_code): Removed.
14846
14847         * debug-mini.c
14848         (mono_debug_init_method): Also add interncalls and wrappers.
14849
14850 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14851
14852         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14853
14854 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14855
14856         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14857
14858 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14859
14860         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14861
14862 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14863
14864         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14865         getting TLS offsets on AMD64 too.
14866
14867 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14868
14869         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14870
14871 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14872
14873         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14874         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14875
14876 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14877
14878         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14879
14880         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14881         to mini.c.
14882
14883         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14884         mono_sparc_is_virtual_call ().
14885         
14886         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14887
14888         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14889         trampoline parameters.
14890
14891         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14892         
14893         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14894         to mono_arch_get_vcall_slot_addr.
14895
14896         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14897         trampoline code.
14898
14899         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14900
14901 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14904
14905 2005-07-19  Martin Baulig  <martin@ximian.com>
14906
14907         * exceptions-amd64.c (throw_exception): Call
14908         mono_debugger_throw_exception() here like we're doing it on i386.
14909
14910 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14911
14912         * mini-ia64.c: Add optimized TLS access support.
14913
14914 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14915
14916         * mini-exceptions.c: Ongoing IA64 work.
14917
14918         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14919
14920         * mini.c: Use the default optimization set when embedding. Fixes
14921         #75194.
14922
14923 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14924
14925         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14926         of trampolines to a separate file.
14927
14928         * mini-trampolines.c: New file.
14929
14930         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14931         separate file.
14932         
14933         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14934         amd64/ia64 code.
14935
14936         * mini-codegen.c: Fix cygwin build.
14937
14938 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14939
14940         * mini.c: Add some minor changes needed by the IA64 port.
14941
14942         * *-ia64.*: Ongoing IA64 work.
14943
14944 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14945
14946         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14947         trampolines into arch-independent and arch-dependent parts.
14948
14949         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14950
14951 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14952
14953         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14954
14955         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14956         the xp-regalloc-branch for amd64.
14957
14958         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14959         xp-regalloc-branch for x86.
14960
14961 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14964
14965 2005-07-06  Martin Baulig  <martin@ximian.com>
14966
14967         * mini.c
14968         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14969         (mono_jit_runtime_invoke): Likewise.
14970
14971 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14972
14973         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14974         on x86 too.
14975         
14976         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14977         without loading their metadata. Reorganize the file format so exception handling+
14978         debug info is kept separate from normal method info. Create MonoJitInfo 
14979         structures for methods lazily.
14980
14981         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14982         loading metadata.
14983         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14984
14985         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14986
14987         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14988         in AOT code.
14989
14990         * mini.h: Bump AOT file version.
14991
14992 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14993
14994         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14995
14996 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14997
14998         * Makefile.am (check-local): Call semdel-wrapper.
14999
15000 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15001
15002         * mini-x86.c: Revert the last change as it seems to break the build..
15003
15004 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15005
15006         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15007         
15008         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15009
15010 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15011
15012         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15013         outside of the macro, so strange stuff doesn't happen with gcc4
15014         (NEW_AOTCONST_TOKEN): Likewise.
15015
15016 2005-06-28  Martin Baulig  <martin@ximian.com>
15017
15018         * mini.c (mini_class_is_system_array): New static method; use this
15019         instead of `klass->parent == mono_defaults.array_class' everywhere
15020         since this also works for the new generic array class.
15021
15022 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15023
15024         * inssel.brg: Remove warnings.
15025
15026 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15027
15028         * mini-ia64.c: Ongoing IA64 work.
15029
15030         * basic-float.cs: Add float->i1 conversion test.
15031
15032         * iltests.il: Add conv.u4 test.
15033
15034 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15035
15036         * inssel-long.brg: Fix bug caused by last change.
15037
15038 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15039
15040         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15041         BSDs.  Allows the x86 JIT to work on OSX86
15042
15043 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15044
15045         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15046         u4->i8 conversion.
15047
15048         * mini-ia64.c: Ongoing IA64 work.
15049
15050 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15051
15052         * mini-ia64.c: Ongoing IA64 work.
15053
15054         * driver.c: Clean up jit_code_hash as well when using --regression.
15055
15056         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15057
15058         * basic-long.cs: Add tests for long->u4 conversion.
15059
15060 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15061
15062         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15063         that we do not depend on undefined C behavior: the order stuff
15064         gets evaluated within an expression. Fixes mono when compiled on
15065         GCC 4.
15066
15067 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15068
15069         * *-ia64.*: Ongoing IA64 work.
15070
15071         * aot.c: Lower memory usage while loading AOT methods.
15072
15073         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15074
15075         * mini.h: Bump AOT file format version.
15076
15077 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15078
15079         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15080
15081 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15082
15083         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15084         not on callee assembly). Fixed some comments.
15085
15086 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15087
15088         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15089         it gets proper disassembly.
15090         (emit_method_info): Remove some dead code.
15091
15092         * mini.c (mini_method_compile): Allways allocate the GOT var in
15093         mono_method_to_ir for emulating opcodes.
15094
15095 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15096
15097         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15098         before freeing the code memory. Fixes #74990.
15099
15100         * objects.cs: Add regression test for #74992.
15101
15102         * liveness.c: Extend live ranges of arguments to the beginning of the
15103         method. Fixes #74992.
15104
15105         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15106         so it points into the faulting instruction.
15107
15108 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15109
15110         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15111
15112         * *-ia64.*: Ongoing IA64 work.
15113
15114         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15115
15116 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15117
15118         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15119
15120         * *-ia64.*: Ongoing IA64 work.
15121
15122 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15123
15124         * basic-long.cs: Add tests for add/sub.ovf.
15125
15126         * basic.cs: Add tests for sub.ovf.
15127
15128         * *-ia64.*: Ongoing IA64 work.
15129
15130 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15131
15132         * *-ia64.*: Ongoing IA64 work.
15133
15134         * basic.cs: Add conv.ovf.i4.un test.
15135
15136 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15137
15138         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15139         
15140 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15141
15142         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15143
15144 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15145
15146         * *-ia64.*: Ongoing IA64 work.
15147
15148 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15149
15150         * trace.[ch]:
15151         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15152
15153 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15154
15155         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15156
15157 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15158
15159         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15160
15161         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15162         of a call is callable by a near call.
15163
15164 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15165
15166         * mini-ia64.c: Ongoing IA64 work.
15167
15168 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15169
15170         * genmdesc.c: Make the generated array non-static.
15171
15172         * inssel-long.brg: Fix LSHR_IMM rule.
15173
15174         * *-ia64.*: Ongoing IA64 work.
15175
15176         * *-ia64.*: Ongoing IA64 work.
15177
15178 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * *-ia64.*: Ongoing IA64 work.
15181
15182         * *-ia64.*: Ongoing IA64 work.
15183         
15184         * mini-ia64.c: Ongoing IA64 work.
15185
15186         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15187
15188 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15189
15190         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15191         
15192         * objects.cs basic-long.cs: Move some tests to objects.cs.
15193
15194 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15195
15196         * *-ia64.*: Ongoing IA64 work.
15197
15198         * iltests.il: Add a new test.
15199
15200         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15201         newobj. Fixes #75042.
15202
15203 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15204
15205         * *-ia64.*: Ongoing IA64 work.
15206         
15207         * *-ia64.*: Ongoing IA64 work.
15208         
15209         * *-ia64.*: Ongoing IA64 work.
15210
15211         * basic.cs objects.cs: Move tests accessing static variables as well.
15212
15213         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
15214
15215 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
15216
15217         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
15218
15219         * driver.c: Always print failed tests.
15220
15221         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
15222         frame pointer.
15223
15224         * *ia64*: Ongoing IA64 work.
15225
15226 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15227
15228         * basic.cs: Add tests for add.ovf. Fix warnings.
15229
15230 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15231
15232         * driver.c (mono_main): Avoid crash if no argument is passed to
15233         --break;  Do not use g_error, but f_printf.   And fix all other
15234         ocurrences of the same crash.
15235
15236 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15237
15238         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15239         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15240         Fixes #74742.
15241
15242 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15243
15244         * *-ia64.*: Add beginnings of IA64 backend.
15245
15246         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15247
15248 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15251         Fixes #74925.
15252
15253         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15254
15255         * mini-amd64.c: Fix a warning.
15256
15257 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15258
15259         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15260         in float_neg. Fixes #74897.
15261
15262         * mini-amd64.c (emit_call): Fix another near call bug.
15263
15264 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15265
15266         * declsec.c: Keep the appdomain information in the structure. Added a 
15267         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15268         value gets overwritten).
15269         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15270         an MonoAppDomain member to MonoSecurityFrame.
15271         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15272         used in the stack walk. Now use a MonoArray which grow (double) when
15273         it gets full.
15274
15275 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15276
15277         * mini.c: Re-enabled runtime cleanup, since running threads should
15278         now properly stop when exiting.
15279
15280 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15281
15282         * mini-codegen.c: New file contaning the arch-independent local
15283         register allocator. Not used by any architectures yet.
15284
15285         * mini.h linear-scan.c: Merge some changes from the 
15286         mini-xp-local-regalloc branch.
15287
15288 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15289
15290         * mini-amd64.c (emit_call): Fix calls to native functions when the
15291         runtime is compiled as a shared library. Fixes #74756.
15292
15293         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15294         on a literal field. Fixes #74751.
15295
15296 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15297
15298         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15299
15300 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15301
15302         * objects.cs: Add missing null casting test.
15303
15304 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15305
15306         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15307         in wrapper methods. Also rename 'address' variable to 'offset'.
15308
15309 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15310
15311         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15312         warnings.
15313         
15314         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15315
15316         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15317         work on windows.
15318
15319 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15320
15321         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15322
15323 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15324
15325         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15326         just the last bytes.
15327
15328 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15329
15330         * aot.c (mono_compile_assembly): Fix warning.
15331
15332         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15333         by the _MSC_VER stuff.
15334
15335 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15336
15337         * inssel-long.brg: Fix #74588.
15338
15339         * cpu-amd64.md: Fix #74591.
15340
15341         * iltests.il: Add new regression tests.
15342
15343 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15344
15345         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15346         valuetype.
15347
15348 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15349
15350         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15351
15352         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15353         from Bill Middleton <flashdict@gmail.com>.
15354
15355 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15356
15357         * arrays.cs: Add new regression test. Fix warnings.
15358
15359 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15360
15361         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15362         and leakage in CKFINITE.
15363
15364         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15365         this to a null op since it is called on amd64 too.
15366
15367         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15368
15369         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15370         body since this is not used on amd64.
15371         
15372         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15373
15374         * mini-amd64.c: Remove obsolete fixmes.
15375
15376         * mini.c (print_method_from_ip): Fix debugging support.
15377
15378 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15379
15380         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15381         so that expressions that don't give much gain are not reduced.
15382         * ssapre.h: Likewise.
15383
15384 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15385
15386         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15387
15388         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15389
15390         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15391
15392 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15393
15394         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15395
15396         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15397
15398 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15399
15400         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15401         stack touching.
15402
15403         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15404
15405         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15406
15407         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15408
15409         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15410         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15411
15412         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15413
15414         * mini-x86.c: Fix up stack overflow handling.   
15415
15416         * exceptions.cs: Add new regression test.
15417
15418 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15419
15420         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15421         mono_jit_thread_attach.
15422
15423         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15424
15425 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15426
15427         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15428         avoid calling constructors using callvirt.
15429
15430         * inssel.brg: Fix #74073.
15431
15432 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15433
15434         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15435         compilation with non-GCC compilers.
15436         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15437         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15438
15439 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15440
15441         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15442         klass->interface_offsets (will likely fix bug#74073).
15443
15444 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15445
15446         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15447
15448 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15449
15450         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15451         to amd64_div_reg_size ().
15452         
15453         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15454
15455 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15456
15457         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15458
15459 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15460
15461         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15462
15463 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15464
15465         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15466         
15467         * mini.c (mono_precompile_assembly): Load and precompile referenced
15468         assemblies as well. Fixes #74015.
15469
15470 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15471
15472         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15473
15474 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15475
15476         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15477         a lot of checks and (anyway) permissions cannot work until corlib is 
15478         loaded.
15479
15480 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15481
15482         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15483
15484 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15485
15486         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15487         calls (fixes bug#72824).
15488
15489 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15490
15491         * mini.c: fix tail recursion elimination (see test in bug#73936).
15492
15493 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15494
15495         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15496         some fp functions in sse2 mode.
15497
15498 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15499
15500         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15501
15502 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15503
15504         * mini.h mini.c: Add mono_get_jit_tls_key ().
15505
15506         * mini-x86.c: Enable fast TLS support on windows.
15507
15508 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15509
15510         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15511         * mini.c: Check for p/invoke method when generating code. If a
15512         p/invoke method, or it's class, isn't decorated with [Suppress
15513         UnmanagedCodeSecurity] then generate code to call System.Security.
15514         UnmanagedDemand (only if the security manager is active).
15515
15516 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15517
15518         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15519         last change as it seems to cause strange crashes.
15520         
15521 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15522
15523         * *.c: handle unsafe function pointers where needed.
15524
15525 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15526
15527         * mini.c (mono_jit_free_method): Remove the fixme too.
15528
15529 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15530
15531         * mini.c: As discussed, make the code actually free the delegate
15532         thunk now, to enable the debugging of delegate problems, use
15533         MONO_DEBUG=1 when running Mono. 
15534
15535         This takes also care of parts of the leaks as seen by Joe.
15536
15537 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15538
15539         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15540         thread_tls_offset calculation.
15541
15542 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15543
15544         * declsec.c: Reworked linkdemand checks for icall. The previous code
15545         was using the declaration code (untrusted) and didn't work as expected
15546         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15547         specific case.
15548
15549 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15550
15551         * iltests.il: Add new localloc test.
15552
15553         * mini-amd64.c: Handle large stack allocations the same way as on
15554         windows if stack overflow handling is working.
15555         
15556         * mini-amd64.c: Allocate the signal stack using mmap.
15557
15558         * mini.c (sigsegv_signal_handler): Fix reading of context.
15559
15560         * mini-exceptions.c: Fix up stack overflow handling.
15561
15562         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15563
15564         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15565
15566         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15567
15568         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15569
15570         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15571         tramp_init functions as they are no longer needed.
15572
15573 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15574
15575         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15576         
15577         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15578
15579         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15580         
15581         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15582         support that now.
15583
15584         * mini-ops.h: Add OP_LMUL_IMM.
15585
15586         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15587         long mul/div opcodes as intrinsic.
15588
15589         * mini-amd64.c (emit_call): Handle the case when the callee might be
15590         an AOT method.
15591
15592 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15593
15594         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15595         extra safe.
15596         
15597         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15598
15599         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15600
15601 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15602
15603         * mini.c (mono_codegen): Don't leak here, to help people running
15604         monogrind.
15605
15606 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15607
15608         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15609         conversions in sse2 mode.
15610
15611         * basic-float.cs: Add regression test.
15612         
15613         * mini-amd64.c: Reenable sse2.
15614
15615 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15616
15617         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15618
15619 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15620
15621         * driver.c: Copyright text should include 2005.
15622         
15623 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15624
15625         * cpu-amd64.md (load_membase): Fix more max lengths.
15626
15627 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * cpu-amd64.md (load_membase): Fix max length.
15630
15631         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15632
15633         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15634
15635         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15636         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15637
15638         * basic-float.cs: Add rounding regression test.
15639
15640         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15641
15642 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15643
15644         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15645         structures in registers for pinvoke wrappers.
15646
15647 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15648
15649         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15650
15651 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15652
15653         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15654         wrapper to mono_jit_thread_attach.
15655
15656         * mini.c (mini_jit_thread_attach): New jit icall.
15657
15658         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15659         native->managed wrappers.
15660
15661         * exceptions.cs: Add new regression test.
15662
15663         * mini.c (optimize_branches): Check regions in the cbranch to throw
15664         block case as well. Fixes #73242.
15665
15666 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15667
15668         * mini.c: thread safety fixes.
15669
15670 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15673         patching stuff, since delegates use jump trampolines so there is
15674         no caller.
15675
15676         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15677         jump trampolines.
15678         
15679         * tramp-amd64.c: Fix build.
15680
15681         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15682         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15683
15684         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15685         Rename this to mono_arch....
15686         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15687
15688         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15689
15690         * mini-amd64.c (emit_call): If both the caller and the callee is
15691         guaranteed to have 32 bit addresses, emit a normal call.
15692
15693         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15694
15695         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15696         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15697         method_ptr inside delegates.
15698
15699 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15700
15701         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15702         invalidated. Fixes #73001.
15703
15704         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15705
15706         * mini-x86.c: Only use stdcall for pinvokes on windows.
15707
15708 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15709
15710         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15711         * mini-x86.c: remove unreliable __thread var offset detection,
15712         use the correct accessors and enable by default.
15713
15714 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15715
15716         * mini.c (mono_jit_free_method): Fix memory leak.
15717
15718 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15719
15720         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15721
15722 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * cpu-amd64.md: Fix lengths of atomic opcodes.
15725
15726 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15727
15728         * driver.c: try to not imply using ICU is any good.
15729
15730 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15731
15732         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15733         functions as inline ops.
15734
15735         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15736         some Interlocked functions as inline ops.
15737
15738         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15739
15740         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15741
15742         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15743
15744         * mini.c: Add support for OP_NOT_TAKEN.
15745
15746         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15747         structures in registers for pinvoke wrappers.
15748
15749         * mini-amd64.c: Fix warnings.
15750
15751 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15752
15753         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15754
15755         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15756
15757         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15758         address instead of loading the address from it.
15759
15760         * mini-x86.c: Add support for returning small structs in registers
15761         on Win32. Fixes part of #70864.
15762         
15763 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15764
15765         * trace.c (get_token): Improve error checking.
15766
15767 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15768
15769         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15770
15771 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15772  
15773         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15774         it can be reused for MonoClass.
15775         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15776         _LINKDEMAND.
15777
15778 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15779
15780         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15781         instead of a MonoReflectionMethod. The method information wasn't used
15782         when displaying SecurityException details (but will be now).
15783
15784 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15785
15786         * Makefile.am : windows build fix.
15787
15788 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15789
15790         * iltests.il: Add new regression test.
15791
15792         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15793         #72522.
15794
15795 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15796  
15797         * mini.c: Moved linkdemand check into helper function check_linkdemand
15798         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15799         LDFTN, LDVIRTFTN).
15800
15801 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15802
15803         * declsec.c: Added statistics counter for different kinds of 
15804         LinkDemands.
15805         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15806         (and commented) declaration.
15807         * mini.c: Added statistics counter for security Demand code 
15808         generation. Added display of security statistics.
15809
15810 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15811
15812         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15813         Fix compilation errors under gcc-2.95.
15814
15815 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15816
15817         * mini.c, driver.c: Use the new jit trampoline hashtable
15818
15819 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15822
15823 2005-02-11  Martin Baulig  <martin@ximian.com>
15824
15825         * debug-mini.c (mono_debug_close_method): Free the line number array.
15826
15827 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15828
15829         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15830         icalls.
15831
15832         * mini.h: Bump AOT file format version. 
15833
15834 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15835
15836         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15837         APTC and P/Invoke.
15838         * declsec.h: Added macros to get/set lazyly initialized security 
15839         informations about assemblies. Added new enum for different type of
15840         possible LinkDemand violation. Added function to check LinkDemands.
15841         * mini.h: Added a field to MonoCompile to hold any security violation
15842         detected when JITting a method (so it can be thrown later).
15843         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15844         and CEE_CALLVIRT. Added code to throw exception at the end of
15845         mini_method_compile (note: the exception is unhandled right now).
15846
15847 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15848
15849         * mini.c, jit-icalls.c: use the managed implementation of
15850         memset for initobj and memset, to avoid managed <-> unmanaged
15851         transitions.
15852
15853 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15854
15855         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15856         optimization if it would need a GOT var.
15857
15858         * basic.cs: Add tests for constant propagation and switch statements.
15859
15860         * ssa.c: Fix out-of-range constant propagation and switch statements.
15861
15862 2005-02-09    <vargaz@freemail.hu>
15863
15864         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15865
15866 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15867
15868         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15869
15870 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15871
15872         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15873
15874 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15875
15876         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15877         arithmetic operations.
15878
15879 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15880
15881         * mini-ppc.c: add a workaround for broken user code that
15882         DllImports vararg functions with non-vararg signatures.
15883
15884 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15885
15886         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15887         meaningfull error message for assemblies written in Managed C++.
15888
15889         * tramp-amd64.c mini-amd64.h: Add support for 
15890         create_trampoline_from_token ().
15891
15892         * aot.c mini-x86.c abcremoval.c: Applied patch from
15893         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15894
15895 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15896
15897         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15898         which takes a MonoImage/token as parameter instead of a MonoMethod.
15899
15900         * aot.c: Use the new trampoline for initializing vtables.
15901
15902         * aot.c: Add support for ldfld/stfld_remote wrappers.
15903
15904         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15905         rules for compare <MEM>, IMM.
15906
15907         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15908
15909         * aot.c: Handle inherited finalizers correctly.
15910
15911 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * inssel.brg (stmt): Add a missing _setup_... ().
15914
15915         * aot.c: Save some parts of the class state to the AOT file and use it
15916         to recompute that state when a class is initialized.
15917
15918         * mini.c: Install AOT hooks into the runtime.
15919
15920         * mini.h: Bump AOT file format version.
15921         
15922         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15923         Fixes #72148.
15924
15925         * iltests.il: Add new test.
15926
15927 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15928
15929         * mini.c: fix typo.
15930
15931 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15932
15933         * mini.c: setup the statistical profiler in the thread attach
15934         callback to cope with the new single thread code.
15935
15936 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15937
15938         * mini-ppc.c: ensure we have enough room for the profiler
15939         calls (fixed bug#72084).
15940
15941 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15942
15943         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15944         it.
15945
15946 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15947
15948         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15949
15950 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15951
15952         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15953         to succesfully execute parrotbench).
15954         * ssapre.h: Likewise.
15955
15956 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15957
15958         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15959         variable for stores to method arguments (fixes a SSAPRE issue).
15960
15961 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini.c: handle value types in dup, fixes gen-112.cs.
15964
15965 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15966
15967         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15968         sequence for calls in dynamic methods to avoid thunks.
15969
15970 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15971
15972         * mini.c: correctly remove dynamic methods from the hashtable.
15973
15974 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15975
15976         * driver.c: Disabled SSAPRE until fix the bug that appears
15977         in IronPython's parrotbench.
15978
15979 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15980
15981         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15982
15983         * mini.c (mono_method_to_ir): Revert the previous change.
15984         
15985         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15986         when AOT compiling.
15987
15988         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15989         mono_jit_info_table_find () etc. when running under valgrind.
15990
15991         * inssel.brg: Fix warnings.
15992
15993         * mini-exceptions.c: Fix warnings.
15994
15995 2005-01-31  Martin Baulig  <martin@ximian.com>
15996
15997         * driver.c (compile_all_methods_thread_main): Don't try to compile
15998         generic methods or anything which has type parameters.
15999
16000 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16001
16002         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16003
16004         * TestDriver.cs: Add --verbose flags.
16005
16006         * graph.c ssa.c: Fix 64 bit warnings.
16007         
16008         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16009         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16010         Fix 64 bit warnings.
16011
16012         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16013         variable not spotted by gcc.
16014         
16015         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16016         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16017         X86_COMPARE_MEMBASE opcodes.
16018
16019         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16020
16021 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16022
16023         * *: MonoMethod->signature might be NULL now. You *MUST* use
16024         mono_method_signature.
16025
16026 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16027
16028         * driver.c (compile_all_methods_thread_main): Compile the methods
16029         without invoking cctors.
16030
16031 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16032
16033         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16034         * basic-calls.cs: test for the above.
16035
16036 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16039         MonoJitInfo changes.
16040
16041 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16042
16043         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16044         eagerly if it contains dynamic methods.
16045         
16046         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16047
16048         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16049         trace, it is now computed by an icall from trace_ips.
16050         
16051         * mini-exceptions.c: Fix a warning.
16052
16053 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16054
16055         * mini-exceptions.c: don't bother getting stack trace info if
16056         it's not going to be used.
16057
16058 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16059
16060         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16061         ssapre-mini-ops.h.
16062
16063 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16064
16065         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16066
16067         * aot.c: Avoid calling mono_method_get_header () if not needed.
16068
16069         * mini.h: Bump AOT file format version.
16070         
16071         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16072
16073         * mini.c (mono_print_tree): Print more info for calls.
16074
16075 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16076
16077         * declsec.h: Remove warning by adding missing include for marshal.h
16078
16079 2005-01-26  Martin Baulig  <martin@ximian.com>
16080
16081         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16082         `ip' twice.
16083
16084 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16085
16086         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16087         flags.
16088
16089         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16090
16091         * aot.c (mono_compile_assembly): Fix a warning.
16092
16093 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16094
16095         * declsec.c: Look for security attributes on the original MonoMethod 
16096         (and not the wrapped one). This fix permissions on icalls.
16097
16098 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16099
16100         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16101
16102         * mini.c (mono_allocate_stack_slots): Add a fixme.
16103
16104         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16105
16106 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16107
16108         * inssel.brg: optimize casts of sealed types (more
16109         optimizations waiting for fixes in remoting).
16110
16111 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16112
16113         * inssel.brg (stmt): Add another dummy rule.
16114
16115         * driver.c: Fix warnings.
16116
16117         * driver.c (mono_main): If running under valgrind, instruct glib to use
16118         the system allocation functions so valgrind can track the memory
16119         allocated by the g_... functions.
16120
16121         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16122
16123         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16124
16125         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16126
16127         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16128         variables in try regions.
16129
16130         * mini.c (mini_method_compile): Don't disable optimizations on large
16131         methods when AOT compiling.
16132
16133         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16134         allocate stack slots. Not yet used.
16135
16136 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16137
16138         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16139
16140 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16141
16142         * mini-ppc.c: make the branch info relative as the code
16143         buffer can be reallocated.
16144
16145 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16146
16147         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16148         * driver.c: Removed the AOT/security restriction. Now initialize the
16149         security manager (in metadata) if --security is used.
16150         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16151         rather than the pointer to declarative security, when AOT is used.
16152
16153 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16154
16155         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16156         basic blocks, reduced intrinsic exception throwing code size.
16157
16158 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16159
16160         * driver.c (mini_usage): Reorder the usage screen.
16161
16162 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * mini.c (mono_resolve_patch_target): Fix warning.
16165
16166 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16167
16168         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16169         previous patch.
16170
16171         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16172
16173         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16174         breaks the amd64 build.
16175
16176         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16177         register allocation. Fixes #71454.
16178
16179         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16180
16181         * arrays.cs: Add new regression test.   
16182
16183 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16184
16185         * ssapre.c: Turned usage of snprintf to GString.
16186         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16187         (I left it on by mistake in my previous commit).
16188
16189 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16190
16191         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16192         on cond branch optimization (fixes bug# 71515).
16193
16194 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16195
16196         * abcremoval.c: Fixed bug 71062.
16197         * abcremoval.h: Likewise.
16198
16199 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16200
16201         * mini.c: Added a new functionality to optimize_branches, the removal
16202         of useless basic blocks, and fixed some problem in the removal of
16203         critical edges; some utility functions added for both purposes.
16204         * ssapre.c: Added complex expression support, and fixed bug 70637.
16205         * ssapre.h: Likewise.
16206         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
16207         enabled in SSAPRE.
16208         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16209         * driver.c: Re-enabled SSAPRE.
16210
16211 2005-01-19  Martin Baulig  <martin@ximian.com>
16212
16213         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
16214         the result of mono_get_method_constrained().
16215
16216 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
16217
16218         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
16219         manager.
16220
16221 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
16222
16223         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
16224         be detected.  Fixes #59296.
16225
16226 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16227
16228         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16229         which can happen. Fixes #71361.
16230
16231 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16232
16233         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16234         manager.
16235
16236 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16237
16238         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16239         appdomain-unload.exe to fail.
16240         
16241         * mini.c: Fix some memory leaks.
16242
16243 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16244
16245         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16246         Fixed bug and sped up some codepaths.
16247
16248 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16249
16250         * mini.c: Fix some memory leaks.
16251
16252         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16253         conversion.
16254
16255         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16256
16257         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16258         #71320.
16259
16260         * iltests.il: Add regression test for #71320.
16261
16262 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16263
16264         * mini.c (mono_codegen): Fix installation of profiler hooks.
16265
16266         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16267
16268 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16269
16270         * mini.h, mini.c, cfold.c: optimize access to enum
16271         readonly fields, too. Eval conditional branches if possible
16272         to perform unreachable code removal in more cases.
16273
16274 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16275
16276         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16277
16278         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16279         code manager.
16280
16281         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16282         WinXP DEP. Fixes #71244.
16283
16284 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16287
16288 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16289
16290         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16291
16292 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16293
16294         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16295         changes.
16296
16297         * mini.h: Bump AOT version.
16298
16299         * mini.h (MonoCompile): Change exvar to a hash table.
16300
16301         * mini.c: Allocate a separate exvar for each handler block.
16302
16303         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16304
16305         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16306         ex var with the pending exception and only throw if the two are equal.
16307         Fixes #68552.
16308         
16309         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16310
16311         * mini-x86.c: Fix warnings.
16312
16313         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16314         used by all the ports now.
16315
16316         * aot.c: Add write-symbols and save-temps options.
16317
16318 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16319
16320         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16321
16322 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16323
16324         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16325         operations.
16326
16327         * tramp-s390.c: Check vtable slot belongs to the domain.
16328
16329         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16330         as per other platforms.
16331
16332         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16333
16334 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16335
16336         * driver.c: we don't run the Main() code in a subthread anymore.
16337
16338 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16339
16340         * mini.c: added experimental rtc support in the statistical
16341         profiler: if the user has the permission, more accurate statistics
16342         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16343         The MONO_RTC value must be restricted to what the linux rtc allows:
16344         power of two from 64 to 8192 Hz.
16345
16346 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16347
16348         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16349
16350 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16351
16352         * mini-ppc.c: better icache flush for smp.
16353
16354 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16355
16356         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16357
16358         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16359         amd64 port, not yet used.
16360
16361 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16362
16363         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16364         a struct type.
16365
16366 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16367
16368         * driver.c: Added --security option to activate the security manager.
16369         Right now this will allow code generation for declarative demands and
16370         is disabled when AOT is specified.
16371         * mini.c: Add code generation for declarative security demands.
16372         * mini.h: Add mono_use_security_manager as an extern gboolean.
16373
16374 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16375
16376         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16377         emitting more dense assembly code.
16378
16379         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16380         exception throwing stuff.
16381
16382 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16383
16384         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16385         dead code.
16386
16387         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16388         left in by mistake.
16389
16390         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16391         fixed.
16392
16393         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16394
16395         * tramp-*.c: Only patch vtable slots if the object is in the current
16396         domain. Fixes appdomain-unload.exe.
16397
16398         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16399         
16400         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16401         x86 branch.
16402
16403 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16404
16405         * mini.c (reverse_branch_op): New helper function.
16406
16407         * mini.c (optimize_branches): Run the new optimization only on 
16408         platforms which support it. Also reverse all kinds of branches.
16409
16410         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16411
16412         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16413         a throw statement.
16414
16415         * mini.c (optimize_branches): Reverse not-equals branches if the false
16416         bblock is a throw. This happens a lot of time with argument checking in
16417         corlib.
16418
16419         * mini.c (mono_codegen): Add support for placing basic blocks after
16420         the function epilogue.
16421
16422         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16423         function epilogue.
16424         
16425 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16426
16427         * mini.c (setup_stat_profiler): Only set this up if the platform
16428         supports ITIMER_PROF.
16429
16430 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16431
16432         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16433         previous patch.
16434
16435         * inssel.brg: Fix a warning.
16436
16437 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16438
16439         * mini.c: added support for statistical profiler 
16440         (run with: --profile=default:stat).
16441
16442 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16443
16444         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16445
16446         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16447
16448         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16449         related to global registers from the amd64 port.
16450
16451 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16452
16453         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16454
16455         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16456         with global registers.
16457         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16458
16459         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16460
16461 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * debug-mini.c (encode_value): Fix off-by-one.
16464
16465         * aot.c (encode_value): Likewise.
16466
16467         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16468
16469 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16470
16471         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16472         AOT.
16473
16474         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16475         
16476         * aot.c (emit_method_info): Increase size of temp buffer.
16477
16478         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16479         the AOT case.
16480
16481 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16482
16483         * aot.c (emit_method_info): Fix build.
16484         
16485         * aot.c: Further rework of the AOT file format to reduce the size of
16486         the method info data.
16487
16488         * mini.h: Bump AOT file format version.
16489
16490 2004-12-27  Martin Baulig  <martin@ximian.com>
16491
16492         * mini.c (mini_get_method): New static method; call
16493         mono_get_method_full() and mono_get_inflated_method().
16494         (mono_method_to_ir): Use mini_get_method() instead of
16495         mono_get_method_full(). 
16496
16497 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16498
16499         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16500
16501 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16502
16503         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16504
16505         * inssel-amd64.brg: Add some optimization rules.
16506
16507 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16508
16509         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16510         standard not GC'd stuff is fine.
16511
16512 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16513
16514         * aot.c: Rework the AOT file format to get rid of most of the global
16515         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16516
16517         * mini.h: Bump AOT file format version.
16518         
16519 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * mini.h: Bump AOT file format version.
16522
16523         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16524         address is inside a GOT.
16525
16526         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16527
16528         * cpu-pentium.md: Increase the maximum size of some instructions which
16529         might involve a got access.
16530         
16531         * mini.c (get_method_from_ip): Another debug helper function.
16532
16533         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16534         when got var accesses are created during the decompose phase.
16535
16536         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16537
16538         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16539         argument mini_compile_method and to MonoCompile, and use this to
16540         determine whenever a given method is compiled for AOT. This allows the
16541         other methods compiled during AOT compilation to be free of AOT stuff,
16542         so the backends does not need to add special support for them by
16543         creating a fake GOT etc.
16544
16545         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16546         longer needed.
16547
16548 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16549
16550         * mini.c (mono_method_to_ir): It turns out that some of the
16551         x-appdomain wrappers are lax with types, so just ignore this for
16552         all wrappers.
16553
16554         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16555         at the vtable->klass. If it is non-shared code we can just use the
16556         vtable.
16557
16558 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16559
16560         * mini-ppc.c: access MonoDomain from tls, too.
16561
16562 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16563
16564         * declsec.c: Removed unused variable (and related warning ;-)
16565
16566 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16567
16568         * iltests.il: New test for LDELEMA on an array of ref types.
16569
16570         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16571         all ldelema's on reftypes.
16572         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16573         it was the wrong place to put it.
16574
16575         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16576         register to pop to make this cleaner, at the request of Paolo.
16577
16578 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16579
16580         * mini-ops.h (OP_GETHASHCODE): New op.
16581
16582         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16583
16584         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16585         operation.
16586
16587         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16588         by 25%.
16589         
16590         * mini-x86.c (mono_arch_output_basic_block): Rather than
16591
16592         add ebp, 4
16593
16594         Emit
16595
16596         pop edx
16597
16598         The first is 3 bytes while the second is 1. This saves 36 kb on
16599         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16600         see a small boost because of icache locality.
16601
16602         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16603
16604 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16605
16606         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16607         started code sharing with the generic code.
16608
16609 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16610
16611         * mini-ppc.c, cpu-g4.md: added code for direct access to
16612         tls data slots.
16613
16614 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16615
16616         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16617          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16618         to OP_TLS_GET.
16619
16620 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16621
16622         * declsec.c|h: Added functions to cache the declarative stack modifiers
16623         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16624         structure.
16625         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16626         created. Register internal calls for System.Security.SecurityFrame::
16627         _GetSecurityFrame and _GetSecurityStack.
16628         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16629         the definitions for the new stack walk/callback mechanism.
16630         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16631         first security frame for LinkDemands and InheritanceDemands) and
16632         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16633         from lupus.
16634         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16635         walk initialization (lupus).
16636
16637 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16638
16639         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16640         idiom.
16641         (handle_loaded_temps): Do not create a temporary variable for
16642         things that we know are temps. They will never be modified.
16643         (mono_spill_call): Set MONO_INST_IS_TEMP
16644         (mono_emulate_opcode): ditto
16645         (emit_tree): ditto
16646         (mono_method_to_ir.CEE_DUP): ditto
16647
16648 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16649
16650         * mini.c (type_to_eval_stack_type): Make this handle the void type
16651         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16652         (emit_tree): use ip_in_bb to special case some common idioms
16653         Update all callers to pass in the IP.
16654         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16655
16656         This gives us a nice 2% speedup in mcs bootstrap.
16657
16658         * mini-x86.c (peephole_pass): Peephole pass to make
16659         mov  [foo], eax
16660         push [foo]
16661
16662         into
16663
16664         mov [foo], eax
16665         push eax
16666
16667         * mini.c (ip_in_bb): new method.
16668         (mono_method_to_ir): use this method rather than doing the hash
16669         lookup ourselves.
16670
16671         * linear-scan.c (mono_linear_scan): When expiring actives, you
16672         don't need to keep around variables that expire on this
16673         instruction. This makes it so that:
16674              a = b + 1
16675         will turn into:
16676              store (ebx add (ebx, 1))
16677         which will become
16678              add ebx, 1
16679
16680 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16681
16682         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16683         combination to avoid doing two copies. Fix up problems with previous
16684         patch.
16685
16686         * mini.c: Fix 64 bit warnings.
16687
16688         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16689
16690 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16691
16692         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16693         changes from the x86 code.
16694
16695         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16696
16697 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16698
16699         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16700         throwing code to reduce its size, unify the AOT and non-aot code and 
16701         get rid of relocations in the AOT case.
16702
16703         * mini-x86.h mini.c exceptions-x86.c 
16704         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16705         raise corlib exceptions which doesn't require relocations in the 
16706         caller.
16707
16708         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16709
16710 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16711
16712         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16713         needed.
16714
16715         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16716         in the AOT case.
16717
16718 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16719
16720         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16721         with add function when used from Inc/dec atomic 
16722         functions. Re-enabled optimization on x86.
16723         * mini-ops.h: renamed atomic_add functions to
16724         allow _add to match the Interlocked::Add and
16725         _add_next to match Interlocked::Inc/Dec.
16726
16727 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16728
16729         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16730         linking of BBs to the end BB, and enabled SSAPRE also with
16731         consprop and copyprop (which was prevented by that bug).
16732
16733 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16734
16735         * mini-x86.c: disabling the Interlocked optimizing code. 
16736
16737 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16738
16739         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16740         file version check.
16741         
16742 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16743
16744         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16745         interlocked optimization due lack of support on x86, rewrote 
16746         exchange to take into account that base may be in eax.
16747         
16748         xsp works again; activated Interlocked optimizing code.
16749         
16750 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16751
16752         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16753
16754 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini-ops.h: Add new opcodes.
16757
16758         * mini.h: Add new patch types. Add got_var to MonoCompile.
16759
16760         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16761         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16762         make it work with all kinds of patchable code.
16763
16764         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16765         address of the GOT, and referencing entries in the GOT.
16766
16767         * mini.c: Add code to load the GOT address if needed by an opcode.
16768
16769         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16770         independent AOT code on the x86 using an elf-style Global Offset Table.
16771
16772 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16773
16774         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16775
16776 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16777
16778         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16779         when running xsp.
16780
16781 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16782
16783         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16784         of Interlocked:Increment/Decrement/Add as inline ops.
16785         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16786
16787 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16788
16789         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16790         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16791
16792 2004-12-12  Duncan Mak  <duncan@ximian.com>
16793
16794         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16795         again. `patch_info->table_size' is no longer valid after Zoltan's
16796         commit #37636.
16797
16798 2004-12-12  Martin Baulig  <martin@ximian.com>
16799
16800         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16801         if we are the "real" method, ie. not an inlined method inside it.
16802
16803 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16804
16805         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16806         before we look in the special fields table. This fixes
16807         ../tests/thread-static-init.cs.
16808
16809 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16810
16811         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16812         for Array get_Rank and get_Length. Fixes bug #70465.
16813
16814 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16815
16816         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16817         separate structure to reduce the size of MonoJumpInfo.
16818
16819 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16820
16821         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16822
16823 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16824
16825         * mini.c (mini_get_inst_for_method): Changed to allow ports
16826         to return a MonoInst instead of opcode 
16827         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16828         
16829         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16830         Allow ports to return a created MonoInst instead of op-code, will enable
16831         new optimizations.
16832         (renamed mini_get_opcode_for_method to better reflected the functionality)
16833
16834 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16835
16836         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16837
16838 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16839
16840         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16841         Fixes #69985.
16842
16843 2004-12-08  Martin Baulig  <martin@ximian.com>
16844
16845         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16846         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16847
16848 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16849
16850         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16851         correctly.
16852
16853         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16854         arithmetic.
16855
16856 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16857
16858         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16859
16860 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16863         bug introduced by the previous patch.
16864
16865 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16866
16867         * mini-ppc.c, objectc.cs: handle large structs passed by value
16868         (fixes bug #69972).
16869
16870 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16871
16872         * mini-ppc.c: OP_ARGLIST implementation from
16873         Geoff Norton  <gnorton@customerdna.com>.
16874
16875 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16876
16877         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16878         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16879
16880 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16881
16882         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16883
16884 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16885
16886         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16887         support.
16888
16889 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16890
16891         * mini-sparc.c: Zero out localled-ed memory.
16892
16893         * iltests.il: Add tests for zeroing out localloc-ed memory.
16894
16895 2004-12-04  Martin Baulig  <martin@ximian.com>
16896
16897         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16898         mono_method_get_signature_full().       
16899
16900 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16901
16902         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16903         and some utility functions (always for SSAPRE), integrated SSAPRE.
16904         * mini.h: Likewise.
16905         * driver.c: Added ssapre option.
16906         * ssa.c: Small fix on OP_ARG handling.
16907         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16908         * Makefile.am: Likewise.
16909
16910 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16911
16912         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16913         now in the xp code.
16914
16915         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16916         icall.
16917
16918 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16919
16920         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16921         
16922         * cpu-s390.md : Increase instruction length of oparglist.
16923
16924         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16925
16926 2004-11-30  Martin Baulig  <martin@ximian.com>
16927
16928         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16929         virtual generic methods.  We call a special helper_compile_generic_method()
16930         icall to retrieve the method from the vtable, inflate and compile
16931         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16932
16933         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16934
16935 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16936
16937         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16938
16939 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16940
16941         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16942         Fixes #69929.
16943
16944 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16945
16946         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16947         platforms with PIC aot.
16948
16949 2004-11-28  Martin Baulig  <martin@ximian.com>
16950
16951         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16952         Fixes gen-112.cs.
16953
16954 2004-11-28  Martin Baulig  <martin@ximian.com>
16955
16956         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16957         the result of mono_type_get_underlying_type() to check whether
16958         we're byref.
16959
16960 2004-11-26  Martin Baulig  <martin@ximian.com>
16961
16962         * mini.c
16963         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16964         in the g_assert().
16965
16966 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16967
16968         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16969         the same way as the other arguments so they won't get clobbered.
16970
16971         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16972         calls through R11 since it is clobbered by the trampoline code.
16973
16974 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16975
16976         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16977         pick up in-tree mscorlib.dll.
16978
16979 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16980
16981         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16982
16983         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16984         runtime data/code are now stored in a table similar to the GOT in ELF. 
16985         This allows the code itself to be position independent.
16986
16987         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16988         loading changes.
16989
16990         * aot.c: Attach ELF type (object/function) directives to all global
16991         symbols.
16992
16993         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16994
16995         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16996
16997         * mini-amd64.h: Turn on PIC AOT code.
16998
16999         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17000         returning the offset within an OP_AOTCONST instruction where the GOT
17001         offset needs to be added.
17002
17003         * mini.h: Bump AOT file format version.
17004
17005 2004-11-25  Martin Baulig  <martin@ximian.com>
17006
17007         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17008         uninflated generic methods.
17009
17010 2004-11-25  Martin Baulig  <martin@ximian.com>
17011
17012         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17013
17014 2004-11-24  Martin Baulig  <martin@ximian.com>
17015
17016         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17017         original klass (this only applies for generic instances).
17018
17019 2004-11-24  Martin Baulig  <martin@ximian.com>
17020
17021         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17022         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17023         that array).
17024
17025 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17026
17027         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17028         localloc. Fixes #69678.
17029
17030         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17031         
17032 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17033
17034         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17035         used SSE registers on pinvoke calls. Fixes #69774.
17036
17037 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17038
17039         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17040         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17041
17042 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17043
17044         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17045         Refer directly to the mcs/ tree.
17046
17047 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17048
17049         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17050         Check if a trampoline for a synchronized method is required. 
17051
17052 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17053
17054         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17055         with localloc if needed. Throe arithmetric exception in
17056         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17057         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17058
17059 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17060
17061         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17062         types before switching on type.  Fixes #69622.
17063
17064 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17065
17066         * Makefile.am (check-local): New.  Integrate into 'make check'.
17067         (MCS,RUNTIME): Define using in-tree mono and mcs.
17068         (ILASM): New.
17069         (%.exe): Use $(ILASM).
17070
17071 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17072
17073         * mini-ppc.c: adjust initial prolog size (bug #69691).
17074
17075 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17076
17077         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17078         #69664.
17079
17080 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17081
17082         * Makefile.am (clean-local): Rename from 'clean'.
17083
17084 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17085
17086         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17087         to mono_arch_is_int_overflow. 
17088         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17089         SIGFPE events.
17090
17091 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17092
17093         * declsec.c|h: New files to support declarative security attributes.
17094         Added function to check if a method has (applicable) security.
17095         * mini.c|h: Add check for declarative security attributes in
17096         mono_method_check_inlining.
17097         * Makefile.am: Added declsec.c and declsec.h to the build.
17098
17099 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17100
17101         * mini.c, mini.h: update to keep dynamic code info per-domain.
17102
17103 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17104
17105         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17106         (mini_init): Get rid of it from here too.
17107
17108 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17109
17110         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17111         implemented OP_RETHROW (patch by Geoff Norton
17112         <gnorton@customerdna.com>).
17113
17114 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17115
17116         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17117         between appdomains.  Fixes appdomain-unload on PPC.
17118
17119 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17120
17121         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17122         mini-exceptions.c: handle the new wrapper types.
17123         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17124         token value as a MonoClass* when compiling a wrapper.
17125         mono_jit_create_remoting_trampoline now takes an additional
17126         MonoRemotingTarget parameter.
17127         
17128 2004-11-10  Martin Baulig  <martin@localhost>
17129
17130         * mini.c (mono_method_to_ir): Use `generic_container->context'
17131         rather than creating a new one.
17132
17133 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17134
17135         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17136
17137         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17138
17139 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17142         the experimental aot cache stuff.
17143
17144 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17145
17146         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17147         mini-exceptions.c: update to exception clause structure changes.
17148
17149 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17150
17151         * exceptions-x86.c (throw_exception): Fix warnings.
17152
17153         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17154         for OP_RETHROW.
17155
17156 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17157
17158         * exceptions-sparc.c (get_throw_exception): Really fix this.
17159
17160 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17161
17162         * tramp-*.c: we no longer support icalls without wrappers, so
17163         a bit of code can be removed here
17164
17165 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17168         patch.
17169
17170         * cpu-sparc.md: Add op_rethrow.
17171
17172         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17173
17174         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17175
17176         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17177         * mini-ops.h: Add OP_RETHROW.
17178
17179         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17180
17181         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17182
17183 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17184         
17185         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17186         Makes the output much easier to read
17187
17188 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17189
17190         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17191         prevents another huge leak when compiling with ssa. Secondly, the
17192         performance of doing this rather than freeing the lists is much
17193         better. GList does a lock every time you allocate a list link,
17194         so that it can use a memory pool. So, it is better to just use
17195         a memory pool of our own.
17196         
17197         * ssa.c, linear-scan.c: replace g_list_remove_link with
17198         g_list_delete.  The remove one does not free the GList, so we were
17199         leaking memory. On -O=all --compile-all with corlib, this cut down
17200         3 MB of allocations.
17201
17202 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17203
17204         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17205
17206         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
17207
17208         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
17209         into a new function mono_create_jit_trampoline ().
17210
17211 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17212
17213         * trace.c (get_spec): Allow tracing of classes without a namespace.
17214
17215 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
17216
17217         * mini.c: Fix pointer overwrite in mini_method_compile.
17218
17219 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
17220
17221         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
17222         The darwin ABI needs some special handling for 1 and 2 byte structs
17223         Lets use lbz/lhz instead of lwz everywhere.
17224         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
17225         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
17226         Use stb/sth for the former, and put the latter always on stack instead of in
17227         argument registers.
17228
17229 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17230
17231         * trace.c (is_filenamechar): Add '_'.
17232
17233 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17234
17235         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17236
17237         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17238
17239 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17240
17241         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17242         depends on libmonogc. Fixes #68805.
17243
17244 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17245
17246         * mini.c (mono_jit_free_method): Provide extra information for
17247         this error.  Currently this leaks, but will be turned into a
17248         developer option in the future.
17249
17250 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17251
17252         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17253
17254 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17255
17256         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17257         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17258         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17259
17260 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17263         trampolines for AOT code.
17264
17265 2004-10-22    <vargaz@freemail.hu>
17266
17267         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17268         constructed types. Fixes #68136.
17269
17270 2004-10-21  Martin Baulig  <martin@ximian.com>
17271
17272         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17273         if it returns true, unwind the stack to the call instruction.
17274
17275 2004-10-21    <vargaz@freemail.hu>
17276
17277         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17278
17279         * mini.h: Bump AOT version number.
17280
17281         * objects.cs: Add another test for unbox trampolines.
17282
17283         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17284         valuetype methods.
17285
17286 2004-10-20    <vargaz@freemail.hu>
17287
17288         * driver.c: Add SHARED to the set of optimizations tested.
17289
17290         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17291
17292         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17293         used by CEE_NEWARR.
17294
17295         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17296
17297 2004-10-20  Martin Baulig  <martin@ximian.com>
17298
17299         * mini-exceptions.c (mono_handle_exception): Call
17300         mono_debugger_handle_exception() to tell the debugger about
17301         catch/finally clauses.
17302
17303 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17304
17305         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17306
17307         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17308         #68447.
17309
17310 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17311
17312         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17313         methods as their native size, fixed bug #57543, #57545.
17314         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17315         This saves a temporary register and mullw call down into 1 (minor perf
17316         increase for cases like sum = sum * 5;  This use to translate into:
17317             li r11,5
17318             mullw r28,r28,r11
17319         It now translates to
17320             mulli r28,r28,5
17321
17322 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17323
17324         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17325         #68388.
17326
17327 2004-10-11  Martin Baulig  <martin@ximian.com>
17328
17329         * mini.c (mono_method_to_ir): If we're a generic method, get the
17330         MonoGenericContainer from our MonoMethodNormal and create a
17331         MonoGenericContext from it.
17332
17333 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17334
17335         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17336
17337         * basic-long.cs: Add test for checked i8->i2 cast.
17338
17339 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17340
17341         * inssel-ppc.brg: added a couple of speedup rules.
17342
17343 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17346         to speed up rebuilds.
17347
17348 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17349
17350         * mini-s390.c: Minor fix to OP_OR_IMM.
17351
17352 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17353
17354         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17355         better. Fixes appdomain-unload.exe on sparc.
17356
17357 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17358
17359         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17360         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17361         see bug 67324.
17362
17363 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17364
17365         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17366
17367 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17368
17369         * mini.c: Always generate a field read/write wrapper for members
17370         of the class MarshalByRefObject since the actual instance could
17371         be a CBO.
17372
17373 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17374
17375         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17376
17377 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17378
17379         * driver.c mini.h trace.c: Move the setting of the main assembly into
17380         a separate function called mono_trace_set_assembly () and call it after
17381         actually loading the main assembly. Fixes #66872.
17382
17383 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17384
17385         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17386         using the code manager.
17387
17388 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17389
17390         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17391
17392 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17393
17394         * cpu-amd64.md: Fix bug in previous patch.
17395         
17396         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17397         #66650.
17398
17399 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17400
17401         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17402         mini-exceptions.c: updates for changed stack walk interface.
17403
17404 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17405
17406         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17407
17408 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17409
17410         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17411
17412 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17413
17414         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17415         since assemblies can't be unloaded.
17416         
17417 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17418
17419         * cpu-amd64.md: Fix more instruction lengths.
17420
17421         * cpu-amd64.md: Fix lengths of some instructions.
17422
17423 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17424
17425         * inssel.brg: Make the array ldelema check aot friendly.
17426
17427 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17428
17429         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17430
17431         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17432
17433 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17434
17435         * mini-x86.c: Fix build.
17436
17437         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17438         mono_type_get_underlying_type () helper function to simplify code.
17439         
17440 2004-09-09  Martin Baulig  <martin@ximian.com>
17441
17442         * mini-amd64.c: Don't access `type->data.klass' directly, call
17443         mono_class_from_mono_type() instead since the type may be a
17444         generic instance.
17445
17446 2004-09-09  Martin Baulig  <martin@ximian.com>
17447
17448         * mini-amd64.c (get_call_info): Fix support for generic instances.
17449         (add_valuetype): Use mono_class_from_mono_type() to get the class
17450         since we can be a generic instance.
17451
17452 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17453
17454         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17455
17456 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17457
17458         * liveness.c: reset spill costs on each scan: bug 62107
17459
17460 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17461
17462         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17463         unnecessary line that doesn't compile
17464
17465 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17466
17467         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17468         trampolines, make them call an error function so people can fix their
17469         code.
17470
17471 2004-09-06  Martin Baulig  <martin@ximian.com>
17472
17473         * mini.c (mono_method_to_ir): When initializing locals, handle a
17474         generic instances like a valuetype if it's a valuetype and like a
17475         class if it's a class.
17476
17477 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17480         stack. Fixes #64674.
17481
17482         * exceptions.cs: Add test for unwinding of call arguments.
17483
17484 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17485
17486         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17487         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17488         set the carry/borrow flag). The sparc and s390 implementations
17489         can now use optimized versions (and simplify the code). ppc bugfixes.
17490
17491 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17492
17493         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17494
17495 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17496
17497         * inssel-amd64.brg: Remove leftover 32 bit rule.
17498
17499         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17500
17501 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17504         mono_arch_find_jit_info functions into a new function. Fix a memory
17505         leak.
17506
17507         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17508         refactored code.
17509         
17510 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17511
17512         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17513         as well.
17514         
17515         * exceptions.cs: Add array size tests.
17516
17517         * mini.c: Allocate a separate icall wrapper for each arity of 
17518         mono_array_new_va. Fixes #59509.
17519
17520         * exceptions.cs: Add testcase for 64578.
17521
17522         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17523
17524         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17525         
17526 2004-09-02  Martin Baulig  <martin@ximian.com>
17527
17528         * mini.c (mono_method_to_ir): When initializing the locals, call
17529         handle_initobj() on the generic instance itself, not its
17530         underlying type.
17531
17532 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17533
17534         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17535         MonoJitInfo for dynamic methods.
17536
17537         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17538
17539         * mini.c: Add support for freeing JIT data for dynamic methods.
17540         
17541 2004-09-01  Martin Baulig  <martin@ximian.com>
17542
17543         * mini-x86.c (is_regsize_var): Added support for generic
17544         instances.
17545         (mono_arch_emit_prolog): Make this compile again, use
17546         `x86_push_imm_template (code)'.
17547
17548 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17549
17550         * mini-x86.c: make all push_imm instructions that get
17551         patched always emit the long form
17552
17553 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17556         in a per-domain hash.
17557
17558         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17559         types.
17560
17561 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17562
17563         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17564         work.
17565         
17566         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17567         work.
17568
17569         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17570         Beginnings of SSE2 support.
17571
17572         * exceptions.cs: Add more tests for checked int<->uint casts.
17573
17574 2004-08-28  Martin Baulig  <martin@ximian.com>
17575
17576         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17577         generic instances.
17578
17579         * mini.c
17580         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17581         Handle generic instances recursively.
17582
17583 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17584
17585         * iltests.il: test for conv.u8 on a constant
17586
17587 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17588
17589         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17590         LCONV_x4 (shrun_32 (membase)).
17591
17592 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17593
17594         * inssel-x86.brg: c&p rules for push/setret of long
17595
17596 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17597
17598         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17599         compare (regvar, base)
17600
17601         * inssel-x86.brg: more burg love
17602
17603         * inssel.brg: more cleanup
17604
17605         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17606
17607 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17608
17609         * basic-long.cs, basic-calls.cs: new tests for optimization.
17610
17611 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17612
17613         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17614         patch.
17615
17616 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17617
17618         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17619         
17620 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17621
17622         * inssel.brg (mini_emit_memcpy): use 
17623         NO_UNALIGNED_ACCESS to disable memcpy optimization
17624
17625 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17626
17627         * mini-amd64.c: Handle generic types in various places.
17628
17629         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17630
17631 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini.c (handle_box): Fix warning.
17634
17635         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17636
17637         * mini-amd64.h: Enable the emit_state optimization.
17638
17639         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17640
17641         * mini-amd64.c: Add some new 64 bit peephole opts.
17642
17643         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17644
17645         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17646
17647         * mini-amd64.c: Register allocator fixes.
17648
17649         * mini.c: Add an optimization to emit_state to avoid allocation of new
17650         registers on some platforms.
17651
17652 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17653
17654         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17655
17656         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17657         allocation. Fixes #63085.
17658
17659         * basic-long.cs: Add new regression test.
17660
17661         * mini-amd64.c: Register allocator improvements.
17662
17663 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * mini-amd64.c (read_tls_offset_from_method): Add another code
17666         sequence.
17667
17668         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17669         instruction sequence for nullifying class init trampolines.
17670
17671         * objects.cs: Add new regalloc test.
17672
17673         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17674
17675 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17678         
17679         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17680         arguments.
17681
17682         * driver.c: Fix profiling after TLS changes.
17683         
17684         * driver.c (mono_main): Set mono_stats.enabled if needed.
17685
17686         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17687         CEE_BOX.
17688
17689 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17690
17691         * mini-x86.c: use a 1 op rather than a 2 op tls access
17692         instruction -> faster.
17693
17694 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17695
17696         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17697         x86 backend.
17698
17699 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17700
17701         * exceptions-sparc.c (throw_exception): fix typo
17702
17703 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17704
17705         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17706         set tree->dreg correctly with tls. Allow any
17707         register to be used.
17708
17709         * mini-x86.c (read_tls_offset_from_method): add new code
17710         generation pattern seen with GCC.
17711
17712
17713 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17714
17715         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17716         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17717         exceptions-sparc.c: fix some performance issues in exception
17718         handling and setting of the stack trace for exceptions that were
17719         already thrown.
17720
17721 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17722
17723         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17724         x86 backend.
17725         
17726         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17727         registers.
17728
17729 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17730
17731         This patch inlines tls access, when possible.
17732         
17733         * mini.h: new arch functions for TLS intrinsics.
17734         All platforms updated with a stub.
17735
17736         * mini.c: use the new intrinsics
17737
17738         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17739         arch specific intrinsic for tls variables
17740
17741 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17742
17743         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17744         under windows.
17745
17746 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17747
17748         * mini.c: thread local allocation
17749
17750 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17753
17754         * Makefile.am: Link against the static version of libmonogc.
17755         
17756         * Makefile.am: Link the static versions of the convenience libraries
17757         into the mono executable.
17758
17759         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17760
17761 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17762
17763         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17764         on integer overflow.
17765
17766         * mini-amd64.c: Reorganize function call code.
17767
17768         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17769
17770 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17771
17772         * inssel-x86.brg: use xor eax,eax.
17773         
17774         * basic.cs: new tests
17775
17776 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17777
17778         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17779         in exception throwing code.
17780         
17781 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17782
17783         * inssel-x86.brg: use xor esi,esi.
17784
17785 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17788         can trace methods compiled during mini_init () too.
17789
17790         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17791         CEE_CONV_U4.
17792
17793 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17794
17795         * Makefile.am: static link on x86 (r=zoltan)
17796
17797 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17798
17799         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17800         code since it causes some programs to fail.
17801
17802 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17803
17804         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17805
17806 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17807
17808         * mini.c: ovfops_op_map - add STACK_OBJ case for
17809         CONV_I 
17810         * basic.cs: add test_0_pin_string as test
17811         case for above.
17812
17813 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17814
17815         * Makefile.am: build C# if srcdir != builddir
17816
17817 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17818
17819         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17820         fall-through blocks.
17821
17822 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17823
17824         * driver.c: enable loop by default again and include abcrem in -O=all.
17825
17826 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17827
17828         * iltests.il: Add some localloc tests.
17829
17830         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17831
17832         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17833         Fixes #62574.
17834
17835         * inssel-amd64.brg: Add some optimizations.
17836
17837         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17838         for gcc-3.4.
17839
17840         * Makefile.am: Statically link mono against libmono on AMD64.
17841         
17842         * mini-amd64.c inssel-amd64.brg: Optimizations.
17843
17844 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17845
17846         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17847
17848         * tramp-amd64.c: Patch calling code in trampolines.
17849
17850 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17851
17852         * mini-amd64.c: pinvoke struct passing fixes.
17853
17854 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17855
17856         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17857         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17858
17859 2004-08-05  Duncan Mak  <duncan@ximian.com>
17860
17861         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17862         CEE_LDELEM_ANY.
17863
17864 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17865
17866         * mini-amd64.c (emit_move_return_value): Move return value for normal
17867         calls too.
17868
17869 2004-08-05  Martin Baulig  <martin@ximian.com>
17870
17871         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17872         `type->type'; just modify `type' itself when dealing with enums
17873         and generic instances.
17874         (check_call_signature): Make `simple_type' a `MonoType *'.
17875
17876 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * mini.c: Use OP_PADD to add offsets to addresses.
17879
17880         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17881
17882 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17883
17884         * mini-sparc.c (mono_arch_emit_epilog): fix check
17885         for folding last op into restore instruction
17886
17887 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17888
17889         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17890         helper methods using the code manager.
17891         
17892         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17893
17894         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17895
17896 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17897         
17898         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17899           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17900
17901         * mini-s390.c: fix tail processing
17902
17903 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17904
17905         * mini-ppc.c: mul.ovf.un exception name fix.
17906
17907 2004-08-03  Martin Baulig  <martin@ximian.com>
17908
17909         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17910         instances; before jumping to `handle_enum', also modify `ptype'.
17911
17912 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17913
17914         * cpu-sparc.md: fcall maximal length too small.
17915
17916 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * mini-amd64.c mini.h: Add initial support for passing/returning 
17919         structures to/from pinvoked methods.
17920
17921 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17922
17923         * mini-ppc.c: reg allocator fix.
17924
17925 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17926
17927         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17928
17929         * inssel.brg: Optimize memset on 64 bit machines.
17930
17931         * mini-amd64.c: Fix some vararg cases.
17932
17933 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17934
17935         * mini-s390.c: Corrected macro in emit_float_to_int
17936
17937         * s390-abi.cs: Tests to exercise the s390 ABI
17938
17939 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17940
17941         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17942         caller saved regs.
17943
17944         * basic.cs: Add a test for add.ovf.un.
17945
17946 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17947
17948         * mini-sparc.c: add case for OP_IDIV_UN
17949
17950 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17953         
17954         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17955
17956 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17957
17958         * basic.cs: regression tests.
17959
17960         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17961         regressions.
17962
17963 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17964
17965         * basic.cs: Add a new test.
17966
17967         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17968         and AOT. Various fixes and optimizations.
17969
17970         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17971
17972 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17973
17974         * mini-ppc.c: make sure temp regs are not used for global reg
17975         allocation.
17976
17977 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17978
17979         * cpu-sparc.md: conv_i8 fix for 64bits
17980
17981         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17982
17983 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17984         
17985         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17986         add opcode for cmp BYTE PTR [eax], imm.
17987
17988         * inssel.brg: Make memcpy and memset takes bases.
17989
17990 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17991
17992         * *-amd64.*: More AMD64 work.
17993         
17994 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17995
17996         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17997         add a compare-not-equal opcode.
17998         
17999 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18000
18001         * mini.c: Use mono_init_from_assembly instead of mono_init.
18002         
18003 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18004
18005         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18006
18007         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18008
18009         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18010
18011         * inssel.brg: 64 bit fixes.
18012
18013         * mini.h (MonoCallInst): Add some AMD64 specific data.
18014
18015         * mini.h: Add some OP_P opcodes.
18016
18017 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18018
18019         * basic.cs: tests for 61797 and 61740
18020
18021 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18024         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18025
18026 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18027
18028         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18029
18030         * *-amd64*.*: Ongoing AMD64 work.
18031
18032 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18033
18034         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18035
18036         * *-amd64*: Ongoing AMD64 work.
18037
18038         * mini-arch.h: Add AMD64 support.
18039
18040         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18041
18042         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18043
18044         * mini-ops.h: Add new opcodes.
18045
18046         * Makefile.am: Add AMD64 support.
18047
18048         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18049         rules into the inssel-long*.brg files.
18050
18051         * *-amd64.*: Add beginnings of AMD64 backend.
18052
18053 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18054
18055         * mini.c (print_dfn): commenting out the code that prints
18056         the cil. With -O=deadce, this makes -v -v crash.
18057         
18058         * cpu-pentium.md: make checkthis have a length of 2
18059
18060 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18061
18062         * mini-sparc.h: fix implementations of __builtin
18063         functions for Sun compiler for V9.
18064
18065 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18066
18067         * mini.c: use the new stelem.ref wrapper
18068         * exceptions.cs, arrays.cs: new stelem.ref tests
18069
18070 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18071
18072         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18073         new XSP should work with these changes).
18074
18075 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18076         
18077         * inssel-{long32,x86,}.brg: trivial optimizations.
18078         
18079 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18080
18081         * mini.c: load value when emitting box operation in
18082         constrained calls.
18083
18084 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18085
18086         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18087         is one byte shorter than cmp DWORD PTR [eax], 0.
18088
18089 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18090
18091         * inssel-ppc.brg: arguments on the stack are always
18092         relative to the stack pointer (spotted by Neale Ferguson).
18093
18094 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18095
18096         * exceptions-x86.c: delay appending the method name to the trace until
18097         after mono_jit_info_table_find is called, as this gets the real
18098         MonoMethod.
18099
18100 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18101
18102         * aot.c: register roots
18103
18104 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18105
18106         * aot.c : I could just use PLATFORM_WIN32 flag.
18107
18108 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18109
18110         * aot.c : Reverting the previous fix. This time it broke linux build.
18111
18112 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18113
18114         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18115
18116 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18117
18118         * mini.c (handle_stack_args): Remove some more debugging code.
18119         
18120         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18121
18122         * driver.c mini.h aot.c: Allow additional options to be specified with
18123         --aot and pass them to mono_compile_assembly.
18124
18125         * aot.c: Add experimental code to AOT compile all loaded assemblies
18126         on demand and save the code into a cache in the filesystem.
18127
18128         * aot.c: Add support for more wrapper methods.
18129         
18130         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18131         58863.
18132
18133         * cpu-*.md: Remove removed opcodes.
18134
18135         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18136         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18137         related icalls to marshal.c.
18138
18139 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18142
18143         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18144
18145         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18146
18147 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18148         * liveness.c: If liveness is recomputated we need to reset the information
18149         for each variable. This way, if the liveness range has been narrowed
18150         by optimizations that happened after the last computation, we can return
18151         a smaller range.
18152         
18153         For example, if you have
18154         
18155         {
18156                 int i = 0;
18157                 
18158                 // Tons of code that does not affect i
18159                 
18160                 i = foo ();
18161                 ...
18162         }
18163         
18164         i = 0 is dead code and will be removed by SSA. However, when
18165         linear scan gets to the code, i will still appear to be live
18166         throughout the entire block. This prevents good register allocation.
18167
18168 2004-07-06  Martin Baulig  <martin@ximian.com>
18169
18170         * debug-mini.c (mono_debug_init_method): Allow
18171         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18172         (mono_debug_add_icall_wrapper): New method.
18173
18174         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18175
18176 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18177
18178         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18179         optimization.
18180
18181 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * aot.c (mono_aot_load_method): Fix loading of debug info.
18184
18185 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18186
18187         * aot.c: Add logging support.
18188
18189 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18190
18191         * mini.h: Add prototype for mono_print_method_from_ip.
18192
18193         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18194
18195         * inssel.brg: 64 bit fixes.
18196
18197         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18198         inssel-long32.brg.
18199
18200         * Makefile.am: Add SPARC64 support.
18201
18202 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18203
18204         * aot.c: Fix alignment problems on 32 bit platforms.
18205
18206 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18207
18208         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
18209         SPARC64.
18210
18211         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
18212         problems.
18213
18214         * mini.h: Bump AOT file version. Some 64 bit fixes.
18215
18216 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * inssel-sparc.brg: Add new rule to avoid register moves.
18219
18220         * inssel.brg: Add ldind_to_load_membase helper function.
18221
18222 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18223
18224         * mini.c: OffsetToStringData intrinsic.
18225         
18226 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18229
18230         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18231         regression tests.
18232
18233         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18234 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18235
18236         * mini.c: reinstated mono_compile_get_interface_var()
18237         on x86, too, since the change breaks the Gtk# build there as well.
18238
18239 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18240
18241         * driver.c: remove loop from the default optimizations: it seems to
18242         interact badly with some of the other options (see bug #60613).
18243
18244 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18245
18246         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18247         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18248
18249 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18250
18251         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18252         vararg-using methods.
18253
18254 2004-06-21  Martin Baulig  <martin@ximian.com>
18255
18256         * mini/mini-exceptions.c
18257         (mono_handle_exception): Added `gpointer original_ip' argument.
18258         After calling mono_unhandled_exception(), call
18259         mono_debugger_unhandled_exception() and if that returns true,
18260         restore the context and return.
18261
18262 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18263
18264         * mini-ppc.c: prefer the use of relative branches so
18265         they won't need to be patched in aot code (patch from Patrick Beard).
18266
18267 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18268
18269         * aot.c: patch from Patrick Beard to make the output assembly
18270         more correct for the MacOSX assembler. Small tweak to
18271         generate sane images on Linux/PPC, too.
18272
18273 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18274
18275         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18276         case until bug #59509 is fixed (shows up in #60332).
18277
18278 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18279
18280         * mini.c: make sure the needed wrappers are compiled, too, with
18281         precomp.
18282
18283 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18284
18285         * driver.c: remove NPTL reference in --version output.
18286
18287 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18288
18289         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18290         generate valid assembly for the Mach-O assembler.
18291
18292 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18293
18294         * driver.c: don't include abcrem in the all optimization specifier
18295         since it slows down jit compilation too much for now.
18296
18297 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18298
18299         * mini.c: use BIGMUL only if both operands have the same signage.
18300         * iltests.il: Test for bug 60056. (errors related to signage in
18301         BIGMUL).
18302
18303         r=lupus.
18304
18305 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18306
18307         * mini.c, aot.c: memory leak fixes.
18308
18309 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18310
18311         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18312
18313 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18314
18315         * Makefile.am: remove the -static hack completely, it links in
18316         statically glib as well.
18317
18318 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18319
18320         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18321         * exceptions.cs: make it compile with new mcs/csc.
18322
18323 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18324         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18325         and added relevant test case.
18326
18327 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18328
18329         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18330         regressions in gtk-sharp.
18331
18332 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18333
18334         * exceptions.cs: New regression tests.
18335
18336         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18337
18338 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18339
18340         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18341
18342 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18345
18346         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18347
18348 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18349
18350         * mini.c (mono_jit_runtime_invoke): Init class in this
18351         method instead of trusting mono_jit_compile_method to
18352         do the work (because wrappers can be in object class)
18353
18354 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18357
18358         * basic-long.cs: New regression test.
18359
18360 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18361
18362         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18363         and div/rem checks.
18364
18365 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18366
18367         * Makefile.am: fix miguel's change to build mono statically against
18368         libmono (track build dependencies).
18369
18370 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18371
18372         * cfold.c: Some glib versions do not have G_MININT32.
18373
18374 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18375
18376         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18377         with precision of tan, atan, sin and cos, and implemented related
18378         regressions tests (fixes bug 54467, but one new problem appeared and
18379         is not fixed yet).
18380
18381 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18382
18383         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18384
18385         * exceptions.cs: Add test for constant folding && division by zero.
18386
18387         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18388         since driver.c is in libmono too, so the optimization was useless.
18389
18390         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18391         variable to driver.c so the compiler can emit more efficient code to
18392         access them.
18393
18394 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18395
18396         * Makefile.am: don't distribute generated inssel.[ch] files.
18397
18398 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18399
18400         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18401         into the default appdomain. Fixes #58707.
18402
18403         * jit-icalls.c: Remove the broken approximation for truncl, doing
18404         no conversion is better.
18405
18406         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18407         Fixes #58863.
18408
18409 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18410
18411         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18412         of the mcrxr instruction which is not available on some processors
18413         even if it's documented to be. Implement add and sub overflow correctly
18414         (still not complete for long unsigned). Speed up icalls a bit.
18415
18416 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18417
18418         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18419         we run .cctor in the current domain instead of target_domain.
18420         
18421         Fixes bug #58558, .cctor not being called in -O=shared.
18422
18423 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18424
18425         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18426
18427 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18428
18429         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18430         which can be done with an imm8, do it that way.
18431         (mono_arch_output_basic_block): ditto for a jmp
18432         (mono_arch_emit_prolog): Computate maximum offset of a label.
18433
18434 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18435
18436         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18437         now tries to allocate prefered physical reg's for virtual
18438         regs. This reduces the number of emited spills/loads with
18439         20-30% on our core assemblies.
18440
18441 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18442
18443         * jit-icalls.c: truncl() is not needed and trunc() is
18444         the correct thing to do anyway (bug #58287).
18445
18446 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18447
18448         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18449         if available.
18450
18451 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18452
18453         * driver.c: enable loop optimizations by default.
18454
18455 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18456
18457         * mini-x86.c: fix calc of max loop size when aligning loops start.
18458
18459 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18460
18461         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18462         the stack.
18463
18464 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18465
18466         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18467         should set carry.
18468
18469         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18470
18471         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18472         
18473         * mini.c (inline_method): Allways inline some wrappers even if the cost
18474         is too large. Fixes #58785.
18475
18476         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18477         
18478 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18481         (crichton@gimp.org). Beginning of support for sparc/linux.
18482
18483         * mini-sparc.c: Optimize retrieval of LMF address.
18484
18485 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18486
18487         * exceptions-ppc.c:  handle alloca in methods with clauses.
18488
18489 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18490
18491         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18492
18493 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18494
18495         * mini.c: Delegate most of the abort signal work to 
18496           mono_thread_request_interruption, which also handles Stop and Suspend
18497           states.
18498
18499 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18500
18501         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18502         supports the save/restore lmf opcodes.
18503
18504 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18505
18506         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18507         by gcc-3.4 as well.
18508
18509         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18510
18511 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18512
18513         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18514         methods which contain array accesses.
18515
18516         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18517         boundaries. Fixes #58537.
18518
18519         * iltests.il: Add regression test for #58537.
18520
18521 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18522
18523         * mini-x86.c (mono_arch_local_regalloc): Last part of
18524         fix for bug #58633 (releasing register to early).
18525
18526 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18527
18528         * basic-long.cs: Add new regression test.
18529
18530 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18531
18532         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18533         register too early on the chain.
18534
18535 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * mini.c (create_helper_signature): Use a helper function to reduce
18538         the code which needs to be written. Also set the calling convention of
18539         icalls on windows. Fixes #57840.
18540
18541 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18542
18543         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18544         exceptions-ppc.c: added helper function to get the instruction address
18545         from a signal handler context.
18546
18547 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18548
18549         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18550         from gonzalo.
18551
18552 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18553
18554         * helpers.c: Add new env variable to pass args to objdump.
18555         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18556
18557 2004-05-17  Radek Doulik  <rodo@ximian.com>
18558
18559         * Makefile.am (common_sources): added abcremoval.h so it get
18560         disted and daily mono packages on go-mono.com will build again
18561
18562 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18563
18564         * abcremoval.c: Fixed coding style, added copyright header.
18565
18566         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18567
18568         * mini.h: Added prototype for abc removal main function.
18569
18570         * build_relations_propagation_table.pl: Added copyright header.
18571
18572 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18573
18574         * basic-long.cs: reg test for complex ceq_long bug.
18575
18576 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18577
18578         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18579         reg in long and clob case (bug #58343). Fixed/added comments.
18580
18581 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18582
18583         * mini.c (mono_jit_runtime_invoke): Follow new convention
18584         of calling the invoke method with an function pointer.
18585
18586 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18587
18588         * ChangeLog: Fix author of memory leak patch.
18589
18590 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18591
18592         * Makefile.am: fix make dist as well...
18593
18594
18595 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18596
18597         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18598         on archs where pointers are 4 bytes long.
18599
18600         * Makefile.am: Added abcremoval.c source file.
18601
18602         * abcremoval.c: Added abcremoval.c.
18603
18604         * abcremoval.h: Added abcremoval.h.
18605
18606         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18607
18608         * inssel.brg: Enabled bounds check removal.
18609
18610         * mini.c: Added support for abcrem optimization.
18611
18612         * mini.h: Added abcrem optimization label.
18613
18614         * driver.c: Added support for abcrem optimization.
18615
18616         * propagated_relations_table.def: Added propagated_relations_table.def.
18617
18618 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18619
18620         * mini.c, cfold.c: fix style.
18621
18622 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18623
18624         * mini.c: handle issue with the low-level implementation of
18625         some long opcodes (bug #54209).
18626
18627 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18628
18629         * basic.cs: test for my new cmov stuff.
18630
18631 2004-05-13      Patrik Torstensson
18632
18633         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18634         opt and added peephole documentation.
18635
18636 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18637
18638         * tramp-ppc.c: rewrote the generic trampoline code.
18639
18640 2004-05-11      Patrik Torstensson
18641
18642         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18643
18644 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18645
18646         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18647
18648         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18649         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18650
18651         * mini.c: Add new icalls for AsAny marshalling.
18652
18653 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18654
18655         * tramp-ppc.c, mini-ppc.c: more cleanups.
18656
18657 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18658
18659         * mini.c: no warnings.
18660
18661 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18662
18663         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18664
18665 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18666
18667         * mini.c: In the thread abort signal handler, if the thread is in the
18668         process of being stoped, don't throw the Abort exception, just stop the
18669         thread.
18670
18671 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18672
18673         * tramp-ppc.c: removed old code.
18674
18675 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18676
18677         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18678         do some simple speed optimizations on ppc.
18679
18680 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18681
18682         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18683         and large offsets in load/store.
18684
18685 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18688         it causes regressions.
18689
18690 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18691
18692         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18693         support.
18694
18695 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18696
18697         * jit-icalls.c: remove warnings.
18698         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18699         speedups for unsafe code.
18700
18701 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18702
18703         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18704
18705 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18706
18707         * basic-calls.cs: Add new regression test.
18708
18709         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18710         more portable.
18711
18712         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18713
18714         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18715         is no longer used.
18716
18717 2004-05-06      Patrik Torstensson
18718
18719         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18720         long reg allocation in any reg (not only eax:edx) and implemented 
18721         long shl/shr ops in asm instead of helpers.
18722
18723 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18724
18725         * mini-sparc.h: Fix warnings.
18726
18727         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18728         stack.
18729
18730         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18731         separate statement for clarity.
18732
18733         * mini-sparc.c: Update status.
18734
18735 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18736
18737         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18738         here.
18739
18740 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18741
18742         * inssel-ppc.brg: another small pre-release workaround:
18743         we don't do overflow detection for long_sub_un.
18744
18745 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18746
18747         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18748         (also works around a weird ppc bug: 57957).
18749
18750 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18751
18752         * tramp-ppc.c: trampoline fixes.
18753
18754 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18755
18756         * mini-ppc.c: fixed typos.
18757
18758 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18759
18760         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18761         at the top of the stack. Fixed typos. Use a frame registers
18762         for all the methods with exception clauses.
18763
18764 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18765
18766         * exceptions-ppc.c: restore fp registers.
18767
18768 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18769
18770         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18771         order from the stack top (moved the stack room to save the
18772         return value for trace after the param area). Fixed corruption
18773         in restoring registers on unwind.
18774
18775 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18776
18777         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18778
18779 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18780
18781         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18782         and prolog/epilog for methods that use it. Allow
18783         enough param area room for varargs methods. Fix miguel's
18784         breakage in exception handling.
18785
18786 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18787
18788         * Makefile.am: run genmdesc only on current arch.
18789
18790 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18791
18792         * exceptions-x86.c:
18793         * mini-x86.h: fix the build on windows.
18794
18795 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18796
18797         * 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.
18798
18799         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18800
18801         * mini-exceptions.c: New file.
18802         
18803         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18804         Move some parts of the x86 exception handling code to an 
18805         arch-independent file so it can be shared with other ports.
18806
18807 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18808
18809         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18810
18811 2004-04-26  David Waite  <mass@akuma.org>
18812
18813         * driver.c: remove comma from end of enumeration declaration
18814
18815 2004-04-26  Jackson Harper  <jackson@ximian.com>
18816
18817         * driver.c: parse config file before loading first assembly. This
18818         allows the user gac to be enabled/disabled. 
18819         
18820 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18821
18822         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18823         simpler mechanism: we do not care what is encoded initially
18824         (branch absolute or relative), we care about the code and its
18825         target.  I kept the old code for reference for now.
18826
18827         The new code tries first to determine if the jump is anywhere in
18828         the -/+32 absolute meg range, if it succeeds, it encodes using the
18829         absolute branch;  If not, it tried to find something in the
18830         relative range, if not, it uses the handle_thunk code. 
18831
18832 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18833
18834         * exceptions-ppc.c: use the correct ip register on macosx.
18835
18836 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18837
18838         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18839
18840 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18841
18842         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18843         Raise exception on integer divide by zero by hand since the hw
18844         doesn't support it. Handle NaNs in FP compares.
18845
18846 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18847
18848         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18849         code reducing duplication between the platforms and enabled
18850         signal exception handling (on linux for now).
18851
18852 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18853
18854         * exceptions-ppc.c: more macosx support.
18855
18856 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18857
18858         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18859
18860 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18861
18862         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18863
18864 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18865
18866         * iltests.il: more tests.
18867
18868 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18869
18870         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18871         vars as well.
18872
18873 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18874
18875         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18876
18877 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * liveness.c: Mark variables as volatile in all basic blocks reachable
18880         from exception clauses.
18881
18882 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18883
18884         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18885         inlining.
18886
18887 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18888
18889         * iltests.il, basic.cs: more tests for regalloc.
18890
18891 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18892
18893         * iltests.il: Some tests for register allocation modifications
18894         I have locally.
18895
18896 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18897
18898         * exceptions.cs: Add regression test for bug #56782.
18899
18900         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18901         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18902         the beauty of fixing the same thing in 5 different files...
18903
18904 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18905
18906         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18907         methods.
18908
18909 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * mini.c: Add support for STRWLPARRAY marshalling convention.
18912
18913 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18914
18915         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18916         to init the context to setup the regs pointer).
18917
18918 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18919
18920         * exceptions-ppc.c: more exceptions work.
18921
18922 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18923
18924         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18925         not allowed.
18926
18927 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18928
18929         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18930         can use the memory directly.
18931
18932         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18933
18934         add x86_add_membase, x86_sub_membase, x86_mul_membase
18935
18936 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18937
18938         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18939         GENERAL_REGS they were also hardcoded for all PPC ports.
18940
18941         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18942
18943         Remove hard-coded limit for floating point registers, use
18944         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18945
18946         Notice that in MacOS X calling conventions you can fit a lot more
18947         floating point values in registers, so I should update the PInvoke
18948         test to excercise the passing of floating point values on the
18949         stack (currently broken).
18950         
18951 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18952
18953         * tramp-ppc.c (create_trampoline_code): Added
18954         JUMP_TRAMPOLINE_SIZE. 
18955         (ppc_magic_trampoline): Follow the pattern from
18956         x86_magic_trampoline: if code is set to zero, return. 
18957         (create_trampoline_code): Always pass MonoMethod to the jump
18958         trampoline, before it was passing a null.
18959         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18960         share the code with mono_arch_create_jit_trampoline. 
18961
18962         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18963         implemented.
18964         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18965         implemented.  
18966
18967         * cpu-g4.md: Added length for jmp instruction, the worst case
18968         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18969         for save_lmf).
18970
18971 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18974
18975 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18978         before each IL instruction.
18979
18980         * mini.c (CEE_BOX): Fix warnings.
18981
18982 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18983
18984         * mini.c: removed a few unused vars and extra whitespace.
18985
18986 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18987
18988         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18989         checks.
18990         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18991         index.
18992         (OP_GETCHR): use the above
18993         (CEE_LDELEMA): use the above.
18994
18995         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18996         version of the generic impl.
18997         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18998         (CEE_LDELEMA): use the above.
18999
19000 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19003         Fixes #56317.
19004
19005         * iltests.il: Added new regression test for #56317.
19006
19007 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19008
19009         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19010         under NetBSD. Fixes #56450.
19011
19012         * liveness.c (update_gen_kill_set): Fix previous patch.
19013
19014 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19015
19016         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19017
19018 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19021         ldsfld and ldsflda.
19022
19023         * inssel-sparc.brg: Add more optimizations.
19024
19025         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19026
19027 2004-04-01  Martin Baulig  <martin@ximian.com>
19028
19029         * mini.c (handle_box): New static function; moved the
19030         implementation of CEE_BOX here.
19031         (mono_method_to_ir): Added `constrained_call' variable.
19032         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19033         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19034         mono_method_get_constrained() to get the method.
19035
19036 2004-04-01  Martin Baulig  <martin@ximian.com>
19037
19038         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19039         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19040         (mono_method_to_ir): We don't need these macros anymore since
19041         mono_class_get_full() already takes care of it. 
19042
19043 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19044
19045         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19046         use @function (as doesn't accept #function here) and check the return
19047         value of system and stop if fails.
19048
19049 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19050
19051         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19052
19053 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19056
19057         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19058
19059         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19060         #56223.
19061
19062         * basic-long.cs: Add test for negation of Int64.MinValue.
19063
19064 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * mini-sparc.c: Update status.
19067
19068         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19069
19070         * exceptions-sparc.c: Fix return value in filters.
19071
19072         * inssel-sparc.brg: Fix register allocation in some rules.
19073
19074 2004-03-28  Martin Baulig  <martin@ximian.com>
19075
19076         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19077         if neccessary.  
19078
19079 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19080
19081         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19082         
19083         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19084         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19085         remove unused conv_u4 opcode.
19086
19087         * mini-x86.c: Remove valgrind workaround since it slows down things
19088         even when mono is not run under valgrind.
19089
19090 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * mini-sparc.c: Update status.
19093
19094         * inssel-sparc.brg: Add some optimizations.
19095
19096         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19097         future delay slot filling. Add support for varargs, tail calls and JMP.
19098
19099         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19100         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19101
19102         * inssel.brg: Fix register allocation in OP_ARGLIST.
19103
19104         * inssel.brg: Fix warnings.
19105
19106 2004-03-25  Martin Baulig  <martin@ximian.com>
19107
19108         * mini.c (inflate_generic_field): Removed.
19109         (mini_get_method): Removed, use mono_get_method_full(),
19110         (mini_get_class): Removed, use mono_class_get_full().
19111         (mono_method_to_ir): Pass our generic context to
19112         mono_field_from_token().        
19113
19114 2004-03-25  Martin Baulig  <martin@ximian.com>
19115
19116         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19117         of a `MonoMethod *'.
19118         (mini_get_method): Take a `MonoGenericContext *' instead
19119         of a `MonoMethod *'.
19120         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19121         a new local variable called `generic_context' which holds the
19122         current `MonoGenericContext *'; use it to lookup things.
19123
19124 2004-03-24  Martin Baulig  <martin@ximian.com>
19125
19126         * mini.c (mini_get_class): New static method; if we're inside a
19127         generic instance, inflate the class if neccessary.
19128         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19129
19130 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * iltests.il: New regression test for #55976.
19133
19134         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19135         #55976.
19136
19137 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19140         output.
19141
19142 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19143
19144         * liveness.c: Consider SSA stores as well as loads when making vars
19145         volatile.
19146
19147         * exceptions.cs: New regression tests for register allocation.
19148         
19149 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19150
19151         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19152         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19153           domain lock only to protect puntual access to data structures.
19154           Added access lock for sighash, jit_icall_hash_name, 
19155           jit_icall_hash_addr and domain->code_mp.
19156
19157 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * driver.c: Print SIGSEGV handling method.
19160
19161         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19162
19163         * mini.c (setup_jit_tls_data): Handle case when this is called
19164         multiple times for a thread.
19165
19166         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19167         is different from fbxx_un. Fixes #54303. Also use constants instead of
19168         magic numbers in a lot of places.
19169
19170 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19171
19172         * exceptions.cs: Fix cctor test when --regression is used.
19173
19174 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19175
19176         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19177         for Linux/ppc.
19178
19179 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19180
19181         * inssel-ppc.brg: fixed register assignments for some rules.
19182
19183 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19184
19185         * exceptions.cs: Add test for exceptions in static constructors.
19186
19187         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19188         static constructors outside the domain lock. Fixes #55720.
19189
19190 2004-03-17  Martin Baulig  <martin@ximian.com>
19191
19192         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19193         (inflate_generic_field): Take the `MonoMethod *' instead of the
19194         `MonoClass *' and added support for generic method.
19195         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19196         have a `field->parent->gen_params', only inflate the field if it's
19197         an open constructed type.
19198
19199 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19200
19201         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19202         exception object instead of the preconstructed ones.
19203
19204 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19205
19206         * mini.c: reverted changed to sigsegv_signal_handler commited
19207         accidentally in the previous patch.
19208
19209 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19210
19211         * mini.c:
19212         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
19213         running --aot with an old assembly.
19214
19215 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
19218         point values.
19219
19220         * mini-sparc.c: Add support for v9 branches with prediction.
19221
19222 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
19223
19224         * mini.c (mini_init): #warning is GNUC only
19225
19226         * mini-sparc.h: implement __builtin_frame_address
19227         and __builtin_return_address for Sun C compiler
19228
19229 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19230
19231         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19232
19233 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19234
19235         * basic-calls.cs: Add test for unaligned byref long argument passing.
19236
19237         * mini-ops.h: Add sparcv9 compare and branch instructions.
19238
19239         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19240         v9 instructions if we have a v9 cpu.
19241
19242         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19243         registers for global allocation.
19244
19245         * exceptions-sparc.c: Fixes.
19246         
19247 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * liveness.c (mono_analyze_liveness): Optimized version.
19250
19251         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19252
19253         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19254         sparc work.
19255
19256         * basic-float.cs basic-calls.cs: New regression tests.
19257
19258 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19261         sigaltstack implementation.
19262
19263         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19264         
19265         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19266         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19267
19268 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * mini.c: Fix warnings.
19271         
19272         * mini.c (mono_resolve_patch_target): New function which contains the
19273         arch independent part of the patching process.
19274
19275         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19276         patching code to a separate function.
19277
19278 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19279
19280         * mini.c (add_signal_handler): ifdef out on Windows
19281
19282 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19285         cpu-sparc.md: Add exception handling support + other fixes.
19286
19287         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19288         typed GC detection in --version.
19289
19290         * basic.cs exceptions.cs: New regression tests.
19291
19292         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19293         the arch specific code can store data during a compilation.
19294
19295         * mini-ops.h: Add OP_SETFRET.
19296
19297         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19298         function, register a separate icall for each arity, so the icalls can
19299         get a wrapper.
19300         
19301         * mini.c (mono_print_tree): Print negative offsets in a more readable
19302         form.
19303         
19304         * mini.c: Make signal handling work on sparc.
19305         
19306         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19307
19308         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19309
19310         * jit-icalls.c: Emulate truncl by aintl on solaris.
19311
19312         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19313
19314 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19317
19318 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19319
19320         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19321         a MarshalByRef type, inline a method that performs the check, taking into
19322         account that the object can be a proxy. Also implemented tow new opcodes:
19323         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19324         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19325         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19326
19327 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19328
19329         * mini-ppc.c: if a relative branch displacement is too big
19330         but it points to and area reachable with an absolute branch, 
19331         avoid the thunks.
19332
19333 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19334
19335         * mini.c: optimize small copies in cpblk.
19336
19337 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * basic-calls.cs basic-float.cs: New regression tests.
19340
19341         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19342         negative offsets from %fp. Implement localloc. Fix local register 
19343         allocation. Fix the case when the this argument needs to be saved to
19344         the stack. Implement some missing opcodes.
19345
19346 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * mini.c (mini_method_compile): Reenable global regalloc in methods
19349         with exception handlers.
19350
19351         * linear-scan.c (mono_varlist_sort): Fix warning.
19352
19353         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19354
19355         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19356         regalloc costs.
19357
19358         * liveness.c: Make all variables uses in exception clauses volatile, to
19359         prevent them from being allocated to registers. Fixes #42136.
19360
19361 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19362
19363         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19364         causes regressions.
19365
19366         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19367         argument to mono_arch_regalloc_cost.
19368
19369         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19370         precisely.
19371
19372 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19375         Make the cost of allocating a variable to a register arch dependent.
19376
19377         * basic-calls.cs: Fix compilation of tests.
19378         
19379         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19380         helper function to cut back on the number of #ifdefs needed.
19381
19382         * mini-ppc.c: Fix compilation.
19383
19384         * basic-calls.cs: New regression tests.
19385
19386         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19387
19388         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19389         of l0 since that is callee saved.
19390
19391         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19392         to virtual calls.
19393
19394         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19395         of delay instruction.
19396
19397         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19398
19399         * mini.h (MonoCallInst): Add 'virtual' flag.
19400
19401         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19402
19403 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * *.cs: New regression tests.
19406
19407         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19408         work.
19409
19410         * mini.c (mono_runtime_install_handlers): Fix build.
19411
19412         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19413         'signal_stack_size' members.
19414
19415         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19416         alternate signal stack.
19417
19418         * exceptions-x86.c: Add stack overflow handling.
19419
19420         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19421         functions to arch independent code.
19422
19423         * mini.c (mono_print_tree): Print more detailed info for load_membase
19424         opcodes.
19425         
19426 2004-02-23  Martin Baulig  <martin@ximian.com>
19427
19428         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19429
19430 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19431
19432         * mini-x86.c: fixed reg allocation for div/rem.
19433
19434 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19435
19436         * driver.c (mono_main): Report some configuratio options on --version.
19437
19438 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19439
19440         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19441         low in the address space. Correctly flush memory in thunks where we
19442         output native code.
19443
19444 2004-02-20  Martin Baulig  <martin@ximian.com>
19445
19446         * mini.c (mini_get_method): New static method; inflate all generic
19447         methods and methods in open generic instances.
19448         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19449         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19450
19451 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19454
19455         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19456
19457 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19458
19459         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19460
19461         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19462         it compile using Sun's compiler.
19463
19464 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * 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.
19467
19468         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19469
19470 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19471
19472         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19473         code.
19474         * mini-ppc.c: handle calls outside of the allowed range with thunks
19475         allocated using the code manager.
19476         * tramp-ppc.c: use the code manager to hold generated native code.
19477         Fixed the magic trampoline to just patch vtable entries.
19478
19479 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19480
19481         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19482         independent file.
19483
19484 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19487         PPC.
19488
19489         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19490         if we have a working __thread implementation.
19491
19492         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19493         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19494
19495 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * mini-x86.c: Fix compilation under gcc 2.
19498         
19499 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19502         contains a call to the wrapped function.
19503
19504         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19505         OP_<CALL>_IMM opcodes, and use them under X86.
19506         
19507         * mini.c (mono_jit_find_compiled_method): Fix warning.
19508
19509         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19510
19511         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19512
19513         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19514         functionality to mini.c.
19515
19516         * mini.c (mono_create_jump_trampoline): New function to create a jump
19517         trampoline. Return a compiled method instead of a trampoline if it
19518         exists. Add a cache for jump trampolines.
19519
19520         * mini.c (mono_jit_find_compiled_method): New function to return a
19521         compiled method if it exists.
19522
19523         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19524         mono_arch_create_jit_trampoline.
19525
19526         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19527         a jump trampoline. Fixes #52092.
19528         
19529 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19530
19531         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19532         which is not up-to-date. Add check_corlib_version () instead.
19533
19534         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19535         have to call it.
19536         
19537         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19538         since newer valgrind versions do not need it.
19539
19540         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19541         compile a method with a given set of optimizations.
19542
19543         * mini.c: Compile icall wrappers on-demand instead of at startup.
19544
19545         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19546         wrapper for an icall.
19547
19548 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19551         #54063.
19552
19553         * iltests.il: Add test for non-empty stack before switch instruction.
19554
19555 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * mini.c: Add support for new stringbuilder marshalling conventions.
19558
19559         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19560
19561 2004-02-01  Martin Baulig  <martin@ximian.com>
19562
19563         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19564         in `ginst->mtype_argv'.
19565
19566 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19567
19568         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19569         facilitate grepping.
19570
19571 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19572
19573         * mini.c: fixed buglet in initobj generic implementation for references.
19574
19575 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19576
19577         * Makefile.am: make the version script conditional.
19578         * jit-icalls.c: handle missing truncl().
19579
19580 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19581
19582         * exceptions.cs: Add more tests for double->int conversion.
19583
19584         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19585         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19586
19587 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19588
19589         * driver.c: make --verbose --version emit an error
19590         if the loaded corlib doesn't match the runtime version.
19591
19592 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19593
19594         * mini-ppc.h: export ppc_patch().
19595         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19596         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19597         on par or better than on MacOSX.
19598
19599 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19600
19601         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19602         mono_lookup_pinvoke_call.
19603
19604         * mini-x86.c: Under windows, the default pinvoke calling convention is
19605         stdcall. Fixes #52834.
19606
19607         * mini.c (optimize_branches): Add an upper bound to the number of
19608         iterations to prevent infinite loops on strange loops. Fixes #53003.
19609
19610 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19613         and ISINST. Fixes #52093.
19614
19615         * objects.cs (test_0_vector_array_cast): New tests.
19616         
19617 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19620         checking in Array.Set ().
19621
19622         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19623         #52590.
19624
19625         * object.cs (test_0_multi_array_cast): New regression test.
19626
19627 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19628
19629         * exceptions-ppc.c: fix build on Linux/PPC.
19630
19631 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19634         running under valgrind.
19635         (x86_magic_trampoline): Fix build bustage.
19636
19637         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19638         negative values as well. This is needed for the encoding of the line number
19639         info, since sometimes the line numbers are not in increasing order.
19640
19641 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * cpu-pentium.md (localloc): Increase the size of the localloc 
19644         instruction since it is a loop under Win32.
19645
19646         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19647         allocation.
19648
19649 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19650
19651         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19652         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19653         Max Horn (max@quendi.de). Fix file names in comments.
19654
19655 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19658         avoid stack overflow.
19659         (replace_usage): Avoid uninitialized variable warnings.
19660
19661         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19662         and taking the address of valuetype variables.
19663
19664 2004-01-03  Patrik Torstensson
19665
19666         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19667         for other purposes than FP later on.
19668
19669 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19672         of tail calls.
19673
19674 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19675
19676         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19677
19678 2003-12-30  Patrik Torstensson <p@rxc.se>
19679
19680         * mini-x86.h: Decreased number of availiable fp regs.
19681         Solves corner cases with FP spilling.
19682
19683 2003-12-23  Patrik Torstensson <p@rxc.se>
19684
19685         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19686         for floating point stack tracking / spilling on x86. 
19687         Fixes bug #49012.
19688         
19689         * basic-float.cs: added float mul overflow test.
19690
19691 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19694
19695 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19696
19697         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19698         supports for cond branches that overflow the immediate
19699         overflow offset. mcs can compile simple programs.
19700
19701 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19702
19703         * exceptions-ppc.c: exception handling support wip:
19704         finally handlers get run on exception.
19705
19706 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19709         profiling.
19710
19711 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19712
19713         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19714         initial support for stack walking and unwinding.
19715
19716 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * driver.c (mono_main): Make corlib-out-of-sync message more 
19719         descriptive. Also remove verify_corlib call.
19720
19721 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19722
19723         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19724         not overlap with other call's arguments, too.
19725
19726 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19727
19728         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19729         move to arch-specific code the choice of arch-specific
19730         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19731         * mini.c: ensure emulation calls will not interleave
19732         with other calls.
19733
19734 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19735
19736         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19737         the magic trampoline stack frame is dropped before executing
19738         the new method.
19739
19740 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19741
19742         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19743         and integer to fp conversions. Added support for overflowing
19744         arguments on the stack. Reserve a couple more registers as temps.
19745         Added support for aot compilation (as output still needs to be
19746         tweaked, though).
19747
19748 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19749
19750         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19751         Don't overwrite return register in some corner cases.
19752
19753 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19756         static constructors when AOT compiling.
19757
19758         * driver.c (mono_main): Call mono_check_corlib_version.
19759
19760 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19761
19762         * cpu-g4.md, basic.cs: fixed div target register.
19763
19764 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19765
19766         * mini-ppc.c, basic.cs: shl_imm fix with test.
19767
19768 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19771         structures by value. Misc fixes.
19772         * objects.cs: more tests.
19773
19774 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19775
19776         * mini-ppc.c: lconv.ovf.i implemented.
19777
19778 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19779
19780         * mini.c:
19781         (mini_init): don't error out if someone already called g_thread_init.
19782
19783 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19784
19785         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19786         to be any type per the spec. Fix abnormal memory usage when
19787         the same object is repeatedly thrown.
19788
19789 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19790
19791         * mini.c: check for overruns in IL code.
19792
19793 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * TODO: Add/remove some todo entries.
19796
19797 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19798
19799         * driver.c (mono_main): Call mono_verify_corlib.
19800
19801 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19802
19803         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19804         This has been moved to mini.c
19805         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19806         type being casted is marshalbyref it could be a proxy, so instead of
19807         emitting the type check code, emit a call to a runtime method that will
19808         perform the check by calling CanCastTo if needed.
19809
19810 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19813         methods with large stack frames under Win32.
19814
19815 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19816
19817         * Makefile.am: Distribute regression tests.
19818
19819         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19820         at the end instead of inserting each variable into the sorted list.
19821
19822         * linear-scan.c (mono_varlist_sort): New helper function.
19823         
19824 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19825
19826         * mini.c: ensure arguments and locals are within bounds.
19827
19828 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19829
19830         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19831         related fixes.
19832
19833 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19834
19835         * mini.c (mono_cprop_copy_values): Fix crash.
19836
19837         * aot.c: Set verbosity back to 0.
19838         
19839 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19840
19841         * regalloc.c: complete memory leak fix by Laurent Morichetti
19842         (l_m@pacbell.net).
19843
19844 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * driver.c (main_thread_handler): Revert the previous patch.
19847
19848         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19849         under valgrind.
19850
19851         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19852         memory from the memory pool.
19853
19854         * driver.c (main_thread_handler): Turn on all optimizations when
19855         --aot is used.
19856
19857         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19858         an array for better performance.
19859
19860         * regalloc.c (mono_regstate_assign): Fix memory leak.
19861
19862         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19863         serialize the debug info.
19864
19865         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19866         debug info from the serialized representation.
19867
19868         * aot.c: Save debug info into the generated file and load it when 
19869         loading a method.
19870
19871         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19872
19873 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19874
19875         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19876         More FP-related fixes.
19877
19878 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19879
19880         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19881         and register allocation buglet. Hello world now runs.
19882
19883 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19884
19885         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19886         * tramp-ppc.c: fixed class init trampoline.
19887         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19888
19889 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19890
19891         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19892         mini.c: more ppc changes/fixes.
19893
19894 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19895
19896         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19897         Also optimize the case when the arguments are the same in the caller 
19898         and in the callee.
19899
19900         * iltests.il: Add tests for tail calls with valuetype arguments.
19901
19902 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19903
19904         * mini-ppc.c: fixes for struct return type.
19905
19906 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19907
19908         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19909         mono_spillvar_offset() to arch-specific code.
19910
19911 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19912
19913         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19914
19915 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19916
19917         * exceptions-x86.c: Fix stack space leaks.
19918         
19919         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19920         registers from the lmf if the method has save_lmf set.
19921
19922 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19925         of icall wrappers into InvokeInDomain, since these are now per-domain.
19926
19927 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19928
19929         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19930         make some opcode emulation and intrinsic ops enabled/disabled 
19931         according to the architecture. More fixes.
19932
19933 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19934
19935         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19936
19937 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19938
19939         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19940         arch-specific handling for 'this' and struct return type to
19941         arch-specific code.
19942
19943 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19944
19945         * aot.c: prevent divide by zero error when reporting (it happened with
19946         Accessibility.dll).
19947
19948 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * mini.h (inst_switch): Remove unused macro.
19951
19952 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19953
19954         * aot.c:
19955         (load_aot_module): free 'info->methods' and 'info' properly. No more
19956         "free(): invalid pointer blah" messages when you have an old aot
19957         compiled assembly.
19958
19959 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19960
19961         * jit-icalls.c, mini.c: Added support for context static fields.
19962
19963 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * mini.c (mono_method_blittable): Methods which set LastError are not 
19966         blittable either. Fixes #51108.
19967         
19968 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19969
19970         * mini.c: flush icache.
19971         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19972
19973 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19976
19977 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19980         safe on IA32.
19981
19982         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19983         vararg calls.
19984
19985         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19986
19987 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19990         instruction when the result is discarded.
19991
19992         * iltests.il (test_0_div_regalloc): New regression test.
19993
19994         * arrays.cs: Fix compilation error.
19995
19996 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19997
19998         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19999         float rules to inssel-x86.brg: sane architectures with FP registers
20000         don't need to implement these rules.
20001
20002 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20003
20004         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20005
20006 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20007
20008         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20009         implementation of 32 bit systems.
20010
20011 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20012
20013         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20014         (Jeroen Zwartepoorte).
20015
20016 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20019         the caller and the callee matches.
20020         
20021         * mini.c (mono_method_to_ir): Add comment.
20022
20023         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20024         signbit is missing on some platforms.
20025
20026 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20029
20030         * mini.c (setup_jit_tls_data): Call the new function.
20031         
20032         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20033
20034         * mini-x86.c: Add experimental support for fast access to the lmf
20035         structure under NPTL/Linux 2.6.x.
20036
20037 2003-11-06  Martin Baulig  <martin@ximian.com>
20038
20039         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20040         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20041         the debugger.
20042
20043 2003-11-02  Martin Baulig  <martin@ximian.com>
20044
20045         * mini.c (inflate_generic_field): New static method.
20046         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20047         generic instance and the field is declared in a generic type, call
20048         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20049
20050 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20051
20052         * mini.h mini.c (mono_method_same_domain): New function to return
20053         whenever the caller and the callee are in the same domain.
20054
20055         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20056
20057 2003-10-30  Martin Baulig  <martin@ximian.com>
20058
20059         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20060         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20061         method parameters.
20062         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20063         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20064
20065 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20066
20067         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20068         propagation.
20069
20070         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20071         object here, so it is in the correct appdomain etc.
20072
20073 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20074
20075         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20076         already done.
20077         (mono_method_to_ir): Avoid freeing the type created returned from
20078         mono_type_create_from_typespec, since it is put into an internal cache
20079         by the function. Fixes pointer.exe.
20080
20081         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20082         trampolines for icalls and pinvokes as well. Fixes #33569.
20083
20084 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20085
20086         * mini.c: Update after appdomain changes.
20087
20088         * mini.c (mono_jit_compile_method_inner): Allways compile native
20089         method wrappers in the root domain, since there can only be one
20090         instance of them, whose address is stored in method->info.
20091
20092 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20095         environment variable. Instead detect automatically whenever running
20096         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20097         valgrind.h.
20098
20099 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20100
20101         * trace.c, trace.h: New files that implement the new trace option
20102         parsing. 
20103
20104         * driver.c: Document new --trace options.
20105
20106         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20107         mini-x86.c: Apply:
20108
20109         -       if (mono_jit_trace_calls)
20110         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20111
20112         * mini.h: prototypes.
20113         
20114 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20117
20118         * mini.c inssel.brg: Implement typedefbyref opcodes.
20119
20120         * mini.c (mono_jit_compile_method): Remove unused local variable.
20121
20122         * mini.c (mono_jit_compile_method_inner): Ditto.
20123         
20124 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20127         
20128         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20129
20130 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * mini.c (mono_no_aot): Remove unused global variable.
20133
20134         * mini.c: Thread safety fixes.
20135
20136 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * mini.c (mono_create_class_init_trampoline): Add a lock around
20139         class_init_hash_addr.
20140
20141         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20142         #30073.
20143
20144         * mini.c: Decompose the NEWARR instruction before decomposing its
20145         arguments. Fixes #30073.
20146
20147 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20148
20149         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20150         convention.
20151
20152 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20155
20156         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20157
20158         * driver.c: Add support for compiling icall wrappers to --compile.
20159
20160 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * inssel.brg: The empty value in class->interface_offsets is -1, not
20163         0. Fixes #49287.
20164
20165 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20166
20167         * objects.cs: New test for 'is' operator on an array of interfaces.
20168
20169 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20170
20171         * tramp-ppc.c: update trampoline code to support jumps
20172         and class initialization.
20173
20174 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20175
20176         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20177
20178         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20179
20180         * inssel.brg (OP_UNBOX): Remove unused rule.
20181
20182         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20183         region instead of one for each method. Fixes #47813.
20184
20185 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20186
20187         * exceptions.cs (test_0_nested_finally): New regression test for
20188         nested exception handlers.
20189
20190         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20191
20192         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20193
20194         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20195         inlining.
20196
20197         * mini.c (mono_method_check_inlining): Make the inlining limit 
20198         configurable by an environment variable.
20199         
20200         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20201
20202         * mini.h: Bump AOT file version.
20203
20204         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20205         token, store the image along with the token, since the token might not 
20206         refer to the same image as the method containing the relocation, 
20207         because of inlining.
20208
20209 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
20210
20211         * mini.c (mono_precompile_assemblies): New function to compile
20212         all methods in all loaded assemblies.
20213
20214         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
20215
20216         * regalloc.h regalloc.c (MonoRegState): Change the type of 
20217         iassign and fassign to int*, since they can contain large negative
20218         values if the register is spilled. Also added some comments. Fixes
20219         #45817.
20220
20221         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
20222         under Win32. Fixes #42964.
20223
20224 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20227
20228         * aot.c: Added support for AOT compiling methods which contain calls
20229         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20230         handled.
20231         
20232         * driver.c (compile_all_methods): Run the compilation in a thread
20233         managed by mono. Fixes #44023.
20234
20235         * mini.c (mono_codegen): Print full method name in verbose output.
20236
20237         * mini-x86.c (mono_arch_patch_code): Fix warning.
20238         
20239         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20240         jumps, since the method we are jumping to might be domain-specific.
20241
20242         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20243
20244 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20245
20246         * inssel.brg: string chars are unsigned.
20247
20248 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * TODO: New todo item.
20251
20252         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20253         which calls mono_runtime_class_init and patches the call site to
20254         avoid further calls.
20255         (mono_arch_create_class_init_trampoline): New arch specific function 
20256         to create a class init trampoline.
20257         (create_trampoline_code): Generalized so it can create
20258         class init trampolines as well.
20259
20260         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20261         (mono_create_class_init_trampoline): New function to create and cache
20262         class init trampolines.
20263         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20264         vtable given the address of a class init trampoline. Used by the
20265         patching process.
20266         (mono_codegen): Generate a call to a trampoline instead of
20267         mono_runtime_class_init in LDSFLD[A].
20268         (mono_codegen): Add relocations for the new trampoline.
20269         
20270         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20271         MONO_PATCH_INFO_CLASS_INIT.
20272
20273         * mini.h: Bump AOT version number.
20274
20275         * aot.c: Create a copy of the loaded code instead of using the original
20276         so methods which call each other will be close in memory, improving
20277         cache behaviour.
20278         
20279         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20280         patch since it breaks the regression tests.
20281         
20282         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20283         for the register saving instruction sequence since the 
20284         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20285
20286 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20287
20288         * TODO: Fix todo item && remove another.
20289
20290 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20291
20292         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20293         previous checkin.
20294
20295         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20296         function of the module.
20297
20298         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20299         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20300         --no-aot command line option.
20301
20302 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20305         by Bernie Solomon (bernard@ugsolutions.com).
20306
20307         * inssel.brg: Refactor the interface offset table related code into
20308         its separate functions and add support for the AOT case.
20309
20310 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20311
20312         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20313         
20314         * aot.c: Added mono_aot_verbose variable and made all debugging
20315         output depend on the value of this variable.
20316
20317         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20318         method_label and info_label.
20319
20320         * mini.h mini-x86.c aot.c: Added a new relocation type 
20321         MONO_PATCH_INFO_IID for klass->interface_id.
20322
20323         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20324         the MonoJitInfo structure.
20325
20326         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20327         a non-root appdomain in shared mode.
20328
20329 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20330
20331         * aot.c: make aot loader less verbose. Remove free of unused variable.
20332
20333 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20336
20337         * .cvsignore: Added *.dll.
20338
20339         * mini.c (mono_print_tree_nl): New function callable while debugging.
20340
20341         * mini.c (mono_print_code): Export this.
20342
20343         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20344         patched code.
20345
20346 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * mini.h (MonoCompile): Added 'jit_info' field.
20349
20350         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20351         the cfg structure, since it is needed by the AOT compiler.
20352
20353         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20354
20355         * aot.c: A major rewrite. Changes include:
20356         - save exception tables for methods which have them.
20357         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20358         to g_module_symbol.
20359         - reworked the file format so it is now much smaller and needs
20360         fewer relocation entries.
20361         
20362 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * aot.c (load_aot_module): Fix build bustage on platforms without
20365         Boehm GC.
20366
20367 2003-09-04  Martin Baulig  <martin@ximian.com>
20368
20369         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20370
20371 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * TODO: Some new optimization ideas.
20374
20375         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20376
20377         * aot.c: Save the optimization flags used to compile the code into
20378         the AOT module.
20379
20380         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20381         support emitting domain specific code.
20382         
20383         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20384         no longer domain neutral. It can be made domain neutral by compiling 
20385         with --optimize=shared.
20386
20387         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20388         between appdomains.
20389
20390         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20391         loading of AOT code.
20392
20393         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20394         
20395         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20396         if there is no domain neutrality information.
20397
20398 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20399
20400         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20401         format version into the generated library.
20402
20403         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20404         callee method into the caller since one of them could be shared.
20405
20406         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20407         system exceptions from AOT code now works.
20408
20409         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20410         method if it is domain neutral and the callee is not.
20411
20412         * graph.c (cfg_emit_one_loop_level): Fix warning.
20413
20414 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20417         last checkin.
20418
20419 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20422         is needed  by code which is executed before mono_runtime_init ().
20423         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20424         
20425         * mini.c (mono_thread_abort): Fix warning.
20426         (mono_jit_compile_method): Call static constructor in the AOT case too.
20427
20428         * aot.c (mono_compile_assembly): Fix warning.
20429
20430 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20431
20432         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20433
20434 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20437
20438         * cpu-pentium.md: Fix the length of call opcodes so they include the
20439         ESP restoring instruction. Fixes #47968.
20440
20441 2003-08-28  Martin Baulig  <martin@ximian.com>
20442
20443         * mini-x86.c (mono_arch_call_opcode): Added support for
20444         MONO_TYPE_GENERICINST.
20445
20446         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20447
20448 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20449
20450         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20451         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20452
20453         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20454         metadata_section.
20455
20456 2003-08-26  Martin Baulig  <martin@ximian.com>
20457
20458         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20459         when reporting an error, set this to the actual error location.
20460         (mono_method_to_ir): Report the correct error location if
20461         get_basic_blocks() returned an error.
20462
20463 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * mini.c (mono_type_blittable): OBJECT is not blittable.
20466         (mono_method_blittable): Methods which have marshalling descriptors
20467         are not blittable either. Fixes #47842.
20468
20469 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20470
20471         * driver.c mini.c: Use an environment variable instead of a global 
20472         variable. Also fix the build.
20473
20474         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20475         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20476         reporting this. 
20477
20478         * driver.c mini.c: Added --with-valgrind option to turn off some
20479         code which prevents mono from running under valgrind.
20480
20481         * mini.c (mono_emit_call_args): Fixed warning.
20482
20483         * mini.c (mono_emulate_opcode): Fixed warning.
20484
20485 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20486
20487         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20488         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20489         regalloc.c, regalloc.h: specify available registers in arch-specific
20490         code and support floats in the regallocator (patch by Laurent Morichetti 
20491         <l_m@pacbell.net>)
20492
20493 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20494
20495         * mini.c: mono_thread_current() can be called only after
20496         mono_runtime_init(): rearrange code to not call it early on.
20497
20498 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20499
20500         * mini.c: allocate jump tables in the code mempools.
20501
20502 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20503
20504         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20505         freed.
20506
20507 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20508
20509         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20510         12 to 16.  This fixes bug #47453.
20511
20512
20513 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20514
20515         * mini-ppc.c: fixed indexed load and unsigned compares.
20516
20517 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20518
20519         * mini.c: reenabled installation of handler for
20520           thread abort signal.
20521
20522 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20523
20524         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20525         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20526         until it's fixed and actually useful.
20527
20528 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20529
20530         * inssel-long32.brg: couple more opcodes implemented.
20531
20532 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20533         
20534         * mini-sparc.c: Even more opcodes implemeted.
20535
20536 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20537
20538         * mini-sparc.c: More opcodes implemented.
20539
20540 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20541
20542         * mini-sparc.c: More opcodes implemented.
20543
20544 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20545
20546         * inssel-sparc.brg: Add some needed rules.  Direct
20547         copy from PPC.
20548         * Makefile.am: Use inssel-sparc.brg
20549         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20550         an assert happy for now.
20551
20552 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20553
20554         * mini-sparc.c: Fixed compile errors.
20555         * exceptions-sparc.c: Same.  We now produce a mono binary 
20556         on sparc-linux.  Yea.
20557
20558 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20559
20560         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20561         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20562         They compile, but do not work.
20563
20564 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20565
20566         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20567         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20568         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20569         (ct@gentoo.org).
20570
20571 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20572
20573         * mini.c: more opcodes implemented and better support for generics.
20574
20575 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20576
20577         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20578         * mini.c, mini.h: first cut at generics support: some new instructions 
20579         added and changed the behaviour of some of the existing ones.
20580
20581 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20582
20583         * mini.c: Removed definition of metadata_shared mutex here.
20584
20585 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20586
20587         * mini-x86.c: make vararg calls work for instance methods.
20588
20589 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20590
20591         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20592         returns the arguments in a separte list, now.
20593
20594 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20595
20596         * aot.c, mini.c: updates for array type representation changes.
20597
20598 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini.c: register function to perform jit shutdown.
20601
20602 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20603
20604         * mini.c: use a faster allocator if possible.
20605
20606 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20607
20608         * aot.c: some cleanups and portability changes.
20609
20610 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20611
20612         * mini.c: use faster allocation for CEE_BOX if possible.
20613
20614 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20615
20616         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20617         Moved inlined mempcy code to its own function so that is can be
20618         reused. Added an inline memset function as well (optimized initobj).
20619         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20620
20621 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20622
20623         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20624
20625 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20626
20627         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20628         arch code can setup the cpu for CLR execution, if needed.
20629         We use it on x86 to set the precision of FP operations.
20630
20631 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20632
20633         * mini.c: disable some optimizations if we can guess they'll cost too
20634         much for a given method.
20635
20636 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20637
20638         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20639         
20640 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20641         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20642         info collection support.
20643
20644 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20645
20646         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20647         is now implemented in the profiling API. Get rid of a couple of
20648         unnecessary global variables.
20649
20650 2003-06-15  Nick Drochak <ndrochak@gol.com>
20651
20652         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20653         * cpu-g4.md: add op_bigmul and op_bigmul_un
20654         * cpu_pentium.md: add op_bigmul_un
20655         * inssel-long32.brg: add rule for unsigned bigmul
20656         * mini-ops.h: define OP_BIGMUL_UN
20657         * mini-x86.c: THE BUG: handle (un)signed properly
20658         * mini.c: choose unsigned opcode if needed.
20659         This set of patches fixes bug #44291
20660
20661 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20662
20663         * mini.c (optimize_branches): improved to handle all kinds of
20664         conditional branches.
20665
20666 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20667
20668         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20669         don't raise exceptions.
20670
20671 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20672
20673         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20674         to arch-specific files.
20675
20676 2003-06-09  Martin Baulig  <martin@ximian.com>
20677
20678         * Makefile.am (libs): Added $(LIBGC_LIBS).
20679
20680 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20681
20682         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20683         and OP_ATAN (fixes bug#44293).
20684
20685 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20686
20687         * Makefile.am, mini-x86.c: rename cpu description array to
20688         pentium_desc, since some compilers define the 'pentium' preprocessor
20689         symbol.
20690
20691 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20692
20693         * mini.c (mini_select_instructions): add explicit branch if the
20694         following block is not the false target of a conditional branch -
20695         we need this with any optimization that reorder or remove bblocks
20696
20697         * mini.c (optimize_branches): bug fixes
20698
20699 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20700
20701         * mini.c (mono_method_to_ir): inline static readonly fields
20702
20703         * ssa.c (fold_tree): start cfold support for long (very simple
20704         cases only)
20705
20706         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20707
20708 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20709
20710         * inssel.brg: fixed memcpy (bug #44219).
20711
20712 2003-06-05  Dick Porter  <dick@ximian.com>
20713
20714         * driver.c: Set the glib log levels to not abort if g_message
20715         recurses.
20716
20717         g_set_prgname() has to happen before mini_init() so that the
20718         process handle gets the info.
20719         
20720 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20721
20722         * driver.c: add intrins to the default optimizations to get wider
20723         exposure.
20724
20725 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20726
20727         * mini.h: some large basic blocks will overflow a 16-bit
20728         integers for symbolic registers.
20729
20730 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20731
20732         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20733         (mono_arch_output_basic_block): fix bug 43499 
20734
20735 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20736
20737         * mini.c: kill duplicated definition of mono_debug_format.
20738
20739 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20740
20741         * mini-x86.c, arrays.cs: fixed register allocation bug.
20742
20743 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20744
20745         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20746
20747         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20748
20749 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20750
20751         * mini.c:
20752         (print_method_from_ip): also print source location information if
20753         available.
20754
20755 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20756
20757         * mini.c (mono_find_block_region): bug fix in region code
20758         (mini_method_compile): enable removing unreachable code again, but
20759         only in methods without exception clauses.
20760
20761 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20762
20763         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20764         Implemented arglist opcode and handling of TypedReference type.
20765         Fixed x86 call convention when a structure is returned.
20766         Minimal support for calling static vararg methods.
20767
20768 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20769
20770         * mini.c (mini_method_compile):  always remove unreachable code,
20771         because the code in them may be inconsistent  (access to dead
20772         variables for example).
20773
20774 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20775
20776         * driver.c, debug-mini.c: warning fixes.
20777
20778 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20779
20780         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20781
20782 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20783
20784         * mini.c: thread-static fields are registered in mono_class_vtable(),
20785         so ensure the function is called before checking for them.
20786
20787 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20788
20789         * mini.c (optimize_branches): fix for bug 43586
20790
20791         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20792         overflow (fixes Bug #43639)
20793
20794 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20795
20796         * mini.c, objects.cs: allow the use of stobj for primitive types.
20797
20798 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20799
20800         * mini.c: be less strict about argument checking until we support
20801         running the verifier.
20802
20803 2003-05-27  Nick Drochak <ndrochak@gol.com>
20804
20805         * basic-long.cs: tests for (ulong)int * (ulong)int also
20806         * mini.c: use the same trick for (ulong)int * (ulong)int
20807
20808 2003-05-27  Nick Drochak <ndrochak@gol.com>
20809
20810         * basic-long.cs: add regression test for (long)int * (long)int
20811         * cpu-pentium.md: add op_bigmul specification
20812         * inssel-long32.brg: add OP_BIGMUL rule
20813         * mini-ops.h: add OP_BIGMUL
20814         * mini-x86.c: register allocator: handle case where src1 needs to be
20815         in EAX.
20816         * mini.c: substitute special BIGMUL opcode in the tree for 
20817         (long)int * (long)int
20818
20819 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20820
20821         * jit-icalls.c: call the type ctor on field access if needed.
20822
20823 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20824
20825         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20826         to a method (including results of ldelema, bug#43207).
20827
20828 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20829
20830         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20831         colors to show exception handler blocks.
20832
20833         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20834         (fix for pinvoke7.cs).
20835
20836 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20837
20838         * mini.h, mini.c: ensure correct initialization order for types that
20839         require it. Prepare for lazy compilation of jit icall wrappers.
20840         Provide a name for opcode emulation to reduce unneeded mallocing.
20841
20842 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20843
20844         * mini-x86.c: better register restoring code and profiling
20845         support for tail calls.
20846
20847 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20848
20849         * mini.h, driver.c: prepare for leaf methods optimization.
20850
20851 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20852
20853         * mini.c: get targets of branches before converting a method.
20854
20855 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20856
20857         * mini.c (optimize_branches): added some experimental code (disbaled) 
20858
20859 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20860
20861         * mini.c (optimize_branches): fix branch to branch optimization 
20862
20863         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20864
20865         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20866
20867         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20868
20869         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20870         if needed.
20871
20872 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20873
20874         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20875         enable use of interface variables again.
20876
20877         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20878         I1 to registers because there is no simply way to sign extend 8bit
20879         quantities in caller saved registers on x86.
20880
20881         * inssel-float.brg: set costs of some rules to 2 so
20882         that monobure always select the arch. specific ones if supplied,
20883         regardless of the order we pass the files to monoburg.
20884
20885 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20886
20887         * mini.c, mini-x86.c: since the magic trampoline for jumps
20888         can't patch the code directly, we do it as soon as the
20889         method gets compiled.
20890
20891 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20892
20893         * mini-x86.c, mini.h: introduce a new patching method
20894         to support CEE_JMP and tail calls.
20895         * mini.c: obey tail.call. Don't precompile methods target
20896         of CEE_JMP.
20897         * tramp-x86.c: new trampoline code to handle methods
20898         reached through a jump.
20899
20900 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20901
20902         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20903         bit values to registers
20904
20905 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20906
20907         * mini.c (mono_compile_get_interface_var): share interface
20908         variables if possible.
20909
20910 2003-05-16  Martin Baulig  <martin@ximian.com>
20911
20912         * debug-mini.c (mono_init_debugger): New function to initialize
20913         the debugger.  This is not in the debugger since it needs to
20914         access some of mini's internals.
20915
20916 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20917
20918         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20919
20920 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20921
20922         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20923         for value type handling.
20924
20925 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20926
20927         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20928         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20929
20930 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20931
20932         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20933           the constructor through a proxy.
20934
20935 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20936
20937         * jit-icalls.c, inssel.brg: fixes to array element address
20938         calculations.
20939
20940 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20941
20942         * mini-x86.c (is_regsize_var): allocate pointer to registers
20943
20944 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20945
20946         * driver.c: fixed typo, added intrins to the set of optimizations
20947         tested with regressions.
20948
20949 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20950
20951         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20952         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20953         test case.
20954
20955 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20956
20957         * inssel.brg: remove some common pop instructions without side effects
20958
20959 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20960
20961         * inssel-x86.brg: fixed thinko in int to double conversions.
20962
20963 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20964
20965         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20966
20967 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20968
20969         * inssel-long32.brg: two more missing instructions.
20970
20971 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20972
20973         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20974         if not already set.
20975
20976 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20977
20978         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20979         correctly.
20980
20981         * basic-float.cs: Added tests for negative zero.
20982
20983 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20984
20985         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20986         a couple of missing operations for long casts, with test cases.
20987
20988 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20989
20990         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20991
20992 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20993
20994         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20995         code size estimation.
20996
20997 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20998
20999         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21000         abstract methods (fix bug 42542)
21001
21002         * aot.c: add ability to handle array types
21003         
21004 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21005
21006         * mini.c: Call the _specific versions of the object allocation
21007         functions if possible.
21008
21009 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21010
21011         * driver.c: call setlocale ().
21012
21013 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21014
21015         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21016         windows build.
21017
21018 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21019
21020         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21021
21022         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21023         wrappers (fix bug 42122)
21024
21025 2003-05-04  Martin Baulig  <martin@ximian.com>
21026
21027         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21028
21029         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21030         s/mini_set_defaults/mono_set_defaults/g.
21031
21032 2003-05-04  Martin Baulig  <martin@ximian.com>
21033
21034         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21035
21036 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21037
21038         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21039         (reported by Don Roberts).
21040
21041 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21042
21043         * mini.c: temporarily work around two bugs for this release.
21044
21045 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21046
21047         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21048         that contains -export-dynamic and it makes using the ld script
21049         useless.
21050         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21051
21052 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21053
21054         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21055         specific cpu.
21056
21057 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21058
21059         * mini.c: make sure leave calls all the needed finally blocks,
21060         even when the target jumps out of multiple exception clauses.
21061
21062 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21063
21064         * ldscript, Makefile.am: add linker script to reduce the number of
21065         exported symbols (should also fix the issues with libwine defining
21066         some of the same symbols in io-layer).
21067
21068 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21069
21070         * driver.c (mini_main): Avoid assertion when no file name is given on 
21071         the command line.
21072
21073 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21074
21075         * driver.c: added --version/-V command line option.
21076         Added the inline optimization in the regression tests.
21077
21078 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21079
21080         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21081         to the type in the method signature (fixes bug#42134).
21082
21083 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21084
21085         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21086
21087 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21088
21089         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21090
21091 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21092
21093         * driver.c: fixed bug #42100.
21094
21095 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21096
21097         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21098
21099 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21100
21101         * mini.c: moved most of the code required to do inlining to its own
21102         function so it can be reused. Inline also ctors if appropriate.
21103
21104 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21105
21106         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21107         the runtime can call mono API functions.
21108
21109 2003-04-27  Martin Baulig  <martin@ximian.com>
21110
21111         * debug-mini.c (mono_debug_init_method): Added
21112         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21113         send a notification to the debugger.
21114
21115         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21116         running in the Mono Debugger, just pass the breakpoint number to
21117         mono_debug_init_method().
21118
21119         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21120
21121 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21122
21123         * mini.c: allow some more unsafe compares.
21124
21125 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21126
21127         * mini-x86.c, Makefile.am: make distcheck works (partially from
21128         a patch by Richard Lee <r.h.lee@attbi.com>).
21129         * regset.c, regset.h: removed, they are unused.
21130
21131 2003-04-25  Dick Porter  <dick@ximian.com>
21132
21133         * driver.c: Usage reports the name as 'mono' not 'mini'
21134         * exceptions-x86.c: Build and run on freebsd
21135
21136 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21137
21138         * Makefile.am: install the program with the 'mono' name and
21139         the library as libmono instead of mini and libmini.
21140
21141 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21142
21143         * driver.c: provide the APIs for the embedding interface of the old jit.
21144
21145 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21146
21147         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21148
21149 2003-04-23  Martin Baulig  <martin@ximian.com>
21150
21151         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21152
21153         * driver.c: Added `--debug' command line argument to enable
21154         debugging support.
21155
21156 2003-04-23  Martin Baulig  <martin@ximian.com>
21157
21158         * debug.[ch]: Removed.  The code is now in
21159         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21160
21161         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21162         last six months.
21163
21164 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21165
21166         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21167
21168 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21169
21170         * mini.c:
21171         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21172         mono_domain_finalize.
21173         (mini_method_compile): use mono_method_profile* if the the option is
21174         enabled.
21175
21176 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21177
21178         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21179         methods with their wrapper.
21180
21181         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21182         methods with their wrapper.
21183
21184         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21185         their wrapper.
21186
21187         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21188         wrapper.
21189
21190         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21191         methods.
21192
21193 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21194
21195         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21196
21197 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21198
21199         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21200         of the mempool. This is slightly faster and uses less memory
21201
21202 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21203
21204         * mini.c: avoid O(n) allocation for variables.
21205
21206 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21207
21208         * mini.c: handle items on the stack after inlining methods.
21209
21210 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21211
21212         * mini.c: make the method->opcode optimization dependent
21213         on MONO_OPT_INSTRINS and do it lazily.
21214
21215 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21216
21217         * driver.c: print overall results at the end of regression run.
21218
21219 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21220
21221         * inssel.brg: don't overwrite symbolic registers.
21222
21223 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21224
21225         * inssel-x86.brg: fix conversion from long to float.
21226
21227 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21228
21229         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21230
21231 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21232
21233         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21234
21235         * driver.c: Added --print-vtable option as in the old JIT.
21236
21237 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21238
21239         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21240
21241 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21242
21243         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21244
21245 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * mini.c regalloc.c regalloc.h: Fix memory leak.
21248
21249 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21250
21251         * aot.c (mono_aot_get_method): register all used strings
21252
21253 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21254
21255         * mini.c: always intern strings references with ldstr at compile time.
21256
21257 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21258
21259         * Makefile.am: add BUILT_SOURCES.
21260
21261 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21262
21263         * driver.c: give a better error message when the assembly to execute
21264         doesn't have an entry point.
21265
21266 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21267
21268         * Makefile.am: added hack for automake
21269
21270         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21271         correct sematics.
21272
21273         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21274
21275 22003-04-07  Martin Baulig  <martin@ximian.com>
21276
21277         * Makefile.am: Added Makefile.am.
21278
21279         * debugger-main.c: Removed, this is now in the debugger where it
21280         belongs.
21281
21282         * mini.pc.in: Call this package `mini' for the moment.
21283
21284
21285
21286
21287
21288
21289
21290
21291
21292
21293
21294
21295
21296
21297