2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mono / mini / ChangeLog
1
2 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3
4         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
5
6 2009-07-13  Mark Probst  <mark.probst@gmail.com>
7
8         * mini.c: Register function for getting the IP from a signal
9         context with metadata.
10
11 2009-07-09  Mark Probst  <mark.probst@gmail.com>
12
13         * method-to-ir.c: When doing a call which might be remote from
14         shared generic code to other shared code with open type arguments,
15         get the remoting invoke wrapper from the RGCTX and do an indirect
16         call to it.
17
18 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
21         after the unbox trampoline in the full-aot case.
22
23 2009-07-02  jonas echterhoff <jonas@unity3d.com>
24         
25         * mini.c: Move initialization of jit_mutex before debugger initialization
26         
27         to avoid crashes.
28         
29         
30         * Info.plist: added Info.plist and link flag to enable the mono executable
31         to access other processes. Requires codesigning of the executable to work.
32         
33         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
34         
35         compile on OS X.
36         
37
38 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
39
40         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
41
42 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
43
44         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
45         when the generic instance is an instantiation of a subclass of the
46         methods class. Fixes #517166.
47
48 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
51         code.
52
53         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
54         AOTed code.
55
56         * CMakeLists.txt: Add minimal support for installation.
57
58 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
59
60         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
61         determine whenever a method is directly callable to a separate function.
62
63         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
64         needed ones as a result of the previous change.
65
66         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
67         type of register arrays.
68
69         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
70         type of register arrays.
71
72 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
73         
74         Contributed under the terms of the MIT/X11 license by
75         Jerry Maine <crashfourit@gail.com>.
76
77         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
78
79 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
80
81         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
82
83 2009-06-24  Neale Ferguson <neale@sinenomine.net>
84
85         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
86         dump of structure return value. Fix some formatting.
87         * cpu-s390x.md: Fix lengths of instruction sequences.
88         * mini-s390.c: Minor formatting changes.
89
90 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
91
92         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
93         Use sigaction on freebsd as well.
94
95 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
96
97         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
98         uses #ifdef on it.
99         
100         * mini.c (mini_init): Revert a change which breaks cross-compilation.
101
102 2009-06-22  Mark Probst  <mark.probst@gmail.com>
103
104         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
105
106 2009-06-22  Mark Probst  <mark.probst@gmail.com>
107
108         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
109
110 2009-06-20  Martin Baulig  <martin@ximian.com>
111
112         * debug-mini.c
113         (MonoDebuggerThreadFlags): New enum typedef.
114         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
115         (mono_debugger_thread_created): Added `gpointer func' argument;
116         initialize the new `thread_flags' field.
117
118 2009-06-18  Martin Baulig  <martin@ximian.com>
119
120         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
121         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
122
123         * debug-debugger.c
124         (mini_debugger_set_attach_ok): New function; sets the attach-ok
125         flag in `MONO_DEBUGGER__info.runtime_info'.
126
127         * driver.c
128         (mono_main): Call mini_debugger_set_attach_ok() if generics
129         sharing is disabled.
130
131 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
132
133         * aot-compiler.c (add_wrappers): Fix a warning.
134
135         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
136         the ppc load/store macro changes.
137
138 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
139
140         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
141
142         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
143         not just the got symbol.
144
145         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
146         on ppc.
147
148         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
149         ppc.
150         
151         * aot-compiler.c: Remove some fixmes.
152
153         * driver.c (mono_main): Print a helpful message when cross-compiling.
154
155         * mini.c (mini_init): Disable signal handlers when cross-compiling.
156
157         * method-to-ir.c (initialize_array_data): Do the optimization if the
158         target byte order is little endian, instead of the host byte order.
159
160         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
161         wrappers into the mscorlib image, Emit a unique plt symbol for each
162         image, emit symbols for plt entries.
163
164         * image-writer.c (img_writer_emit_symbol_size): New function to emit
165         a .size directive.
166         
167 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
168
169         * aot-compiler.c (add_wrappers): Avoid calling 
170         mono_marshal_get_type_info () since it can assert for some types.
171
172         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
173         ldtoken are used inside wrappers.
174
175         * helpers.c: Add support for prefixing tools with the arch name.
176
177         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
178         quantities when using ilp32.
179
180         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
181         spill slots. Use sizeof(mgreg_t) for the spill slot size.
182
183         * image-writer.c: Use .long on ilp32.
184
185         * aot-compiler.c: Use 32 bit loads on ilp32.
186         
187 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
188
189         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
190
191         * mini-ops.h: Use TARGET_POWERPC define for consistency.
192
193         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
194
195         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
196         second got slot of every aot image.
197         
198         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
199         aot on platforms with function pointers.
200
201         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
202         support for aot/full aot on ppc/ppc64.
203         
204         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
205         arguments which are needed on ppc.
206
207         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
208         argument.
209
210         * mini-trampolines.c aot-runtime.c: Update after the above changes.
211         
212         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
213
214         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
215
216         * aot-compiler.c (emit_got_info): Fix reading unused memory.
217
218         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
219
220 2009-06-17  Geoff Norton  <gnorton@novell.com>
221
222         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
223
224 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
225
226         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
227         to control whenever the dwarf writer is in xdebug or aot mode.
228         (emit_class_dwarf_info): Use a separate abbrev for structures without
229         children.
230
231         * aot-compiler.c: Pass the appending parameter to 
232         mono_dwarf_writer_create ().
233
234         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
235         falls through to its next bblock. Fixes #513931.
236
237         * iltests.il: Add a test.
238
239         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
240         infor even if emit_line is FALSE, as the apple linker seems to require it.
241
242         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
243
244         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
245         gcc does.
246         (emit_fde): Ditto.
247
248 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
249
250         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
251         mips build.
252
253 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
254
255         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
256         'has_call_handler' fields.
257
258         * method-to-ir.c (mono_method_to_ir): Set them if needed.
259
260         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
261         first bblock if not needed. Fixes #512790.
262         
263 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
264
265         * aot-compiler.c (mono_compile_assembly): Fix a warning.
266         
267         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
268         wrappers.
269
270         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
271         remoting-invoke-with-check wrappers, which are not needed when running with
272         full-aot, since it doesn't support remoting.
273         
274 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
275
276         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
277
278         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
279         method info, it is not used anymore.
280
281         * mini.h: Bump AOT file format version.
282         
283         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
284         word smaller.
285
286         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
287         change above.
288         
289         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
290
291         * mini.h: Bump AOT file format version.
292         
293 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
294
295         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
296         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
297         iphone.
298
299         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
300         of CKFINITE and FBGE for VFP.
301
302 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
303
304         * aot-compiler.c: Don't align code to 16 bytes on arm.
305         
306         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
307         before the methods they belong to.
308
309         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
310         the full-aot case if possible, since the trampoline will be called right 
311         away.
312
313         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
314         trampolines to 1024 after the change above.
315
316         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
317         trampoline to save 8 bytes per trampoline.
318
319         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
320         change above.
321
322 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
323
324         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
325
326 2009-06-08  Martin Baulig  <martin@ximian.com>
327
328         * debug-mini.c
329         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
330         (_mono_debugger_throw_exception): Don't make this static.
331         (_mono_debugger_unhandled_exception): Likewise.
332         (mono_debugger_handle_exception): Moved to mini-exceptions.c
333
334         * debug-mini.c
335         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
336         (_mono_debugger_throw_exception): Add function prototype.
337         (_mono_debugger_unhandled_exception): Likewise.
338
339         * mini-exceptions.c
340         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
341         arg; return the first exception handler if the exception is caught
342         and we're running inside the debugger.
343         (mono_debugger_handle_exception): Moved here from debug-mini.c;
344         improve exception handle inside runtime-invoke, check whether the
345         exception is actually caught in the method being invoked and not
346         by the runtime-invoke-wrapper.
347
348 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
349
350         * image-writer.c: Improve support for the osx assembler.
351
352         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
353         support them.
354
355 2009-06-08  Martin Baulig  <martin@ximian.com>
356
357         * debug-mini.c
358         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
359         (_mono_debugger_throw_exception): Don't make this static.
360         (_mono_debugger_unhandled_exception): Likewise.
361         (mono_debugger_handle_exception): Moved to mini-exceptions.c
362
363         * debug-mini.c
364         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
365         (_mono_debugger_throw_exception): Add function prototype.
366         (_mono_debugger_unhandled_exception): Likewise.
367
368         * mini-exceptions.c
369         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
370         arg; return the first exception handler if the exception is caught
371         and we're running inside the debugger.
372         (mono_debugger_handle_exception): Moved here from debug-mini.c;
373         improve exception handle inside runtime-invoke, check whether the
374         exception is actually caught in the method being invoked and not
375         by the runtime-invoke-wrapper.
376
377 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
378
379         * image-writer.c (append_subsection): Don't align subsections of the
380         debug_line section as a workaround.
381
382         * dwarfwriter.c: Emit line number info in the AOT case as well.
383
384 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
385
386         This patch is contributed under the terms of the MIT/X11 license
387
388        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
389        code_len <= code_size
390
391 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
392
393         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
394
395 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
396
397         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
398         invoke wrappers, we now use trampolines instead.
399
400 2009-06-04  Mark Probst  <mark.probst@gmail.com>
401
402         * mini-darwin.c: The exception thread must not be registered with
403         the GC.
404
405 2009-06-04  Mark Probst  <mark.probst@gmail.com>
406
407         * mini-gc.c: Disable the code because it makes SGen crash.
408
409 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
410
411         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
412         instead of asserting.
413
414 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
415
416         * aot-compiler.c (mono_compile_assembly): Move the creation of the
417         output file after the code has been compiled.
418
419 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
420
421         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
422
423 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
424
425         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
426         entries distinction to simplify the code.
427
428         * mini.h: Bump AOT file format version.
429         
430 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
431
432         * objects.cs: Fix the signature of one of the tests.
433
434         * mini.c (mini_create_ftnptr): New helper function, moved here from
435         object.c.
436         (mini_get_addr_from_ftnptr): Ditto.
437         (mini_init): Install the new helpers.
438
439 2009-05-28  Martin Baulig  <martin@ximian.com>
440
441         Correctly initialize the debugger when embedding Mono.
442
443         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
444         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
445         see documentation in mini_debug_running_inside_mdb().
446
447         * debug-debugger.c
448         (mini_debug_running_inside_mdb): New function to check whether
449         we're running inside mdb.
450
451         * mini.c (mini_init): Call mini_debugger_init() if we're running
452         inside the debugger.
453
454         * driver.c (mono_main): Moved the call to mini_debugger_init()
455         into mini_init() to make this work when embedding Mono.
456
457         * debug-debugger.c (mini_debugger_init): Warn about duplicate
458         calls to mini_debugger_init().
459
460         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
461         mono_debugger_main() -> mini_debugger_main() and put them inside a
462         `MONO_DEBUGGER_SUPPORTED' conditional.
463
464 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
467         this is no longer in use.
468         * mini.h: Same.
469
470 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
471
472         * mini-sparc.c (add_outarg_load): Fix the sparc build.
473
474         * aot-compiler.c (emit_method_code): Always write out C style symbols for
475         methods.
476
477 2009-05-27  Martin Baulig  <martin@ximian.com>
478
479 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
480
481         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
482         long_conv_to_r_un to 64 bits.
483
484         * cpu-x86.md: Increase the instruction size due to the changes.
485
486         * iltests.il.in: Add regression test.
487
488         Fixes #467201.
489
490 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
491
492         * objects.cs: Move the previous test from basic.cs to here.
493
494 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
495
496         * basic.cs: Add regression test for #506915.
497
498 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
499
500         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
501         optimization we must check the bb of the first byte of stobj as
502         it's the only one set in cil_offset_to_bb.
503
504         Fixes #506915.  
505
506 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
507
508         * image-writer.c: Fix pointer directive on ppc64.
509
510 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
511
512         * image-writer.c (asm_writer_emit_section_change): Avoid using
513         .bss subsections on ppc too.
514
515 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
516
517         * image-writer.c: Fix the definition of TARGET_ASM_....
518         
519         * image-writer.c: Fix the emission of assembler directives in the last
520         change.
521
522         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
523         exception throwing code to accomodate ppc64.
524
525         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
526         size to work on ppc64 too.
527
528         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
529         too.
530
531         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
532         the assembler dialect instead of using platform specific defines.
533
534 2009-05-22  Geoff Norton  <gnorton@novell.com>
535
536         * mini-arm.c (get_call_info): If a structure is split between the stack
537         and argument registers, we should not advance the stack pointer by the entire
538         native size, but just by the amount that spilled.
539
540 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
541
542         * mini-arm.c (get_call_info): Handle structures with alignment requirements
543         correctly.
544
545 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
546
547         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
548         wrappers normally.
549         
550         * aot-compiler.c (add_extra_method): Fix up the collection of extra
551         methods so wrapper don't get added twice.
552         (add_generic_instances): Don't add methods of arrays.
553
554         * generics.cs: Mark one test as !FULLAOT.
555
556 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
557
558         * mini-x86.c (emit_move_return_value): Remove unused vars.
559
560 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
561
562         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
563         decomposing 8 bytes structs into a LCALL.
564
565         * mini-x86.c (emit_move_return_value): We no longer push the vtype
566         pointer for where to store the returned regs.
567
568         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
569         state the concern.
570
571         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
572
573 2009-05-20  Miguel de Icaza  <miguel@novell.com>
574
575         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
576         without getenv.
577
578 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
579
580         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
581
582         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
583         generics.
584
585 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
586
587         * local-propagation.c (mono_local_cprop): Avoid local propagation
588         across paired add/sub if the first instruction dest reg is it's
589         source reg. For example:
590
591         int_add_imm R12 <- R12 [1] clobbers: 1
592         int_sub_imm R42 <- R12 [1] clobbers: 1
593
594         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
595         maintain the math identify.
596
597         Fixes #505375.
598
599 2009-05-20  Andreia Gaita  <avidigal@novell.com>
600
601         * Makefile.am: avoid going on the network just to get the revision,
602         use git log instead
603
604 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
605
606         Fixed estimate for short branches on amd64 (they were off mark, and
607         enabling call prolog-epilog instrumentations caused assertions).
608         * mini.h (struct MonoBasicBlock): added max_length field to hold the
609         estimate for the maximum length of this basic block.
610         * mini-amd64.c:
611         - mono_arch_emit_prolog: compute max_length for each basic block
612           (instead of max_offset), and inflate size estimate also for entry bb
613           in case of code instrumentation.
614         - mono_arch_output_basic_block: get rid of "cpos" (the current
615           estimated "position" in the code), and always use "offset" instead,
616           which is accurate; at the beginning of the function quickly recompute
617           max_offset for all the remaining blocks, starting from the current
618           cfg->code_len (which is correct, and not estimated) and using the
619           estimated block lengths computed previously.
620
621 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
622
623         * exceptions-ppc.c: Remove the caching from the trampoline creation 
624         functions, it is already done in the caller.
625
626         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
627
628         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
629         MONO_ARCH_GSHARED_SUPPORTED define.
630
631         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
632
633         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
634         function.
635
636 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
637
638         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
639         call to mono_marshal_get_rgctx_invoke ().
640
641         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
642         mono_marshal_get_static_rgctx_invoke (), all platforms which support
643         gshared use the static rgctx trampolines now.
644         
645         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
646         platform supports it.
647
648 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
649
650         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
651
652         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
653
654 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
655
656         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
657
658         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
659         for ppc.
660
661 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
662
663         Made it possible for mono_arch_instrument_epilog to preserve
664         argument registers, otherwise instrumenting the "epilogue" before
665         a tail call would clobber them.
666         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
667         if like mono_arch_instrument_epilog but with an additional parameter
668         that states if argument registers must be preserved.
669         * mini.c: implemented mono_arch_instrument_epilog as a call to
670         mono_arch_instrument_epilog_full without asking to preserve argument
671         registers (this makes the existing code work as usual).
672         * mini-amd64.c:
673         - mono_arch_instrument_epilog: add parameter to transform it into
674         mono_arch_instrument_epilog_full, and preserve argument registers
675         when required.
676         - mono_arch_output_basic_block, OP_TAILCALL case: call
677         mono_arch_instrument_epilog_full.
678         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
679         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
680         only transformed mono_arch_instrument_epilog into
681         mono_arch_instrument_epilog_full.
682
683 2009-05-15  Geoff Norton  <gnorton@novell.com>
684
685         * mini-darwin.c: This works on arm now.
686
687 2009-05-14  Geoff Norton  <gnorton@novell.com>
688
689         * jit.h, driver.c: Allow full-aot to be decided programatically by the
690         embedding api.
691
692 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
693
694         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
695         label names.
696
697         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
698         wrappers during full aot mode correctly.
699
700         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
701         methods correctly.
702
703         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
704         mono_metadata_type_hash ().
705
706 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
707
708         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
709         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
710         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
711         Removed MONO_INST_BRLABEL from the instruction flags, and the
712         remaining code that used it, because we do not support branches inside
713         basic blocks (and branch target labels) anymore.
714         * Makefile.am: As part of the above cleanup, remove reference to
715         BURG files which don't exist anymore.
716
717 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
718
719         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
720         osx.
721
722         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
723         to use mono_arch_throw_corlib_exception.
724
725         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
726         mono_arch_throw_corlib_exception for throwing corlib exceptions.
727
728         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
729         domain mempool.
730
731         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
732
733         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
734         for the got to make debugging easier and to avoid confusing it with the
735         system got.
736         
737         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
738         method so a breakpoint can be set when using gdb.
739
740 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
741
742         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
743         on mono_method_get_imt_slot ().
744
745         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
746         num_decodes variables.
747
748         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
749         change as it doesn't seem to work.
750         
751         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
752         wrappers.
753
754 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
755
756         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
757         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
758
759         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
760         builder when using full aot.
761
762         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
763         here, it is already handled.
764         
765         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
766         correctly for IMT.
767
768         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
769
770         * mini-arm.h: Enable IMT for full aot.
771         
772         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
773         arch doesn't support it.
774
775         * mini.c (mini_init): Don't disable IMT for full aot if the
776         architecture supports it.
777
778         * mini.h (MonoAotTrampoline): New enum containing the different types
779         of 'numerous' trampolines.
780         (MONO_AOT_FILE_VERSION): Bump this.
781
782         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
783         static rgctx trampolines. Add support for full-aot IMT thunks.
784
785         * mini-amd64.h: Enable IMT for full aot.
786
787         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
788         to exclude tests belonging to a category.
789
790         * generics.cs: Mark some tests with a !FULLAOT category.
791
792         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
793         generics tests.
794
795 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
796
797         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
798         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
799         (emit_plt): Fix a warning.
800
801 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
802
803         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
804         back into aot-compiler.c to a place where the other functions shared by
805         the runtime and aot compiler are.
806         
807         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
808         as done previously, instead of in MonoAotFileInfo, since pointers might have
809         alignment requirements.
810
811         * mini.h: Bump AOT file format version.
812
813 2009-05-10  Miguel de Icaza  <miguel@novell.com>
814
815         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
816         that is used at runtime from the aot-compiler.c, this makes it
817         work on setups that remove the AOT compiler from the output
818         image. 
819
820 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
821
822         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
823         PPC.
824
825         * mini-ppc.h: Enable static rgctx trampolines for ppc.
826
827         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
828
829         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
830         stuff to mono_arch_decompose_long_opts ().
831         (mono_decompose_opcode): Remove some dead code.
832
833 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
836         cmethod can be null for quite a some reasons.
837
838 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
839
840         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
841
842 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
843
844         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
845
846 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
847
848         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
849         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
850         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
851         calls returning structures by addr on amd64.
852
853         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
854
855         * iltests.il.in: Restructure the tail call tests a bit.
856         
857 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
858
859         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
860         for virtual methods too.
861
862 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
863
864         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
865         due to regression in verifying System.dll.
866
867 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
868
869         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
870         in dynamic methods.
871
872         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
873         instances.
874
875         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
876         g_str_hash () which can change.
877
878         * driver.c (mini_regression): Disable optimizations not supported by
879         the cpu. Fixes #500019.
880
881         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
882         build.
883
884 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
885
886         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
887         to the latest LLVM code.
888
889 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
890
891         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
892
893 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
894
895         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
896         x86/amd64.
897
898         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
899         no longer saving offsets, so just save the patch types along with the other
900         info.
901         * aot-runtime.c (load_patch_info): Update after the changes to 
902         encode_patch_list ().
903         (decode_got_entry): Removed, merged into load_patch_info ().
904         (is_shared_got_patch): Removed, call the same function from
905         aot-compiler.c.
906
907         * mini.h: Bump aot file format version.
908         
909         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
910         half-finished no-dlsym code.
911
912         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
913         option.
914
915         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
916         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
917
918 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
919
920         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
921         buffer length to work with AOT code.
922
923         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
924         ldfld/stfld opcodes.
925
926         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
927         as it is not used.
928
929         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
930
931         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
932
933         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
934         LLVM API.
935
936         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
937         if needed. Don't decompose long operations when using llvm.
938
939 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
940
941         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
942         PAGESIZE constant.
943
944         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
945
946 2009-05-03  Martin Baulig  <martin@ximian.com>
947
948         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
949         mono_debugger_insert_method_breakpoint() since the class init
950         handler we're inserting at the top of the method already gives us
951         a notification.
952
953 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
954
955         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
956         to mono_arch_decompose_long_opts () for x86 and arm.
957
958 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
959
960         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
961         TARGET_AMD64 here.
962
963 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
964
965         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
966         JIT code.
967
968 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
969
970         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
971         number of trampolines used in full-aot mode.
972
973         * aot-compiler.c: Add an ntrampolines option to set the number of 
974         trampolines emitted in full-aot mode.
975
976 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
977
978         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
979         a volatile load. Get rid of get_tempname (), llvm assigns names
980         automatically.
981
982         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
983         builder function.
984
985         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
986         a value.
987
988         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
989         level 1.
990
991         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
992         to the same register as a fixed sreg2. Fixes #497271.
993
994         * iltests.il.in: Add a new test.
995
996 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
997
998         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
999         stack, since pushes complicate exception handling.
1000
1001         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
1002         the stack if they are passed using moves.
1003
1004         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1005
1006         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
1007         when using llvm.
1008
1009         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
1010         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
1011         of FMOVE if it is an R4.
1012
1013 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
1014
1015         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
1016
1017         * mini.h (LLVMCallInfo): New structure to store calling convention 
1018         information for the LLVM back end similar to the CallInfo structures in 
1019         the back-ends.
1020
1021         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
1022         call information in a format usable by LLVM.
1023         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
1024
1025         * method-to-ir.c (mono_emit_call_args): Emit calls using 
1026         mono_llvm_emit_call () when compiling using LLVM.
1027
1028         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
1029         comments to all functions. Fix memory leaks. Add a public init/cleanup
1030         function.
1031
1032         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
1033
1034         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
1035         mono_array_new_va () jit icall.
1036         
1037 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
1038
1039         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
1040         multiple machine description files to be specified.
1041         * mini-ops.h: fixes for cross-compilation.
1042
1043 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1044
1045         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
1046         some porting work.
1047
1048 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1051         to prevent asserts in various passes. Fixes #497220.
1052
1053 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1056         a racy assert.
1057
1058         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1059         table to avoid duplicates.
1060
1061         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1062         
1063         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1064         option is used.
1065
1066 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1067
1068         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1069         is for method or field access.
1070
1071 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1072
1073         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1074         a Value to stdout.
1075
1076         * mini-llvm.c (mono_llvm_emit_method): Use it.
1077         
1078         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1079         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1080         on volatile values.
1081
1082         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1083         synchronized methods.
1084
1085         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1086
1087         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1088
1089         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1090         OP_LOADI8_MEM.
1091
1092         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1093         allowing some options to be set dynamically.
1094
1095 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1098         unconditional branch.
1099
1100         * mini.h (MonoTrampolineType): Add new trampoline type 
1101         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1102         compiled code.
1103
1104         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1105         function.
1106
1107         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1108         creation function.
1109
1110         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1111         is enabled. Instead, use the llvm vcall trampoline.
1112         
1113         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1114
1115         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1116         
1117         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1118         functions.
1119
1120         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1121         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1122
1123         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1124         OP_IA64_CSET opcode.
1125
1126         * mini.c: Fix a warning.
1127
1128         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1129         THROW to the appropriate llvm type.
1130
1131 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * mini.c (mini_method_compile): Add statistics for methods JITted
1134         with/without LLVM.
1135
1136 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1139         OP_IA64_CMP_<cond>_IMM opcodes.
1140
1141 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1144         corlib exceptions.
1145
1146         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1147         correctly.
1148
1149         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1150         GENERICINST.
1151
1152 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1153
1154         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1155
1156 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1159         support.
1160
1161         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1162         rgctx invoke trampolines for x86.
1163
1164         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1165         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1166         (mono_arch_get_vcall_slot): Simplify this.
1167
1168 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1171         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1172
1173 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1174
1175         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1176         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1177
1178         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1179
1180         * liveness.c (visit_bb): Remove a needless assert.
1181
1182 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1185         full aot support to the arch specific code.
1186
1187         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1188
1189         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1190
1191         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1192         
1193         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1194         collect information about the delegate invoke impl trampolines.
1195
1196         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1197         to save trampolines during full-aot mode.
1198
1199         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1200         creation function which returns a trampoline which sets the rgctx
1201         argument.
1202         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1203         wrapper if possible.
1204         (mono_delegate_trampoline): Ditto.
1205
1206         * mini.c (mono_jit_runtime_invoke): Ditto.
1207
1208         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1209         
1210         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1211
1212         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1213         
1214 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1217         just setting the opcode to OP_NOP.
1218
1219 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * mini.c (mini_method_compile): Put the last change inside an 
1222         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1223         
1224         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1225         and extend live ranges to cover the whole method when using xdb.
1226
1227         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1228         do it in the trampolines.
1229
1230         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1231         needed.
1232
1233         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1234         
1235         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1236         call code in full-aot mode since IMT is disabled there.
1237         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1238         new JIT no longer has that restriction.
1239
1240         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1241
1242         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1243         a more compact format.
1244         (mono_aot_wrapper_name): New function to return a unique name for a
1245         wrapper method, also used by the AOT runtime.
1246
1247         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1248         aot-compiler.c.
1249
1250         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1251         when a ICollection<T> etc is encountered.
1252         (add_generic_instances): Process method arguments/locals too.
1253         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1254         trampoline names.
1255
1256         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1257         
1258 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1259
1260         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1261
1262         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1263
1264         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
1265         representing the result of the decomposition. Nullify instructions
1266         instead of setting them to OP_NOP since nops can't have registers
1267         set.
1268
1269 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * aot-compiler.c (mono_compile_assembly): Split this huge function into
1272         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
1273         info. Strip 'mapping symbols' on ARM.
1274
1275         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
1276         
1277         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
1278         this with the native genmdesc.
1279
1280 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1281
1282         * aot-runtime.c:  Fixing the MSVC build.
1283
1284         Code is contributed under MIT/X11 license.
1285
1286 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1289         JITted code depends on it.
1290
1291 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1292
1293         * aot-compiler.c: Use new MonoGenericParam accessors.
1294
1295 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1296
1297         Reduce memory usage and improve correctness wrt MonoGenericParam
1298         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1299         handing.  Avoid allocating MonoGenericParams, but use the ones in
1300         the container itself.
1301
1302 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1303
1304         * tasklets.c: Return exceptions in the out argument.
1305
1306 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1309         opcode. Use pointer types in more places instead of casting them to 
1310         integers.
1311
1312         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1313         optimizations.
1314         (mono_llvm_optimize_method): New helper function to optimize a method.
1315
1316         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1317         widening code so it could be called from more places.
1318         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1319         code paths in the call opcodes.
1320
1321 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1322
1323         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1324
1325 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * dwarfwriter.c: Use _ to separate class name 
1328         components as gdb can't handle '.'. Represent reference variables
1329         as 'class <NAME>&'.
1330         
1331         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1332
1333         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1334         
1335         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1336
1337         * gc-test.cs: New file with GC stack marking tests.
1338         
1339         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1340         negative numbers for vfp.
1341
1342         * basic-float.cs: Add a test.
1343         
1344 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1345
1346         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1347
1348 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1349
1350         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1351         part of tasklet/continuation support.
1352
1353 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1356         amd64 opcodes inside an ifdef.
1357
1358         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1359         of complex types.
1360         
1361         * dwarfwriter.c (emit_type): Emit the class info for classes.
1362
1363 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1364
1365         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1366
1367         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1368
1369         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1370
1371         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1372
1373 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1374
1375         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1376
1377         * mini-llvm.c: Update comments.
1378
1379         * mini.h (COMPILE_LLVM): New macro.
1380
1381         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1382
1383         * ssa.c (mono_ssa_compute): Ditto.
1384         
1385         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1386         the unwind ops from a DWARF FDE.
1387
1388         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1389         methods by extracting the dwarf unwind ops from the unwind info generated
1390         by LLVM.
1391         
1392         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1393         calls.
1394
1395         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1396         addressing modes.
1397
1398 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * Makefile.am (llvm_sources): Enable this.
1401
1402         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1403         failing back to the JIT if something cannot be handled.
1404
1405         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1406         compiling with LLVM.
1407
1408         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1409         compiling with LLVM.
1410
1411         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1412         compiling with LLVM.
1413
1414         * mini-ops.h: Add a few opcodes needed by LLVM.
1415
1416         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1417         has no unwind info.
1418
1419         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1420         backend.
1421
1422         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1423
1424         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1425
1426 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1427
1428         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1429         ridiculously large methods.
1430
1431 2009-03-31  Martin Baulig  <martin@ximian.com>
1432
1433         * debug-debugger.c (debugger_remove_breakpoint): Call
1434         mono_debugger_remove_class_init_callback ().
1435
1436 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1439         right before emitting code, not at the start.
1440
1441         * mini.c (mono_postprocess_patches): Extract this into a separate function
1442         from mono_codegen ().
1443
1444         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1445         byref types correctly.
1446
1447 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1450         by the last change.
1451
1452 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1455         indirect calls, this avoids problems where get_vcall_slot () would get
1456         confused by the native code for the instruction preceeding the call.
1457         (mono_arch_get_vcall_slot): Simplify this.
1458         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1459
1460         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1461         register allocator now seems to depend on them instead of the data in
1462         cpu-<ARCH>.md.
1463
1464         * mini.c (mini_method_compile): Throw the correct type of exception if
1465         mono_method_get_header () fails because of a loading error.
1466
1467 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * mini.c (mini_method_compile): Clear the loader error if the method
1470         header cannot be decoded.
1471
1472         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1473         interface methods on proxies correctly.
1474
1475         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1476         this argument for vtype methods. Add precise liveness info for arguments.
1477
1478         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1479         LIVERANGE_START/END opcodes.
1480
1481         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1482         for arguments and values in registers.
1483
1484 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1487         return a valuetype. Fixes #487518.
1488
1489         * iltests.il: Add a test.
1490         
1491         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1492
1493         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1494         closed over a null reference correctly.
1495
1496 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1499
1500 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1501
1502         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1503         allocated to the same registers as fixed sregs.
1504
1505 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1506
1507         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1508         ATOMIC_CAS_IMM ops.
1509
1510         * method-to-ir.c: Handle more cases for
1511         Interlocked.CompareExchange.
1512
1513         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1514         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1515         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1516
1517 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * aot-runtime.c (decode_method_ref): Fix a warning.
1520
1521         * unwind.c (mono_unwind_frame): Ditto.  
1522
1523 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1524
1525         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1526         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1527
1528         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1529         fix the handling of large values in the ALU_PC_G0_NC relocation.
1530
1531 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1534
1535 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1536
1537         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1538         ops.
1539
1540 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1541
1542         * method-to-ir.c: MINI_OP3 needs a comma.
1543
1544         * method-to-ir.c, mini.h, mini.c: Remove
1545         mono_init_op_sreg_counts ().
1546
1547 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1550         OP_JMP.
1551         
1552         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1553         assertion.
1554
1555         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1556
1557         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1558         code somewhat.
1559
1560 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1561
1562         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1563         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1564         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1565         operations.
1566
1567 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * driver.c: Change location of gc_wrapper.h.
1570
1571         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1572         inside finally clauses correctly. Fixes #485721.
1573
1574         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1575         after the change above.
1576
1577         * exceptions.cs: Add a test.
1578         
1579 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1580
1581         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1582
1583         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1584         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1585         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1586
1587         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1588         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1589
1590 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1591
1592         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1593         Simplify logic for ensure_method_is_allowed_to_call_method. 
1594         Handle wrappers on callers.
1595
1596 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1599         them don't run yet.
1600
1601         * basic-simd.cs: Fix the names of some test methods.
1602
1603 2009-03-18  Geoff Norton  <gnorton@novell.com>
1604
1605         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1606
1607 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1610
1611 2009-03-17  Jb Evain  <jbevain@novell.com>
1612
1613         * driver.c: remove now uneeded call to mono_gc_base_init before
1614         mono_profiler_load.
1615
1616 2009-03-17  Jb Evain  <jbevain@novell.com>
1617
1618         * dwarfwriter.c (token_handler): handle more cases.
1619
1620 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1621
1622         * method-to-ir.c: Remove more dead code (that was required only
1623         because of method_is_safe). Fix compiler warnings.
1624
1625 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1626
1627         * method-to-ir.c: Remove unneeded/useless method_is_safe
1628         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1629
1630 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * mini.c (mini_method_compile): Print the method been compiled with
1633         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1634         for people not familiar with the runtime.
1635
1636 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1639         a managed object which is later put into a GList. Return its class instead.
1640
1641         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1642         stack slots when using sgen.
1643
1644 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1645
1646         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1647
1648 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1651         > so it works on the first vreg as well.
1652
1653 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1656         trigger randomly.
1657
1658         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1659         
1660         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1661         implement GArray.
1662
1663 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1666         native->IL offset mapping.
1667
1668 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1671
1672         * basic.cs: Add a test.
1673
1674 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1675
1676         * mini-x86.c (mono_arch_output_basic_block): Use different
1677         registers in case the ones we want to overwrite are used by the
1678         other operand.  Fixes regression in #480807.
1679
1680 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1683
1684         * dwarfwriter.c (emit_line_number_info): The line number info for
1685         IL code was off by one. Fix that.
1686
1687         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1688         stack.
1689
1690 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1691
1692         Contributed under the terms of the MIT/X11 license by Steven
1693         Munroe <munroesj@us.ibm.com>.
1694
1695         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1696         Fixes #483462.
1697
1698 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1699
1700         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1701         as well.
1702
1703 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1706         the delegate ctor handling code. Fixes #482638.
1707         
1708         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1709         #481458.
1710
1711         * iltests.il.in: Add a test.
1712         
1713         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1714         mini-posix.c.
1715
1716 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1717
1718         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1719         is shared generic code, return the trampoline, even if the method
1720         has already been compiled.  Fixes #479763.
1721
1722         * mini.c, mini.h: New function
1723         mono_jit_find_compiled_method_with_jit_info() which is the same as
1724         mono_jit_find_compiled_method() but also returns the jit info.
1725
1726 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1727
1728         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1729         for methods which actually have one.  For all other methods, make
1730         sure the this argument var is live the whole method.
1731
1732         * mini.c (mini_method_compile): Every shared method has a
1733         this/vtable/mrgctx info.  Fixes #480807.
1734
1735 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1736
1737         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1738         generic/imt thunks where some entries branch through the vtable,
1739         while other entries branch directly.
1740
1741 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1742
1743         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1744
1745         * mini-windows.c: Ditto.
1746         
1747         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1748         ctors.
1749
1750 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1753         down an assert.
1754
1755 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1756
1757         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1758         #481403.
1759
1760 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1761
1762         * exceptions-x86.c: Include debug-mini.h - fixes build.
1763
1764 2009-03-04  Martin Baulig  <martin@ximian.com>
1765
1766         * debug-mini.c: Clean up the exception API and add documentation.
1767         (mono_debugger_handle_exception): New public method; this is
1768         called when throwing an exception or encountering an unhandled one.
1769         (mono_debugger_call_exception_handler): Formerly known as
1770         mono_debugger_handle_exception(); this is used to tell the
1771         debugger that we're about to invoke an exception handler.
1772
1773 2009-03-04  Martin Baulig  <martin@ximian.com>
1774
1775         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1776         ../metadata/mono-debug-debugger.c; save and reset exception state.
1777
1778 2009-03-02  Martin Baulig  <martin@ximian.com>
1779
1780         * debug-mini.c: Moved the debugger exception handling here from
1781         ../metadata/mono-debug-debugger.c.
1782
1783         * debug-mini.h
1784         (MonoDebuggerExceptionAction): New exception typedef.
1785
1786         * debug-mini.c
1787         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1788
1789         * exceptions-amd64.c
1790         (mono_amd64_throw_exception): Use the new debugger exception
1791         handling code.
1792
1793         * mini-exceptions.c
1794         (mono_handle_exception_internal): Don't call
1795         mono_debugger_unhandled_exception() here.
1796
1797 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * mini.c aot-compiler.c: Update after the changes to 
1800         mono_marshal_get_runtime_invoke ().
1801
1802         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1803         Virtual generic methods might not have method->slot set, work around
1804         that.
1805
1806         * generics.cs: Add a test.
1807
1808 2009-03-02  Geoff Norton  <gnorton@novell.com>
1809
1810         * mini.c:
1811         * driver.c: Allow signal chaining of SIGFPE as well.
1812
1813 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1816         this since it now receives the method not its generic context in the
1817         IMT reg.
1818
1819         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1820         generic/imt thunks where some entries branch through the vtable, while
1821         other entries branch directly.
1822
1823         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1824
1825         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1826         support for interface methods as well.
1827
1828         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1829         using the normal IMT thunks.
1830
1831         generics.cs: Add new tests.
1832         
1833         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1834         the generic inst to the generic imt thunks. This fixes AOT support, 
1835         improves consistency with the normal IMT thunks, and makes it easier to
1836         add support for interface generic virtual methods later.
1837
1838         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1839         
1840 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * driver.c (mono_set_signal_chaining): New public API function to enable
1843         signal chaining on POSIX platforms.
1844
1845         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1846         (si@lindenlab.com) to implement signal chaining. The original patch was
1847         contributed under the MIT X/11 license:
1848         https://bugzilla.novell.com/show_bug.cgi?id=318894
1849
1850 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1853         too until it can be made to run on amd64.
1854
1855 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1858         to  get_generic_context_from_code () + get_call_info () if possible.
1859
1860 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1863         suspend-on-sigsegv functionality.
1864
1865         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1866         to suspend when a native SIGSEGV is received. This is useful for debugging
1867         crashes which don't happen under gdb, since a live process contains more
1868         information than a core file.
1869
1870         * mini-exceptions.c (mono_print_thread_dump): Use 
1871         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1872
1873         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1874
1875         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1876         
1877         * basic-float.cs: Disable the tests which currently fail on amd64.
1878
1879         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1880         value to mono_arch_patch_callsite () to fix crashes.
1881         
1882         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1883
1884 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1887         nop code by patching the call address to point to the nullified class init
1888         trampoline, as the former does not seem to be safe on SMP machines.
1889
1890 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1891
1892         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1893         they were wrong.
1894
1895 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * basic-float.cs basic-calls.cs: Fix warnings.
1898
1899 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1900
1901         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1902         correct frame pointer in the LMF.  Should fix #478394.
1903
1904 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1907
1908         * image-writer.c: Make the binary writer less verbose.
1909
1910 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1913         are called from runtime invoke wrappers.
1914
1915 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * cpu-ppc.md (store_memindex): Increase the size of this.
1918
1919 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1920
1921         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1922
1923         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1924
1925         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1926         OP_LCONV_TO_R_UN.
1927
1928         Last fix for of #467201.
1929
1930
1931 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1932
1933         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1934
1935         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1936         and long_conv_to_r8_2:
1937
1938         Fixed part of #467201.
1939
1940 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1941
1942         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1943
1944         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1945         conversion to 32 bits.
1946
1947         * cpu-x86.md: Increase the size of int_conv_to_r4.
1948
1949         * basic-float.cs: Add a test for this.
1950
1951         Fixed part of #467201.
1952
1953 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1954
1955         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1956
1957         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1958         conversion to 64 bits.
1959
1960         * basic-float.cs: Add a test for this.
1961
1962         Fixed part of #467201.
1963
1964 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1965
1966         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1967
1968         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1969         This behavior is compatible with MS.
1970
1971         * iltest.il.in: Add a test for this.
1972
1973         Fixed part of #467201.
1974
1975 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1978
1979         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1980         change the precision of the value.
1981
1982         * cpu-x86.md: Define len for float_conv_to_r4.
1983
1984         * basic-float.cs: Add a test for this.
1985
1986         Fixed part of #467201.
1987
1988 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1989
1990         * mini.c: Adjust locking order to the new semantics where the loader lock
1991         comes first.
1992
1993 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1994
1995         * aot-runtime.c:
1996         * mini-amd64.c:
1997         * mini-arm.c:
1998         * mini-ia64.c:
1999         * mini-mips.c:
2000         * mini-ppc.c:
2001         * mini-sparc.c:
2002         * mini-trampolines.c:
2003         * mini-x86.c:
2004         * mini.c:
2005         * tramp-alpha.c:
2006         * tramp-amd64.c:
2007         * tramp-arm.c:
2008         * tramp-hppa.c:
2009         * tramp-ia64.c:
2010         * tramp-mips.c:
2011         * tramp-ppc.c:
2012         * tramp-s390.c:
2013         * tramp-s390x.c:
2014         * tramp-sparc.c:
2015         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
2016
2017 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2018
2019         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
2020         as it is incorrect.
2021
2022 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
2025         for cctors if needed.
2026
2027 2009-02-17  Mark Probst  <mark.probst@gmail.com>
2028
2029         * mini-ppc.c: Fix build on Darwin.
2030
2031 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
2034         version instead of 3 as valgrind doesn't like version 3.
2035
2036         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2037
2038         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
2039         usable for hashing methods.
2040         (emit_extra_methods): Use the new hash to avoid putting every method in the
2041         same hash bucket.
2042
2043         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
2044
2045         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
2046         whenever a method ref could match a method.
2047         
2048         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2049         test to fail.
2050         
2051         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2052         methods refs.
2053
2054         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2055
2056         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2057         the encoding buffer.
2058
2059         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2060         mono_method_get_header () on inflated methods as an optimization.
2061
2062 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * ssa.c (fold_ins): Fix another crash if the instruction following the
2065         switch was optimized away.
2066
2067 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2068
2069         Contributed under the terms of the MIT/X11 license by Steven
2070         Munroe <munroesj@us.ibm.com>.
2071
2072         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2073
2074 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2077         around the mono_domain_alloc calls, it is now done by the functions
2078         themselves.
2079
2080         * aot-compiler.c (compile_method): Only add wrappers referenced by
2081         the method if compiling with full AOT.
2082         (mono_compile_assembly): Error out if --aot=full is specified on
2083         a platform where it is not supported.
2084
2085         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2086         on ARM too.
2087
2088         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2089         AOT support.
2090
2091         * aot-runtime.c (load_named_code): Handle 
2092         mono_arm_throw_exception_by_token.
2093
2094         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2095
2096         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2097         unaligned.
2098
2099         * Makefile.am (fullaotcheck): Exit if a test fails.
2100
2101         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2102         on ARM.
2103         (mono_compile_assembly): Handle the assembler failing.
2104
2105         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2106         accepting subsections of .bss.
2107
2108         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2109         was optimized away.
2110
2111         * aot-compiler.c: Remove some unused includes.
2112         
2113         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2114         now in MonoImageWriter.
2115
2116         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2117         code sequence which matches a non-virtual call. Fixes #472654.
2118
2119 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2122         xdebug code.
2123         
2124         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2125         use the image/dwarf writers directly.
2126
2127         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2128         field.
2129
2130         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2131         MonoDwarfWriter.
2132
2133         * image-writer.h: Fix some typos.
2134
2135         * dwarfwriter.h dwarfwriter.c: New files.
2136         
2137         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2138         separate module.
2139
2140         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2141         argument to return unwind info.
2142
2143         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2144
2145         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2146         
2147         * aot-runtime.c (decode_method_ref): Add a case for 
2148         MONO_AOT_METHODREF_WRAPPER_NAME.
2149
2150         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2151         for AOT.
2152
2153         * aot-compiler.c (encode_method_ref): Use the new constants.
2154
2155         * aot-runtime.c (decode_method_ref): Ditto.
2156
2157         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2158         be compiled, not the icall itself.
2159
2160 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2163         using decode_method_ref ().
2164
2165         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2166         convert it to an in32. Fixes #475859.
2167
2168         * arrays.cs: Add a test.
2169
2170 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2171
2172         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2173         OP_LCONV_TO_U2.
2174
2175         * basic-long.cs: Add a test.
2176
2177 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2178
2179         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2180         remove the frame pointer in leaf methods which don't receive any
2181         arguments, don't throw exceptions and don't do dynamic stack
2182         allocations.
2183
2184 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2187         the fail_tramp changes. Hopefully fixes #475132.
2188
2189 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2192         instead of mono_metadata_signature_dup_full.
2193
2194 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2197         for processing jump tables. Fixes #473787.
2198
2199 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2200
2201         * mini-generic-sharing.c: mini_method_get_context() just calls
2202         mono_method_get_context_general() now.
2203
2204         * mini.c, mini.h: Moved get_object_generic_inst(),
2205         construct_object_context_for_method() and
2206         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2207
2208 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2209
2210         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2211         basic block fell through to its successor bblock without a branch. Fixes
2212         #474718.
2213
2214         * iltests.il.in: Add a test.
2215         
2216         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2217         (can_encode_patch): We can now handle arrays of generic parameters and
2218         array methods.
2219
2220         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2221
2222         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2223         the AOT file to avoid some #ifdefs in aot-runtime.c
2224
2225         * mini.h: Bump AOT file format version.
2226
2227 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2228
2229         * Makefile.am (fullaotcheck): Make this run the tests.
2230
2231         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2232
2233 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2234
2235         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2236         individually.  Fixes #473482.
2237
2238 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2241
2242 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2243
2244         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2245         (mono_compile_assembly): Hush compile warnings about
2246         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2247         code path.
2248
2249 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2252
2253         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2254
2255         * aot-compiler.c: Fix arm support.
2256
2257         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2258         img_writer_emit_unset_mode () function.
2259
2260         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2261         (mono_unwind_get_dwarf_pc_reg): Ditto.
2262
2263         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
2264         Move almost all platform specific code to a set of arch_ functions, 
2265         and document them to ease porting.
2266         
2267         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
2268
2269         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
2270
2271         * aot-compiler.c: Extract the image writing functionality into a separate
2272         module to reduce the size of this file.
2273
2274 2009-02-09  Geoff Norton  <gnorton@novell.com>
2275
2276         * mini-s390.c: Fix the signature of emit_sig_cookie.
2277
2278 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
2281
2282         * aot-runtime.c (is_shared_got_patch): Ditto.
2283
2284         * aot-runtime.c (load_named_code): Cope with the fact that 
2285         decode_got_entry () won't decode the patch fully if its corresponding got
2286         entry is already filled.
2287         
2288         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2289         Initialize *ji.
2290         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2291
2292         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2293         as the moving pointer instead of 'buf' for consistency with the rest of the
2294         codebase.
2295         (mono_arch_create_monitor_exit_trampoline): Ditto.
2296
2297         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2298         generic_class_init trampolines.
2299         (add_generic_class): Extract some code from add_generic_instances () into a
2300         separate function so it can be called from other places too.
2301         (compile_method): Call add_generic_class () for the classes of inflated methods
2302         referenced by the method.
2303         (can_encode_patch): Allow references to generic parameters.
2304
2305         * aot-runtime.c: Add support the patches required by the new trampolines.
2306         
2307         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2308         support.
2309
2310         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2311         full-aot support.
2312
2313         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2314         this from get_throw_pending_exception, make the signature full aot compatible.
2315
2316         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2317
2318         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2319
2320         * exceptions.cs: Add a test.
2321
2322 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2325         use the DWARF_DATA_ALIGN constant instead.
2326
2327         * exception-<ARCH>.c: Update after the above change.
2328
2329         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2330         dwarf unwinder.
2331
2332         * mini-arm.c: Enable the dwarf unwinder.
2333
2334         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2335         instead of mono_class_setup_vtable ().
2336
2337 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2340         dwarf unwinder.
2341
2342         * mini-x86.h: Enable the dwarf unwinder.
2343
2344 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2345
2346         Fix mcs/tests/test-7.cs
2347         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2348         2009-02-03.
2349
2350 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * mini.c (print_jit_stats): Remove some unused statistics.
2353
2354 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2357
2358 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2359
2360         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2361         the method we get from mono_object_get_virtual_method() because
2362         that function does it properly, now.
2363
2364 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2367         opcodes. Fixes #472775.
2368
2369 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2370
2371         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2372         fact that mono_find_jit_info() sometimes returns the context
2373         corresponding to the jit info in new_ctx.  Fixes #472600.
2374
2375 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2378         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2379         klass->enum_basetype directly.
2380
2381         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2382         enum subtypes.
2383
2384         * unwind.c: Avoid 0 sized arrays.
2385
2386 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2387
2388         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2389         size on systems with 64k pages. Fixes #471389.
2390
2391 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2392
2393         Contributed under the terms of the MIT/X11 license by Steven
2394         Munroe <munroesj@us.ibm.com>.
2395
2396         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2397         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2398         necessary.
2399
2400 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2401
2402         Contributed under the terms of the MIT/X11 license by Steven
2403         Munroe <munroesj@us.ibm.com>.
2404
2405         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2406         comparison fix.
2407
2408         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2409         The trampoline can be longer on PPC64.
2410
2411 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2412
2413         Contributed under the terms of the MIT/X11 license by Steven
2414         Munroe <munroesj@us.ibm.com>.
2415
2416         * mini-ppc.c: Compiler warning fixes and trivial code
2417         simplifications.
2418
2419 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2420
2421         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2422         ins->dreg which could be a hardware register, not a vreg.
2423
2424         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2425         
2426         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2427         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2428
2429         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2430         
2431         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2432         ->dreg, that is not the vreg we are looking for.
2433
2434         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2435
2436         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2437         LIVERANGE_END.
2438
2439         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2440         strange crashes.
2441
2442 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2445
2446         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2447         the line diff is 0.
2448
2449         * aot-compiler.c: Add xdebug support on x86.
2450
2451         * unwind.c: Add x86 support.
2452         
2453         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2454         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2455
2456         * mini.c (mini_method_compile): Ditto.
2457         
2458         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2459         the variable index.
2460
2461         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2462         which mimic .push_section/.pop_section in GAS.
2463         
2464         * aot-compiler.c: Emit precise live range information for variables.
2465
2466         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2467
2468         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2469         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2470         them.
2471
2472         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2473         the live ranges of variables.
2474
2475         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2476         of the variable in terms of native offsets.
2477
2478 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2479
2480         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2481         
2482 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2483
2484         Contributed under the terms of the MIT/X11 license by Steven
2485         Munroe <munroesj@us.ibm.com>.
2486
2487         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2488         order (offset then base reg) for ppc_load_multiple_regs.
2489         (emit_save_saved_regs) Correct operand order for
2490         ppc_store_multiple_regs.
2491         (mono_arch_get_call_filter): Correct operand order for
2492         ppc_load_multiple_regs.
2493
2494         * mini-ppc.c (emit_memcpy): Fix operand order for
2495         ppc_load_reg_update and ppc_store_reg_update.
2496         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2497         (mono_arch_emit_epilog): Correct operand order for
2498         ppc_load_multiple_regs.
2499
2500         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2501         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2502
2503 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2504
2505         * cpu-ppc64.md: Fixed storer4_memindex length.
2506
2507 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2510         line number info.
2511         
2512         * aot-compiler.c (emit_line_number_info): Optimize this.
2513
2514 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2517         
2518         * aot-compiler.c: Add debug info for methods without debug info by
2519         emitting an IL file and having the line number info referencing that file.
2520
2521         * aot-compiler.c: Optimize the size of the generated line number info.
2522
2523         * aot-compiler.c: Emit line number info in xdebug mode.
2524
2525         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2526         million arguments.
2527
2528 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2531
2532         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2533         is used.
2534
2535 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * basic-calls.cs: Test for the weird crash found on arm.
2538         
2539 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2540
2541         * cpu-arm.md: Increase the size of storer8_membase_reg and
2542         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2543
2544         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2545         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2546         reg to LR otherwise we'll be loading/storing from just the offset.
2547
2548 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2549
2550         Question: if we are storing gint32's inside the "*native_offset",
2551         should we change the signature to "gint32 *native_offset" to
2552         ensure that we do not have type definition problems?
2553         
2554         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2555         an int * as this is what the other function expects, causes
2556         problems with Freescale's compiler that defined int32_t to be a
2557         long and makes int incompatible 
2558
2559 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2560
2561         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2562         filename conflict with bjam.
2563
2564 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2565
2566         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2567         as it might use decomposed ops.
2568
2569 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2572
2573         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2574         is defined.
2575
2576         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2577
2578         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2579         offsets.
2580
2581         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2582         way registers are stored in MonoContext on arm.
2583
2584         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2585         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2586
2587         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2588
2589         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2590
2591         * mini.c (mini_init): Register mono_isfinite.
2592
2593         * jit-icalls.c (mono_isfinite): New jit icall.
2594
2595         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2596         
2597         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2598         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2599         the parent frame.
2600
2601 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2602
2603         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2604         separate frame and stack pointers, so we must use FP to find the register
2605         spill area.
2606         The FP reg is retrieved from the MonoContext::regs array.
2607
2608 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2609
2610         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2611         as FPA requires it.
2612
2613 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2614
2615         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2616         return R4 and R8 when not running under softfloat.
2617
2618         Fixes basic-calls.exe
2619
2620 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * mini-arm.c: Implement some overflow opcodes.
2623
2624 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2625
2626         * ssa.c: handle another alloca.h
2627
2628         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2629         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2630         MONO_ARCH_USE_SIGACTION. 
2631
2632         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2633         capability defines.
2634
2635         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2636
2637         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2638         PPC targets as sigaction does not exist on all platforms, define
2639         this on a per-platform basis.
2640
2641         Instead of erroring out if the platform is not defined, include
2642         mini-ppc-os.h, and expect that the OS specific setting provides
2643         the required information.   
2644
2645 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * aot-compiler.c: Fix --enable-minimal=aot.
2648
2649 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2650
2651         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2652         previous change.
2653
2654 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2655
2656         * exceptions-arm.c: Fix warnings.
2657
2658         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2659         ARM.
2660
2661         * mini-x86.c: Fix --enable-minimal=jit build.
2662
2663         * mini.c: Really fix --enable-minimal=jit build.
2664         
2665         * mini.c (construct_object_context_for_method): Move this outside
2666         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2667
2668         "Backported" of r124984 from 2.0 branch.
2669         
2670         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2671
2672         "Backport" of r124977 + r124978 from 2.0 branch.
2673         
2674         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2675         to avoid calling mono_exception_from_token () from the throw trampoline.
2676         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2677         for throwing corlib exceptions, this fixes full-aot support for corlib
2678         exceptions.
2679
2680         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2681
2682 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2683
2684         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2685         part of the changes to split the code in mini into operating
2686         system specific files.
2687
2688         This patch was done by copying mini.c to the respective files to
2689         preserve SVN history.
2690
2691 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2692
2693         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2694
2695 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2698         remoting-invoke-with-check wrappers of shared methods.
2699
2700         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2701
2702 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2703
2704         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2705         optimization if the top of stack is the last instruction in the
2706         bblock.  Otherwise it might have been used after its definition.
2707         Fixes #469742.
2708
2709 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2712         method as well when get_vcall_slot () fails to match a code sequence.
2713
2714         * mini-arm.c: Fix the android build, which doesn't have
2715         __aeabi_read_tp.
2716
2717 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2720         the s390x build.
2721
2722 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2723
2724         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2725
2726 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2729         and put its id into jinfo->used_regs. This is only used on amd64,
2730         which is currently the only platform generating unwind info.
2731
2732         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2733         the dwarf unwinder. This is required to correctly handle async exceptions
2734         like thread abort and stack overflows, which can happen while a method
2735         is in the middle of its prolog or epilog.
2736         
2737         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2738         the unwind info belonging to an AOTed method.
2739
2740         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2741         into cfg->unwind_ops.
2742         
2743         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2744
2745         * mini.c (mini_init): Call mono_unwind_init ().
2746         (mini_cleanup): Call mono_unwind_cleanup ().
2747
2748         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2749         unwind info to be shared between methods.
2750
2751         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2752         saved in the LMF.
2753
2754         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2755         get_throw_pending_exception () to avoid initialization races.
2756
2757         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2758         mono_arch_exceptions_init () function.
2759
2760         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2761
2762 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2763
2764         * mini.c (mono_get_domain_intrinsic): New helper function.
2765         (mono_get_thread_intrinsic): Ditto.
2766
2767         * mini-arm.c mini-ia64.c: Use the new helper functions.
2768         
2769         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2770         the last constrained_call change, since it is needed in the non-AOT
2771         case as well.
2772
2773         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2774         
2775         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2776         mono_get_lmf_addr () on arm eabi linux.
2777
2778 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2779
2780         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2781         code sequence which matches a non-virtual call.
2782
2783 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2784
2785         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2786         stack pointer (r1).
2787
2788 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2791         runtime-invoke wrappers, since they are also shared based on signature.
2792
2793 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2794
2795         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2796         info from the (correct) context.
2797
2798 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2801         
2802         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2803         using dwarf unwinding info. Not yet used.
2804
2805         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2806
2807 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2808
2809         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2810         descriptors.
2811
2812         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2813         special case and handle mono_arch_delegate_invoke_impl() returning
2814         function descriptors.
2815
2816         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2817         trampolines return function descriptors, too.
2818
2819 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2822         out_of_line optimization.
2823
2824 2009-01-21  Martin Baulig  <martin@ximian.com>
2825
2826         * mini.h
2827         (MonoCompile): Added `disable_deadce_vars' to disable removing
2828         unused variables.
2829
2830         * mini.c
2831         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2832         inside the debugger.
2833
2834         * liveness.c (mono_analyze_liveness): Don't remove any unused
2835         variables if `cfg->disable_deadce_vars' is set.
2836
2837 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2838
2839         * method-to-ir.c: Only apply exception constructor optimization if
2840         the the method actually belongs to an exception class.  Fixes
2841         #467456.
2842
2843 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2846         change inside a #ifdef __mono_ppc64__.
2847
2848         * aot-compiler.c (compile_method): Remove the previous limitation.
2849
2850         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2851         on type variables in AOTed code.
2852         
2853         * aot-compiler.c (compile_method): Skip generic methods having type 
2854         constraints on their generic parameters.
2855
2856         * aot-compiler.c (compile_method): Check for methods which cannot be
2857         encoded inside RGCTX_FETCH patches as well.
2858
2859         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2860         build.
2861
2862 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2863
2864         * method-to-ir.c: Force the vtable variable in shared generic code
2865         for the case that they might show up on a stack trace where they
2866         are needed.
2867
2868         * mini-exceptions.c: Save and use generic sharing info as well as
2869         IP in stack traces to resolve shared generic instantiations.
2870
2871 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2874         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2875
2876 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2877
2878         * method-to-ir.c: Do generic sharing for array constructors.
2879
2880 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2881
2882         * mini-exceptions.c (mono_print_thread_dump): Add information
2883         about the thread state using wapi_current_thread_desc.
2884
2885 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * basic-simd.cs: Tests for the new constructors. 
2888
2889 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2890
2891         * mini-ops.h: Added OP_EXPAND_*
2892
2893         * cpu-x86.md: Same.
2894
2895         * mini-x86.c (mono_arch_output_basic_block): Same.
2896         
2897         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2898
2899 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * iltests.il.in: Add a test for #467385.
2902
2903 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2904
2905         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2906         thread been cleaned up is not the same currently in execution.
2907
2908         Fixes appdomain-unload crashes on windows, osx and linux variants
2909         without the __thread keyword.
2910
2911 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2914         (koush@koushikdutta.com). Implement this for android.
2915
2916         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2917         begins with a digit.
2918
2919         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2920         mono_marshal_get_write_barrier ().
2921
2922 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2923
2924         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2925         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2926         that pass them on a register pair.
2927
2928         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2929         test was crashing due to that.
2930
2931 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2932
2933         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2934         trampoline code. Include ucontext.h only if available.
2935
2936 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2937
2938         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2939         and doesn't check whether it's sharable, like it was before
2940         removing the shared generics hash.  This brings IronPython
2941         performance back to what it was before that change.
2942
2943 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2944
2945         * method-to-ir.c: Handle delegate invocation optimization earlier,
2946         otherwise it would be handled (much more slowly) by the
2947         final/sealed optimization.
2948
2949 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2952         domain is not set. Fixes #465864.
2953
2954 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2955
2956         * method-to-ir.c: Don't stop sharing of generic methods with catch
2957         clauses - we already handle those.
2958
2959 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2960
2961         * mini.c, mini.h: lookup_generic_method() is now
2962         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2963         making the shared_generics_hash obsolete.
2964
2965 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2966
2967         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2968         use the red zone.  Make room on the stack first and then use it,
2969         not the other way around.
2970
2971 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2972
2973         * mini.c (mini_init): Call mono_xdebug_init ().
2974
2975         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2976
2977 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2980
2981         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2982         trampolines.
2983
2984         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2985         debug+unwind info for trampolines.
2986
2987         * mini.c (mono_create_unwind_op): New helper function.
2988
2989         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2990
2991 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * aot-compiler.c: Fix the build.
2994
2995 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2996
2997         * Makefile.am: Update dtrace-prelink.sh location.
2998
2999 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
3002         optimization. Fixes #464520.
3003
3004 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
3005
3006         * mini-amd64.c : Adding code to save/restore non-volatile registers
3007            on Winx64.
3008
3009         * exceptions-amd64.c : Adding code to save/restore non-volatile 
3010           registers on Winx64.
3011
3012         Contributed under MIT/X11 license.
3013
3014 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
3017         __GNUC_MINOR__ which can break when the major version changes.
3018
3019 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3020
3021         * basic-simd.cs: Add tests for usage of the sizeof opcode.
3022
3023 2009-01-07  Geoff Norton  <gnorton@novell.com>
3024
3025         * helpers.c:  Allow mono -v -v -v to work on darwin.
3026
3027 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
3028
3029         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
3030           pattern. 
3031
3032         Contributed under MIT/X11 license.
3033
3034 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
3037         instead of directly accessing type->data.klass. Fixes #462016.
3038         (mono_allocate_stack_slots_full): Ditto.
3039
3040         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
3041         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
3042
3043         * aot-compiler.c (emit_plt): Fix ARM build.
3044
3045 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3048         
3049         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3050         change.
3051
3052         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3053         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3054         #463357.
3055
3056         * iltests.il.in: Add a regression test.
3057
3058 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3059
3060         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3061
3062 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3063
3064         * basic-simd.cs: Add a regression test for #462457.
3065
3066 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3067
3068         * mini-ops.h: Add a definition of XPHI.
3069
3070         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3071
3072         * ssa.c (op_phi_to_move): Handle XPHI.
3073
3074         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3075
3076         Fixes #462457
3077
3078 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3079
3080         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3081
3082 2008-12-31  Geoff Norton  <gnorton@novell.com>
3083
3084         * mini-ppc.c: The prolog size allocated can be too small for darwin
3085         ppc32 under certain circumstances.  Also fix a small logic bug.
3086
3087 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3090         while loading AOT methods.
3091
3092         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3093         since only the former is nulled out after a successful cast. This prevents
3094         crashes with rethrown exceptions when using --debug=casts.
3095
3096 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3097
3098         * mini.h: New macro for checking whether a method is final,
3099         i.e. whether the method or its class is marked final.
3100
3101         * method-to-ir.c: Use the new macro for all final-checks
3102         consistently.  Fixes the crash in the System.ServiceModel tests.
3103
3104 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3105
3106         * mini-exceptions.c (get_exception_catch_class): Corrected another
3107         overly strict assertion.
3108
3109 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3110
3111         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3112         Clobbering it is not allowed because the caller might use it as
3113         the vtable register in the interface call.
3114
3115 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3116
3117         * mini-exceptions.c (get_exception_catch_class): Corrected an
3118         overly strict assertion.
3119
3120 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3121         
3122         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3123
3124         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3125
3126         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3127
3128         * cpu-mips.md: correct lengths for certain long_ opcodes.
3129
3130         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3131
3132         * 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().
3133         
3134 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3135
3136         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3137         
3138 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3139         
3140         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3141         
3142 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3143
3144         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3145         next basic block.
3146         
3147 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3148
3149         * 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
3150
3151         * 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)
3152         
3153 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3154         
3155         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3156         
3157 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3160         gshared code. Fixes #458947.
3161
3162         * generics.cs: Add a test.
3163
3164 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3165         
3166         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3167         
3168         * mini-mips.c: first pass n32 code generation.
3169
3170         * mini-mips.h: datatypes and defines for n32 support.
3171
3172         * exceptions-mips.c: first pass n32 code generation.
3173         
3174         * tramp-mips.c: first pass n32 code generation.
3175         
3176         * cpu-mips.md: add long_ opcodes.
3177         
3178 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3179
3180         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3181
3182         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3183         
3184         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3185         
3186         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3187
3188         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3189
3190         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3191
3192         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3193
3194         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3195
3196         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3197
3198 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3201
3202 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3203
3204         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3205
3206 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3207
3208         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3209         descriptors for helper functions directly in front of the code.
3210
3211 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3212
3213         * method-to-ir.c: Removed an unnecessary assertion.
3214
3215 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * method-to-ir.c: Merge SGEN changes from the old JIT.
3218
3219 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * driver.c (compile_all_methods_thread_main): Handle failure of
3222         mono_get_method ().
3223
3224 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3225
3226         * mini-ppc.c: Merged with mini-ppc64.c.
3227
3228         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3229
3230         * Makefile.am: Use the same sources for PPC and PPC64.
3231
3232         * mini-ppc64.c: Removed.
3233
3234 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3235
3236         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3237         code to mono_bb_is_fall_through.
3238         
3239         * branch-opts.c (mono_remove_critical_edges): Same.
3240
3241 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3242
3243         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3244         expect that an OP_BR_REG will be there.
3245
3246 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3247
3248         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3249         for the many branch ops. The original check miss OP_BR_REG.
3250
3251         Fixes #457574.
3252         
3253 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3254
3255         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3256
3257 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3260         while holding the aot lock.
3261
3262 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3263
3264         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
3265         
3266 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3267
3268         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
3269           to release all runtime callable wrappers held by the runtime.
3270
3271         Contributed under MIT/X11 license.
3272
3273 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3274
3275         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
3276           for Winx64.
3277
3278         Contributed under MIT/X11 license.
3279
3280 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
3283         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3284
3285 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3286
3287         * cpu-mips.md: fix ckfinite length
3288
3289         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3290         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3291         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3292         
3293 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3294
3295         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3296         
3297 2008-12-08  Geoff Norton  <gnorton@novell.com>
3298
3299         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3300         size by 8 bytes as well.
3301
3302 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3303
3304         * basic-simd.cs: Fix method names for Vector16b.
3305         
3306 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3307
3308         * basic-simd.cs: Fix method names for Vector16sb.
3309
3310 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3311
3312         * basic-simd.cs: Fix method names for Vector8us.
3313         
3314 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3315
3316         * basic-simd.cs: Fix method names for Vector8s.
3317         
3318 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3319
3320         * basic-simd.cs: Fix method names for Vector4ui.
3321
3322 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         * basic-simd.cs: Fix method names for Vector2l.
3325
3326 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3327
3328         * basic-simd.cs: Fix method names for Vector2d.
3329
3330 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3331
3332         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3333         that are extension methods.
3334
3335 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3336
3337         * basic-simd.cs: Fix method names for Vector4f.
3338
3339 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3340
3341         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3342         as such. Fixes #456669.
3343
3344 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3345
3346         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3347         
3348 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3349
3350         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3351         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3352         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3353         (mips_adjust_stackframe): handle FP spills
3354                 
3355         * mini-ops.h: add mips_mtc1_s2
3356         
3357         * cpu-mips.md: add mips_mtc1_s2
3358         
3359 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3360
3361         * unwind.c: New file, move the unwind info encoding functions here from
3362         aot-compiler.c, so they could be used at runtime too.
3363
3364 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3365
3366         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3367         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3368         
3369 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3370
3371         * mini-mips.c: cleanup warnings
3372         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3373         (mips_adjust_stackframe): handle case of taking the address of stack locals
3374         
3375 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3376
3377         * aot-compiler.c: Implement a few functions missing from the asm writer.
3378         (emit_method_code): Only write symbols for methods when using the bin
3379         writer, since the assembler can't deal with the characters in our method
3380         names.
3381
3382         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3383
3384         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3385         call.
3386
3387         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3388         a bit to also restore %rax.
3389
3390 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3391
3392         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3393
3394 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3395
3396         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3397         arguments.
3398
3399 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3400
3401         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3402
3403         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3404         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3405
3406         * exceptions-ppc64.c: Removed.
3407
3408         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3409
3410 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3411
3412         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3413         tramp-ppc64.c.
3414
3415         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3416
3417         * tramp-ppc64.c: Removed.
3418
3419 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3422         the TYPESPEC table.
3423
3424 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3425
3426         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3427
3428         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3429         mini-ppc.h instead of mini-ppc64.h.
3430
3431         * mini-ppc64.h: Removed.
3432
3433 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3434
3435         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3436         
3437         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3438         
3439 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3440
3441         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3442         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3443         code easier.
3444
3445 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3446
3447         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3448
3449 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3452
3453 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3454
3455         * basic-simd.cs: Tests for operator == and != on Vector4f.
3456
3457 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3458
3459         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3460
3461         * simd-intrinsics.c: Kill useless enum.
3462
3463 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3464
3465         * cpu-mips.md: add long_conv_to_ovf_i4_2
3466         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3467
3468 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3469
3470         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3471         
3472         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3473
3474 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3475
3476         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3477         
3478 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3479
3480         * basic-simd.cs: Add tests for new methods.
3481
3482 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3483
3484         * simd-intrinsics.c: Add support for operator == and !=
3485         on Vector4(u)i.
3486
3487         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3488
3489 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3490
3491         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3492
3493 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3496
3497         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3498         MONO_PATCH_INFO_ICALL_ADDR.
3499
3500         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3501
3502         * aot-compiler.c: Resurrect full-aot support.
3503
3504 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3505
3506         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3507         
3508 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3509
3510         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3511         
3512 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3513
3514         * basic-simd.cs: Fix tests to work under ppc.
3515         Remove tests for methods that will be removed.
3516
3517 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3518
3519         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3520         generic type (via a typedef or typeref) correctly.
3521
3522 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3525         diagnose an assertion failure.
3526
3527 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3528
3529         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3530         Fix trampoline size.
3531
3532         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3533         conversion opcodes are implemented natively instead via emulation.
3534
3535 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3536
3537         * cpu-mips.md: remove mips_xori
3538
3539         * mini-ops.h:  remove mips_xori
3540
3541         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3542
3543         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3544         
3545         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3546         
3547 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3548
3549         * cpu-mips.md: fix instruction lengths.
3550
3551         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3552
3553         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3554
3555         * mini-ops.h: fix slti / sltiu op profiles.
3556         
3557 2008-12-02  Martin Baulig  <martin@ximian.com>
3558
3559         * method-to-ir.c (mono_method_to_ir): Disable debugging
3560         information for the init locals block to make the debugger stop
3561         after all locals have been initalized.
3562
3563 2008-12-02  Martin Baulig  <martin@ximian.com>
3564
3565         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3566         running inside the debugger.
3567
3568 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3571         is enabled.
3572
3573         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3574         alu->alu imm optimization which only shows if deadce is disabled.
3575
3576         * aot-compiler.c: Rename the function names for the binary and asm writers
3577         so they can coexist in the same process. Rework the xdebug code to use the
3578         asm writer. This avoids the need to call into the runtime to dump the
3579         debugging info. Add more debugging info for types.
3580
3581         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3582
3583         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3584         cpu description tables, they can't occur in cpu-<ARCH>.md.
3585
3586         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3587         the stack in CEE_LDFLDA. Fixes #450542.
3588
3589         * generics.cs: Add a new test.
3590
3591 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3592
3593         * mini-ops.h: updated MIPS opcodes
3594         * mini-mips.c: decompose long opts
3595         * mini-mips.h: decompose long opts
3596         
3597 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3598
3599         * cpu-mips.md: fix length on int_rem_un
3600         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3601         
3602 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3603
3604         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3605
3606         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3607
3608 2008-11-29  Martin Baulig  <martin@ximian.com>
3609
3610         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3611         mono_debug_using_mono_debugger() in addition to the
3612         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3613
3614 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3615
3616         * mini-ops.h: updated more MIPS opcodes
3617         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3618         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3619         
3620 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3621
3622         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3623
3624 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3625
3626         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3627         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3628         * mini-ops.h: correct selected mips opcode entries
3629         
3630 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3631
3632         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3633         make them work.
3634
3635 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3636
3637         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3638
3639 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3640
3641         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3642         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3643         * mini-mips.h: disable IMT
3644         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3645         
3646 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3647
3648         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3649
3650 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3651
3652         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3653
3654 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3655
3656         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3657         consistency.
3658
3659 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3660
3661         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3662         for Set/GetVector aligned versions.
3663
3664 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3665
3666         * basic-simd.cs: Add tests for Get/SetVector.
3667
3668 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3669
3670         * mini.c: Removed g_slist_append_mempool().  Now in
3671         metadata/mempool.c.
3672
3673 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3674
3675         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3676         size properly and make the bounds check optional.
3677
3678         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3679         for SetVector and IsAligned.
3680
3681 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini.c: Remove unused mono_normalize_opcodes () function.
3684
3685 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3686
3687         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3688         using the new atomic add ops now.
3689
3690         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3691         add.
3692
3693 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3694
3695         * mini-ppc64.c: Several fixes.
3696
3697 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3698
3699         * cpu-mips.md: added jump_table
3700         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3701
3702 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3703
3704         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3705
3706 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3707
3708         * mini-ops.h: corrected a handful of MIPS opcodes.
3709
3710 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3711
3712         * aot-compiler.c: MIPS to use ELF writer
3713
3714 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3715
3716         * mini-codegen.c: remove MIPS specific assert.
3717
3718 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3719
3720         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3721         fixes.  PPC64 now passes most of the runtime regressions.
3722
3723 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3724
3725         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3726         volatile intervals a bit.
3727
3728 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3729
3730         * basic-long.cs: New test case.
3731
3732 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini.c (mini_method_compile): Disable globalra for large methods for 
3735         now.
3736
3737         * regalloc2.c (order_moves): Add fp support.
3738
3739         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3740         source bblock ends with an OP_BR_REG.
3741
3742         * ratests.cs: Add a new test.
3743
3744 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3745
3746         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3747         sharing.  PPC64 now passes generics.exe.
3748
3749 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3750
3751         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3752
3753 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3754
3755         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3756         memory when mono_jit_info_table_find () can't find the method in the
3757         LMF case.
3758
3759         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3760         AOTed code too.
3761         
3762         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3763         writer too.
3764
3765 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3766
3767         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3768         Several fixes.  PPC64 now runs exceptions.exe and
3769         devirtualization.exe.
3770
3771 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3772
3773         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3774         arrays.exe and basic-math.exe.
3775
3776 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3777
3778         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3779         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3780
3781 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3782
3783         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3784
3785 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3786
3787         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3788
3789         * ir-emit.h: Move macros from method-to-ir.c to here.
3790
3791 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3792
3793         * mini-ops.h: Correct the long simd ops to use LREG.
3794
3795 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3796
3797         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3798         
3799         * mini-ops.h: Correct the dreg type of a few long opcodes.
3800
3801         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3802         Add netbsd support.
3803
3804 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3805
3806         * mini-ppc.c: remove negative stack references in epilog
3807         for platforms that don't support the red zone.
3808
3809 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3810
3811         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3812         point regs.  Now PPC64 passes basic-calls.exe.
3813
3814 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3815
3816         * basic-simd.cs: Add tests for accessors of Vector2l.
3817
3818 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3821
3822         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3823         
3824         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3825
3826 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3827
3828         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3829         PPC64 passes basic-long.exe.
3830
3831 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3832
3833         * decompose.c: Decompose carry and overflow add on PPC64 like on
3834         other 64 bit archs.  Don't decompose sub at all on PPC64.
3835
3836         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3837         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3838         basic-long.exe.
3839
3840 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3841
3842         * basic-simd.cs: Add tests for accessors of Vector2d.
3843
3844 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3845
3846         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3847
3848         * cpu-x86.md: Same.
3849
3850         * mini-x86.c (mono_arch_output_basic_block): Same.
3851         
3852         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3853
3854 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3855
3856         * basic-simd.cs: Add tests for accessors of Vector4f.
3857
3858 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3859
3860         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3861
3862         * cpu-x86.md: Same.
3863
3864         * mini-x86.c (mono_arch_output_basic_block): Same.
3865         
3866         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3867
3868 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3869
3870         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3871
3872 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3873
3874         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3875
3876         * cpu-x86.md: Same.
3877
3878         * mini-x86.c (mono_arch_output_basic_block): Same.
3879         
3880         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3881
3882 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3885
3886 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3887
3888         * simd-intrinsics.c: Enable setters for Vector16sb.
3889
3890 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3891
3892         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3893
3894         * cpu-x86.md: Same.
3895
3896         * mini-x86.c (mono_arch_output_basic_block): Same.
3897         
3898         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3899
3900 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3901
3902         * simd-intrinsics.c: Implement setter for Vector8us.
3903
3904 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3907         for dead variables.
3908
3909 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3910
3911         * mini-ppc.c: remove references to the red zone in the prolog
3912         (for systems that don't support it).
3913
3914 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3915
3916         * cpu-ppc64.md: Fixed a few instruction lengths.
3917
3918         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3919         now.
3920
3921 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3922
3923         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3924         basic.exe now.
3925
3926 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3929
3930 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3931
3932         * mini-ops.h: Added OP_INSERT_I2.
3933
3934         * cpu-x86.md: Same.
3935
3936         * mini-x86.c (mono_arch_output_basic_block): Same.
3937         
3938         * simd-intrinsics.c: Implement setter for Vector8s.
3939
3940         * simd-methods.h: Add the names of get setters of Vector8s.
3941
3942 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3943
3944         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3945         
3946         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3947         parameters.
3948
3949         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3950
3951 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3952
3953         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3954         for PPC64.  An empty program runs now.
3955
3956 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3959
3960         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3961         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3962         info for JITted code is emitted into a shared library, loadable into gdb.
3963
3964 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3965
3966         * Makefile.am: Changes to build PPC64.
3967
3968         * mini-arch.h: Include mini-ppc64.h on PPC64.
3969
3970 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3971
3972         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3973         in PPC code up to r119147.
3974
3975 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3976
3977         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3978         cpu-ppc64.md: Changes for PPC64.
3979
3980         Based on code submitted by andreas.faerber@web.de at
3981         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3982         X11/MIT license.
3983
3984 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3985
3986         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3987         cpu-ppc64.md: Copied from the corresponding PPC files from
3988         r118846.
3989
3990 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3991
3992         * mini-ops.h: Added OP_ROUND.
3993
3994         * cpu-x86.md: Added round.
3995
3996         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3997
3998         * basic-math.cs: Added test_0_round to test rounding.
3999
4000         Contributed under MIT/X11 license.
4001
4002 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4003
4004         * aot-compiler.c : Fix the Winx64 build.
4005
4006         Contributed under MIT/X11 license.
4007
4008 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4009
4010         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
4011         in OP_EXTRACT_R8 to avoid possible stack corruption.
4012
4013 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4014
4015         * mini-ops.h: Added OP_EXTRACT_R8/I8.
4016
4017         * cpu-x86.md: Added extract_r8.
4018
4019         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
4020         
4021         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
4022         a couple of OP_EXTRACT_I4.
4023
4024         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
4025
4026         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
4027
4028 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
4031         and not 4.1. 
4032
4033 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4034
4035         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
4036         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
4037
4038         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
4039         are not needed any more.
4040
4041         * mini.h: Remove the unused INS_LIST macros.
4042
4043         * mini.c (mini_method_compile): Remove a disable globalra case which is no
4044         longer needed.
4045
4046         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4047         ir-emit.h.
4048
4049         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4050         mono_alloc_ireg () instead.
4051
4052         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4053         macros.
4054
4055         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4056         on amd64.
4057
4058         * aot-runtime.c (load_aot_module): Disable AOT when running under
4059         CAS.
4060
4061         * mini-amd64.h: Change the monitor fastpath defines to check for
4062         !PLATFORM_WIN32 so they work on *bsd too.
4063
4064         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4065
4066         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4067
4068         * mini.h (MonoCompile): Remove new_ir flag.
4069
4070         * regalloc.h regalloc.c: Remove unused code.
4071
4072         * cpu-*.md: Remove more unused opcodes.
4073
4074         * simple-cee-ops.h simple-mini-ops.h: Removed.
4075
4076         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4077         
4078 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * aliasing.h: Removed.
4081
4082         * *.c: Remove references to aliasing.h and inssel.h.
4083
4084         * mini.c: Remove additional unused functions.
4085
4086         * mini-ops.h cpu-*.md: Remove unused opcodes.
4087
4088 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4089
4090         Remove the old JIT code.
4091
4092         * inssel*.brg: Removed.
4093
4094         * ssa.c abcremoval.c aliasing.c: Removed.
4095
4096         * ssa2.c: Renamed to ssa.c.
4097
4098         * abcremoval2.c: Renamed to abcremoval.c.
4099
4100         * *.c: Removed all !cfg->new_ir code.
4101
4102         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4103         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4104
4105         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4106         
4107 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4108
4109         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4110         to simplify the code and cut back on the number of global symbols in the AOT
4111         file.
4112         
4113         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4114
4115 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4118         with the got/got_info tables.
4119
4120         * mini.h: Bump AOT file format version.
4121         
4122         * unwind.h: New file, contains definitions for stack unwinding.
4123
4124         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4125         to cfg->unwind_ops.
4126         
4127         * aot-compiler.c: Generalize the emitting of unwind information to use the
4128         information in cfg->unwind_ops.
4129
4130         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4131
4132         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4133         AOT method frames. Enable writing symbols for methods by default.
4134
4135 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4136
4137         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4138         and make it work with vectors of element sizes 1, 2 and 4.
4139
4140         * simd-intrinsics.c: Enable getter for all vectors with element size
4141         1, 2 or 4.
4142
4143         * simd-methods.h: Add the names of other getters.
4144
4145         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4146
4147         * cpu-x86.md: Same.
4148
4149         * mini-x86.c: Same.
4150
4151 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4152
4153         * mini-ppc.h: portability fix.
4154
4155 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4156
4157         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4158         buggy and will overwrite it.
4159
4160 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4163         Use it to emit local symbols for all methods so AOTed methods show up with
4164         their full name in gdb/valgrind output.
4165
4166 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4167
4168         * mini-ppc.c: portability fixes.
4169
4170 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4173         entries out of the if (!generic_shared...) code so it is always done.
4174         (mono_class_init_trampoline): Do the patching when running under valgrind
4175         too, newer versions of valgrind have no problems with it.
4176
4177 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4180         further sections.
4181
4182 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4183
4184         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4185         filters.
4186
4187 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4188
4189         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4190
4191 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4192
4193         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4194
4195         * cpu-x86.md: Same.
4196
4197         * mini-x86.c: Same.
4198
4199         * simd-intrinsics.c: Same.
4200
4201 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4202
4203         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4204
4205 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4206
4207         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4208         to work with more Vector types.
4209
4210 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4211
4212         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4213         store the elemens directly instead of using and intermediate.
4214
4215 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4216
4217         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4218
4219         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4220         to preserve %eax for aot plt trampolines.
4221
4222         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4223         (encode_method_ref): Flag synchronized methods so they won't go through
4224         the AOT trampoline.
4225
4226         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4227         wrappers.
4228
4229         * cpu-ia64.md (jmp): Increase max length.
4230
4231 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4234         open generic classes.
4235
4236         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4237
4238         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4239         box+brtrue optimization since it causes test failures on x86.
4240
4241 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4242
4243         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4244
4245         * cpu-x86.md: Same.
4246
4247         * mini-x86.c: Same.
4248
4249         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4250         for simd ctor values. 
4251
4252         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4253         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4254
4255 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4256
4257         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4258         LogicalRightShift.
4259
4260         * simd-instrincs.c: Same.
4261
4262         * basic-simd.cs: Same.
4263
4264 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * ratests.cs: Add more tests.
4267
4268         * regalloc2.c (add_spill_code): Handle more corner cases.
4269
4270 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
4273         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
4274         both the source an destination of an instruction.
4275
4276 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4277
4278         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
4279         wapihandles.c: more portability changes.
4280
4281 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
4282
4283         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4284         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4285         safe to execute in a signal handler and the kernel provides better
4286         the info in /proc/self/smaps. Avoid the assert on sigaction during
4287         cleanup.
4288
4289 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4290
4291         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4292         do the bblock linking hack if it is actually needed.
4293
4294         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4295         up linking.
4296
4297         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4298         crash problem is fixed.
4299
4300         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4301         bblocks.
4302
4303         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4304         for catch clauses.
4305         (mini_method_compile): Set the starting value of next_vreg to 
4306         MAX_IREGS + MAX_FREGS when using globalra.
4307
4308         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4309         filter clauses with BB_EXCEPTION_HANDLER.
4310
4311         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4312
4313 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4314
4315         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4316         space for stdcall.  Fixes regressions on Win32.
4317
4318 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4319
4320         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4321         bblocks.
4322         (linear_scan): Remove an assert which doesn't seem to be needed.
4323
4324         * local-propagation.c (mono_local_deadce): Avoid a call to
4325         MONO_DELETE_INS which would screw up the instruction linking.
4326
4327         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4328
4329         * regalloc2.c: Upgrade to work the current JIT code.
4330
4331 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4334         case.
4335
4336         * aot-runtime.c: Remove some dead code.
4337
4338         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4339         consistency.
4340         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4341
4342         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4343         trampolines using sscanf since atoi doesn't work on large unsigned values.
4344
4345         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4346         Initialize code_size.
4347
4348 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4349
4350         * method-to-ir.c (mini_emit_inst_for_method): Make
4351         Interlocked.CompareExchange work for Int arguments on 32 bit
4352         archs, as well.
4353
4354 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4355
4356         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4357
4358 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4359
4360         * main.c Fix MSVC build.
4361
4362         Contributed under MIT/X11 license.
4363
4364 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4365
4366         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4367         alignment larger than 8 bytes are aligned correctly, too.
4368
4369         * mini.c: Honor the min_align field of MonoClass when laying out
4370         the stack.
4371
4372 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4375
4376         * aot-compiler.c (emit_plt): Fix a warning.
4377         
4378         * aot-compiler.c: Implement ARM support in the binary writer.
4379
4380 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4381
4382         * basic-simd.cs: Add test for getter with byref arg.
4383         Fix the naming of a few tests.
4384         Add missing checks to a test.
4385
4386 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4387
4388         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4389
4390         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4391         most of the full-aot support for monitor enter/exit trampolines.
4392
4393         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4394         enter/exit trampoline creation functions.
4395
4396         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4397         make dist.
4398
4399 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4400
4401         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4402         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4403         implement the needed functionality without adding crap to the runtime.
4404
4405 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4408         non-x86 builds.
4409
4410         * mini.c (mono_build_date): New global version holding the build date in
4411         string format.
4412         
4413         * Makefile.am (buildver.c): Generate a file containing the build date.
4414
4415         * main.c: Set the build date from the generated file.
4416
4417         * mini.c (mono_get_runtime_build_info): New helper function returning build
4418         information in a string format.
4419         
4420         * driver.c (mono_main): Print the build date in --version.
4421
4422         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4423         file when the bind-to-runtime-version option is used.
4424
4425 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4428
4429 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4430
4431         * simd-methods.h: Rename prefetch methods.
4432
4433         * simd-intrinsics.c: Same.      
4434
4435 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4436
4437         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4438         sizes.
4439
4440 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4441
4442         * aot-compiler.c: Use the bundled elf header files instead of depending on
4443         the system one.
4444         
4445         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4446         mempool.
4447
4448         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4449         on every call.
4450
4451 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * cpu-x86.md: Add store nta ops.
4454
4455         * mini-ops.h: Same.
4456
4457         * mini-x86.c: Same.
4458
4459         * mini.h: Add an enum for simd prefetch modes.
4460
4461         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4462         of store. Use the changed code to support store nta.
4463
4464         * simd-intrinsics.c: Add prefetch ops for all vector types.
4465
4466 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4467
4468         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4469         threads.
4470         
4471         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4472         names.
4473
4474         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4475         trampolines.
4476
4477 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4478
4479         * mini-x86.c: Fixed commit.
4480
4481 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4482
4483         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4484
4485 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4486
4487         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4488         and MONITOR_EXIT, for the ASM fastpaths.
4489
4490         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4491         available.
4492
4493         * mini.c, patch-info.h: Signature and patch infos for
4494         Monitor.Enter/Exit trampolines.
4495
4496         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4497
4498         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4499         Monitor.Enter/Exit ASM fastpath for Linux.
4500
4501 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4504
4505         * objects.cs: Add a new test.
4506         
4507         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4508
4509         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4510         if MONO_LOG_LEVEL is set.
4511
4512         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4513
4514         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4515
4516         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4517         
4518         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4519         of file offsets. Align the sections belonging to the data segment to 
4520         PAGESIZE.
4521
4522 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4525         elf.h. Port it to amd64.
4526
4527 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4528
4529         * driver.c: Enable SIMD by default.
4530
4531 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4532
4533         * cpu-x86.md: Add prefetch op.
4534
4535         * mini-ops.h: Same.
4536
4537         * mini-x86.c: Same.
4538
4539         * mini.h: Add an enum for simd prefetch modes.
4540
4541         * simd-methods.h: Add prefetch function names.
4542
4543         * simd-intrinsics.c: Add prefetch ops for all vector types.
4544
4545 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * aot-compiler.c (emit_bytes): Speed this up a little.
4548
4549 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4550
4551         * aot-compiler.c: Add JIT time etc. statistics.
4552         
4553         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4554
4555         * mini.h (MonoCompile): Add 'got_offset' field.
4556
4557         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4558         method_got_offsets array.
4559
4560         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4561         wrappers.
4562
4563         * aot-compiler.c (compile_method): Add generic method instances referenced
4564         by the method to the list of methods to be compiled, this is required so if
4565         A<T> references B<T>, and another assembly references A<int>, then it will
4566         also get a copy of B<int>.
4567
4568         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4569         when checking for monitor enter/exit.
4570
4571 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4572
4573         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4574         for Monitor.Enter and Monitor.Exit if enabled.
4575
4576         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4577         Solaris.
4578
4579 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4580
4581         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4582         of an OP_MOVE. Fixes #440046.
4583
4584         * basic-long.cs: Add a new test.
4585
4586 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4587
4588         * mini.h: Add synchronization note for the managed counter-part.
4589
4590         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4591         returns the simd caps of the current cpu.
4592
4593 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4594
4595         * basic-simd.cs: Remove Console.WriteLine.
4596
4597 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * basic-simd.cs: New tests for Vector2ul.
4600
4601 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4602
4603         * simd-intrinsics.c: Add new vector type Vector2ul.
4604
4605 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * basic-simd.cs: New tests for Vector2l.
4608
4609 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * cpu-x86.md: Add long version of most packed int ops.
4612
4613         * mini-ops.h: Same.
4614
4615         * mini-x86.h: Same.
4616
4617         * simd-intrinsics.c: Add new vector type Vector2l.
4618
4619 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4620
4621         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4622
4623         * simd-methods.h: Remove SN_op_BitwiseXor.
4624
4625 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4628         alignment.
4629
4630 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4631
4632         * basic-simd.cs: Test for Vector2d.
4633
4634         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4635         value.
4636
4637 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4638
4639         * cpu-x86.md: Add double version of all packed float ops.
4640
4641         * mini-ops.h: Same.
4642
4643         * mini-x86.h: Same.
4644
4645         * simd-intrinsics.c: Add new vector type Vector2d.
4646
4647         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4648
4649         * simd-methods.h: Add Duplicate.
4650
4651 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4652
4653         * basic-simd.cs: Test for packing with signed saturation.
4654
4655 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4658         found in the TYPESPEC table.
4659
4660 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4661
4662         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4663         too.
4664
4665         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4666
4667         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4668         instead of the RVA, since the RVA can be changed by tools like the cil 
4669         stripper.
4670
4671         * method-to-ir.c (mono_method_to_ir2): Ditto.
4672
4673         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4674         (deserialize_variable): Ditto.
4675
4676 2008-10-25  Martin Baulig  <martin@ximian.com>
4677
4678         * debug-mini.c (write_variable): Use
4679         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4680
4681 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4682
4683         * cpu-x86.md: Add unsigned variants of packd and packw.
4684
4685         * mini-ops.h: Same.
4686
4687         * mini-x86.h: Emit the right instruction for packd and packw.
4688         Add unsigned variants of packd and packw.
4689
4690         * simd-intrinsics.c: Packd and packw were used in place of their
4691         unsigned variants. Change that.
4692         Add intrinsics for (Signed)PackWithSignedSaturation.
4693
4694         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4695
4696 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4699
4700 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4701
4702         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4703
4704         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4705
4706         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4707         sse instructions.
4708
4709         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4710
4711 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4712
4713         * method-to-ir.c, mini.c: Special casing for the synchronized
4714         wrapper for the ldtoken+GetTypeFromHandle case.
4715
4716 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4717
4718         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4719
4720         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4721         created/split bblocks.
4722
4723 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4724
4725         * mini-ops.h: Add packed signed mul high.
4726         
4727         * cpu-x86.md: Same.
4728
4729         * mini-x86.c (mono_arch_output_basic_block): Same.
4730
4731         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4732
4733         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4734
4735 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * basic-simd.cs: Tests for Vector16sb.
4738
4739 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4742
4743 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4744
4745         * mini-ops.h: Add packed signed min, max and compare greater.
4746         
4747         * cpu-x86.md: Same.
4748
4749         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4750         saturation.
4751
4752         * simd-methods.h: Add CompareGreaterThan.
4753
4754         * simd-methods.h: Remove CompareEquals.
4755
4756         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4757
4758         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4759
4760         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4761         CompareEqual.
4762
4763 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4764
4765         * basic-simd.cs: Fix tests due to change in the API.
4766
4767 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4770
4771 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4772
4773         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4774
4775         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4776         inst_offset as this has invalid values for LDADDR.
4777
4778 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4779
4780         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4781
4782         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4783
4784 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4787         for accessing field->data.
4788
4789 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4790
4791         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4792
4793 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4794
4795         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4796
4797         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4798
4799 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4802         from the cfg mempool.
4803
4804 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4805
4806         * basic-simd.cs: Tests for new methods in Vector8us.
4807
4808 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4809
4810         * mini-ops.h: Add multiply and store high.
4811         
4812         * cpu-x86.md: Same.
4813
4814         * mini-x86.c (mono_arch_output_basic_block): Same.
4815
4816         * simd-methods.h: Same.
4817
4818         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4819         and CompareEqual.
4820
4821 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4824         mono_class_setup_vtable ().
4825
4826         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4827         mono_class_get_vtable_entry () for accessing klass->vtable.
4828
4829         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4830
4831         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4832         found.
4833
4834         * method-to-ir.c (mono_save_token_info): Don't save references made from
4835         wrappers.
4836
4837         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4838         of generic instances.
4839
4840         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4841
4842 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4843
4844         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4845         OP_JMP depends on the method signature.  Calculate it properly.
4846
4847 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4848         
4849         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4850         called directly.
4851
4852         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4853         instances.
4854         (emit_extra_methods): Add another table mapping method indexes to 
4855         offsets in the extra_method_info table.
4856
4857         * mini.h: Bump AOT file format version.
4858         
4859         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4860         and mono_aot_get_method_from_token () into one function.
4861
4862 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4863
4864         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4865         separate counter.
4866
4867 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4870         methods.
4871
4872         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4873         disable_aot.
4874
4875         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4876
4877         * mini.h: Bump aot file format version.
4878
4879         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4880         AOT file can contain native code for methods which are not in the METHOD
4881         table. Generate code for non-sharable generic instances of generic methods
4882         found in the METHODSPEC table.
4883         
4884         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4885         encoding generic type handles.
4886
4887         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4888         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4889
4890         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4891         macros + MONO_ADD_INS.
4892
4893         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4894         context as well.
4895
4896         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4897
4898         * mini.h: Bump aot file format version.
4899
4900         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4901
4902 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4903
4904         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4905         platforms, with definable stack alignment value.  Set to 16 now
4906         for all platforms.
4907
4908         * mini.c, mini.h, driver.c: Command line option for disabling
4909         stack alignment.
4910
4911 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4912
4913         * basic-simd.cs: Tests for new methods in Vector4ui.
4914
4915 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4916
4917         * mini-ops.h: Add packed int shuffle.
4918         
4919         * cpu-x86.md: Same.
4920
4921         * mini-x86.c (mono_arch_output_basic_block): Same.
4922
4923         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4924         extract mask, max, min, shuffle.
4925
4926         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4927
4928 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4929
4930         * basic-simd.cs: Tests for new methods in Vector8us.
4931
4932 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4933
4934         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4935         RuntimeTypeHandle, not a TypedReference.
4936
4937 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4938
4939         * simd-intrinsics.c: remove relocations.
4940
4941 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4944         optimizations from the x86 backend.
4945
4946 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4947
4948         * simd-methods.h, simd-intrinsics.c: debloat method names and
4949         prepare for no relocations.
4950
4951 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4952
4953         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4954         
4955         * cpu-x86.md: Same.
4956
4957         * mini-x86.c (mono_arch_output_basic_block): Same.
4958
4959         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4960         extract mask, max, min and sum of absolute differences.
4961
4962         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4963         method name.
4964
4965 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4966
4967         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4968         Renamed one test for consistency.
4969
4970 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4971
4972         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4973         fix to the code that deal with other blocks.
4974
4975 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4976
4977         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4978
4979 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4982         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4983         able to process the source reg.
4984
4985 2008-10-16  Martin Baulig  <martin@ximian.com>
4986
4987         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4988
4989         * inssel.brg: Add `OP_HARD_NOP'.
4990
4991         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4992
4993         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4994         `OP_HARD_NOP' instruction when running inside the debugger.
4995
4996         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4997         `OP_HARD_NOP' instruction when running inside the debugger.
4998
4999 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5000
5001         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
5002         now works. The issue with the regalloc tripping up no longer
5003         happens.
5004
5005         * simd-intrinsics.c (load_simd_vreg): Same.
5006
5007 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5008         
5009         * basic-simd.cs: Tests for new Vector8ui methods.
5010
5011 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
5014         only for type. This fixes crashes where MonoInst::klass is checked
5015         for ops of type != VTYPE or OBJ.
5016
5017         * simd-intrinsics.c (load_simd_vreg): Same.
5018
5019 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5020
5021         * mini-ops.h: Add ops for packed shuffle/max/avg and
5022         extract mask.
5023         
5024         * cpu-x86.md: Same.
5025
5026         * mini-x86.c (mono_arch_output_basic_block): Same.
5027
5028         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
5029         extract mask.
5030
5031         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
5032         to emit extract mask op.
5033
5034         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
5035         to emit word shuffles.
5036
5037 2008-10-15  Mark Probst  <mark.probst@gmail.com>
5038
5039         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
5040         the largest alignment needed by a variable, but at least
5041         sizeof(gpointer).
5042
5043 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5044
5045         * basic-simd.cs: Tests for the fixes in the last commit.
5046
5047 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5048
5049         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5050         no longer handles STACK_PTR input.
5051
5052         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5053
5054         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5055         get_simd_vreg   but handles STACK_PTR input.
5056
5057         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5058         as the input can be an arbitrary pointer.
5059
5060         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5061         LDADDR local optimization directly otherwise use a store op.
5062
5063 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5064
5065         * basic-simd.cs: Tests for dup low and dup high.
5066
5067 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5068
5069         * mini-ops.h: Add dup low and dup high ops.
5070         
5071         * cpu-x86.md: Same.
5072
5073         * mini-x86.c (mono_arch_output_basic_block): Same.
5074
5075         * simd-intrinsics.c (vector4f_intrinsics): Same.
5076
5077 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * basic-simd.cs: Tests for recently added functionality.
5080
5081 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5082
5083         * mini-ops.h: Add remaining sse1 fp ops.
5084         
5085         * cpu-x86.md: Add remaining sse1 fp ops.
5086
5087         * mini-x86.c (mono_arch_output_basic_block): Same.
5088
5089         * mini.h: Add enum for simd FP compare conditions.
5090
5091         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5092
5093         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5094         so the backed can generate the appropriate op.
5095
5096 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5097         This patch squeese one more byte from the SimdIntrinsc struct.
5098
5099         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5100         a a shift amount intead of simply or'ing it.
5101
5102         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5103
5104         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5105         byte so we can have an aditional flags field without increasing struct size.
5106
5107         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5108         against the simd_supported_versions bitmask.
5109
5110         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5111
5112 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5113
5114         * mini.c: remove rawbuffer code (the only use here is unsafe because
5115         it takes locks during signal handling and the kernel now provides much
5116         better info in proc/pid/smaps these days).
5117
5118 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5119
5120         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5121         OP_X86_PUSH_OBJ. Fixes #434620.
5122
5123         * objects.cs: Add a test.
5124         
5125 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5126
5127         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5128         that the packuswb/packusdw don't work with unsigned numbers for what
5129         would be negative numbers in signed format.
5130
5131         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5132         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5133
5134         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5135
5136         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5137
5138         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5139
5140         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5141
5142         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5143         add more ops.
5144
5145         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5146         version as the enum in mini.h.
5147
5148         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5149         for sse3 ops, check the simd_version field if present. This way the code
5150         works with all versions of sse.
5151
5152 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5153
5154         * simd-intrinsics.c: Fixed intrinsic name typo.
5155
5156         * mini.h: Added missing simd exported function.
5157
5158         * basic-simd.cs: Added tests for Vector4ui.
5159         Fixed broken test for Vector16b.
5160
5161 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5164         the max length to 64.
5165
5166 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5167
5168         * method-to-ir.c: Only do the fast virtual generic method call for
5169         non-wrapper methods.
5170
5171         * mini.h, mini-trampolines.c: The new generic virtual remoting
5172         trampoline handles virtual method calls via the vtable (as done by
5173         the fast virtual generic method calls) to remoting proxies.
5174
5175         * mini.c (mono_jit_create_remoting_trampoline): For generic
5176         methods reate a generic virtual remoting trampoline.
5177
5178         * mini-amd64.h: Enable fast virtual generic method calls again.
5179
5180 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5181
5182         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5183         restore registers when doing tail calls.
5184
5185 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5186
5187         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5188         Vector4ui.
5189
5190 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5191
5192         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5193
5194 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5195
5196         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5197
5198 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5199
5200         * basic-simd.cs: Retrofit for API changes.
5201
5202 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5203
5204         * mini-ppc.c: Handle integer stack arguments for tail calls.
5205
5206 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * optflags-def.h: Removed sse3 optimization.
5209
5210         * driver.c: Same.
5211
5212         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5213         sse3.
5214
5215         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5216
5217         * mini.h: Added enumeration with simd versions.
5218
5219         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5220         for detecting SSE3.
5221
5222         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5223
5224         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5225
5226 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5227
5228         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5229
5230         * basic-simd.cs: Fixed test naming.
5231
5232 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5233
5234         * mini-ops.h: Added ops for packed and saturated math, shifts
5235         and packing/unpacking.
5236
5237         * cpu-x86.md: Added descriptors for the above ops.
5238
5239         * mini-x86.c: Added code to emmit the above ops.
5240
5241         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5242
5243 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5244
5245         * aot-compiler.c (compile_method): Enable AOT for generic code.
5246
5247         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5248
5249 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5250
5251         * mini.c: add a workaround for a common screwup that ends up blamed
5252         to mono (other processes blocking signal delivery).
5253
5254 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5257         in the LDFLD/STFLD opcodes. Fixes #432673.
5258
5259         * iltests.il.in: Add a new test.
5260
5261 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5262
5263         * mini-arm.c: attach the thread in unmanaged->managed transitions
5264         using delegates (bug #433148).
5265
5266 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5267
5268        * basic-simd.cs: Use new ShuffleSel constants.
5269
5270 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5271
5272         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
5273
5274         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
5275         only disable simd intrinsics if no sse2 is detected.
5276
5277         * optflags-def.h: Added sse3.
5278
5279         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
5280         is disabled.
5281
5282 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5285         when adding delegate-invoke wrappers.
5286
5287 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * Makefile.am: Reenable the simd tests.
5290
5291 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5292
5293         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5294           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5295           other vreg is allocated to that hreg.
5296
5297         Contributed under MIT/X11 license.
5298
5299 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5300
5301         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5302         yet checked in.
5303
5304 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5305
5306         * basic-simd.cs: New test suite for SIMD intrinsics.
5307
5308         * Makefile.am: Added new tests.
5309
5310 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5311
5312         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5313
5314         * mini-ops.h: Same.
5315
5316         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5317
5318         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5319         using SSE2 aware opcodes.
5320
5321         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5322         is enabled, this code path is only reachable if conversion ops are emmited after
5323         mono_method_to_ir.
5324
5325         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5326
5327         This optimization saves 6 bytes per conversion against the old version.
5328
5329 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * aot-compiler.c (compile_method): Don't skip methods referencing 
5332         generic methods without a corresponding entry in token_info_hash, since
5333         encode_method_ref () can handle all generic methods now.
5334
5335         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5336         generic context is set.
5337         
5338         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5339         generic sharing of LDTOKEN.
5340
5341 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5342
5343         * mini-amd64.h: Temporarily disabled fast virtual generic method
5344         calls because it breaks the System.Runtime.Remoting tests.
5345
5346 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5349
5350         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5351         so inlining actually works.
5352         (check_inline_caller_method_name_limit): Ditto.
5353
5354 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5355
5356         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5357         64 bit safety (from Olaf Hering and Andreas Farber).
5358
5359 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5360         
5361         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5362         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5363         unused virtual call support code.
5364
5365         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5366         
5367         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5368         which can't use aot trampolines.
5369         (decode_patch): Don't create aot trampolines for methods which can't use
5370         them.
5371
5372         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5373         use aot trampolines.
5374
5375         * mini.h: Bump AOT image format version.
5376         
5377 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5380         to save_token_info () since cmethod is inflated for constrained calls.
5381
5382         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5383
5384 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5385
5386         * Makefile.am: Add build rules for ppc64.
5387         This avoids the build failing at pedump with unresolved symbols
5388         due to lack of arch_sources. Instead it will now fail earlier
5389         due to lack of cpu-ppc64.md.
5390
5391         Contributed under MIT/X11 license.
5392
5393 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5394
5395         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5396         tail calls.
5397
5398         * iltests.il.in: Add test case for tail call with many arguments.
5399
5400 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5403         to the fast virtual generic method code until the aot case is fixed.
5404
5405 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5406
5407         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5408
5409 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5410
5411         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5412         thunks.
5413
5414 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5415         
5416         * simd-intrinsics.c: Forgot to add this one.
5417
5418         * mini-codegen.c: Fix macro in case SIMD is not supported.
5419
5420 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5421         
5422         This patch land initial JIT support for simd intrinsics.
5423
5424         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5425
5426         * Makefile.am: Added simd-intrinsics.c
5427
5428         * simd-intrinsics.c: New file with simd instrinsic related
5429         code.
5430
5431         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5432
5433         * cpu-x86.md: Add simd related instructions.
5434
5435         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5436
5437         * driver.c: Added two new --regression variants.
5438
5439         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5440
5441         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5442
5443         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5444         extract some complicated logic to helper functions.
5445
5446         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5447
5448         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5449
5450         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5451         the specialized simplification pass.
5452
5453         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5454
5455         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5456
5457         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5458         table.
5459
5460         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5461         if MONO_ARCH_NEED_SIMD_BANK is defined.
5462
5463         * mini-ops.h: Added the new simd ops.
5464
5465         * mini-x86.c: Added mono_arch_xregname.
5466
5467         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5468
5469         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5470
5471         * mini-x86.h: Define simd related MONO_ARCH macros.
5472
5473         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5474
5475         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5476
5477         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5478         MONO_CLASS_IS_SIMD to deal with simd related IR.
5479
5480         * mini.h (MonoInst): Added spill_var to the backend union.
5481
5482         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5483
5484         * mini.h: Added forward declarations of the new simd fuctions.
5485
5486         * optflags-def.h: Added new optimization names SIMD.
5487
5488         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5489
5490         * regalloc.h: Added support for working with 3 register banks.
5491
5492         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5493
5494         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5495
5496 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5497
5498         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5499
5500 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5501
5502         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5503         instead of one on 64 bit systems.
5504
5505         * method-to-ir.c: Remove unused includes.
5506
5507 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5508
5509         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5510         cfg->used_int_regs, since the two are different on arm.
5511
5512 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5513
5514         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5515         mono_method_get_vtable_index() to get the vtable index.
5516
5517 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5518
5519         * method-to-ir.c (mono_method_to_ir2): Don't create native
5520         wrappers for array methods, because they're never called (and if
5521         they were called they wouldn't work).
5522
5523 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5524
5525         * method-to-ir.c (mono_method_to_ir2): Array methods are
5526         special-cased and must not be invoked indirectly via the (M)RGCTX
5527         when generic sharing is turned on.  Fixes #431413.
5528
5529 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5530
5531         * method-to-ir.c: When generic sharing is active, call
5532         non-interface virtual generic methods via the standard trampoline.
5533
5534         * mini-trampolines.c: Handle virtual generic shared methods.
5535
5536         * mini.h, mini-x86.c, mini-x86.h: New argument for
5537         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5538         method thunks and which is the trampoline to call if the lookup
5539         fails.  Enable the virtual generic method thunk for x86.
5540
5541         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5542         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5543         argument but assert that it's NULL, because these archs don't yet
5544         implement the virtual generic method thunk.  Changes in the IMT
5545         thunk data structures.
5546
5547 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * aot-compiler.c (emit_globals): Avoid invalid characters in
5550         the static linking symbol.
5551
5552         * objects.cs: Add a test for the range check optimization. Fix warnings.
5553
5554         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5555         optimization from the current JIT.
5556
5557         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5558         later in decompose_array_access_opts () to allow more optimizations.
5559
5560         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5561         mono_decompose_soft_float () for consistency.
5562
5563         * mini-ops.h: Fix arguments of OP_STRLEN.
5564
5565         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5566         into a separate function.
5567         (reset_cast_details): Ditto.
5568         (handle_unbox): Save cast details. Fixes #431254.
5569
5570         * method-to-ir.c: Remove some obsolete FIXMEs.
5571
5572 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5573
5574         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5575
5576 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5577
5578         * mini-codegen.c: More work on macros to make them
5579         ready for multiple regbanks.
5580
5581 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5584
5585         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5586
5587 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * mini-codegen.c (mono_spillvar_offset): Proper support for
5590         multiple regbanks.
5591
5592 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5595         the stack overflow changes.
5596
5597 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5598
5599         * mini-codegen.c: Make all bank macros depend on reg_bank.
5600
5601         * mini-codegen.c (mono_local_regalloc): Make free mask
5602         initialization regbank aware.
5603
5604 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5605
5606         * mini-codegen.c (mono_local_regalloc): Extract callee
5607         mask selection to a function and make it regbank aware.
5608
5609 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5612         code to deal with many regbanks.
5613
5614 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5615
5616         * mini-codegen.c: More fp->regbank changes.
5617
5618 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5619
5620         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5621         of a hardcoded constant.
5622
5623 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5624
5625         * method-to-ir.c (type_from_stack_type): Fix typo.
5626
5627 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * mini-ia64.c (emit_move_return_value): Convert float return values to
5630         double.
5631
5632         * objects.cs: Add a new test.
5633         
5634         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5635         VARARG methods to fix an assert later.
5636
5637         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5638         end so it at least compiles.
5639
5640 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5643
5644 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5645
5646         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5647         optimization to a new function (emit_optimized_ldloca_ir) and enable
5648         it for both ldloca and ldloca_s.
5649
5650 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5653         gshared CASTCLASS code.
5654
5655         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5656         amd64, where the libc stack unwinder encounters stack frames referring to
5657         native code in unmapped memory.
5658
5659         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5660         sharing.
5661
5662         * generics.cs: Add new test.
5663
5664 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5667         add a check that one of the ARM_FPU_ constants is defined.
5668
5669         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5670         
5671         * mini-exceptions.c: Fix build on non-altstack platforms.
5672
5673         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5674         sharing of vtypes.
5675
5676         * ir-emit.h: Add a comment to NEW_PCONST.
5677
5678         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5679
5680         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5681
5682         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5683         after the changes to MonoJitDomainInfo.
5684
5685 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5686
5687         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5688
5689 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5690
5691         * mini-ppc.c: Compiler warning fixes.
5692
5693 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5694
5695         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5696         for pinvokes.
5697
5698 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5699
5700         * exceptions-ppc.c, mini-ppc.h: Compile
5701         mono_arch_handle_altstack_exception() on Darwin, too.
5702
5703 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5704
5705         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5706         work on archs which don't have generic sharing implemented, only
5707         without the vtable_arg.
5708
5709 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5710
5711         * mini.c: Added comment explaining why delegate ctor icall
5712         wrappers are compiled.
5713
5714 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5715
5716         * mini.c: Don't produce trampolines to delegate ctor icall
5717         wrappers but compile them upfront.
5718
5719 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5720
5721         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5722         runtime-set function when going back to managed code. Currently this
5723         is used to set back the protection on the soft ovf pages and/or to
5724         throw the stack overflow exception that happened in unmanaged code.
5725
5726 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5727
5728         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5729         runtime-set function when going back to managed code. Currently this
5730         is used to set back the protection on the soft ovf pages and/or to
5731         throw the stack overflow exception that happened in unmanaged code.
5732
5733 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5734
5735         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5736         the support code for restoring stack protection after stack overflows
5737         that happen in unmanaged code. Don't set the exec permission on the
5738         soft overflow area.
5739
5740 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5743         delegate->method_ptr is set. Fixes #428054.
5744
5745 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * tests.cs: Rename to ratests.cs.
5748
5749         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5750         emit_get_rgctx_... functions.
5751
5752 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5753
5754         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5755
5756 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5757
5758         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5759         before asserting that method is sharable.
5760
5761 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5762
5763         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5764         whether method needs a static RGCTX wrapper used instead of
5765         complex conditions.
5766
5767         * generic-sharing.c, mini.h: A few functions moved to
5768         metadata/generic-sharing.c.
5769
5770 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5771
5772         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5773         Generic code sharing for value types, which essentially means
5774         treating value type methods like static methods.  The RGCTX is
5775         passed in the same way.
5776
5777 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5778
5779         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5780         opcode when creating multi-dimensional arrays of open types.
5781
5782         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5783         open generic types.
5784
5785         * generics.cs: Add a test.
5786
5787         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5788
5789 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5790
5791         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5792
5793         * mini.c (mini_method_compile): Set it when running under the debugger. 
5794
5795         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5796         vreg optimization if the flag is set.
5797
5798         * driver.c (mono_main): Add --attach= option to pass options to
5799         the attach agent.
5800
5801         * mini.c (sigquit_signal_handler): Start the attach agent.
5802
5803         * ssapre.c: Disable this to save space since it is not yet ported to
5804         linear IR.
5805
5806         * regalloc2.c: Disable this to save space.
5807
5808         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5809
5810 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5811
5812         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5813         the -v option useful again.
5814
5815 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5816
5817         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5818         --break-at-bb.
5819
5820         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5821         arrays of arrays. Fixes #428406.
5822
5823         * method-to-ir.c (mini_emit_castclass): Ditto.
5824
5825         * objects.cs: Add new test.
5826         
5827 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5828
5829         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5830         was wrong at it choked against target_type_is_incompatible for byref types.
5831
5832 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5835         places.
5836
5837 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5838
5839         * mini-exceptions.c: update a few more exceptions-related counters.
5840
5841 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5842
5843         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5844         new functions to allocate from persistent mempools.
5845
5846 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5849         multiple register banks in the future.
5850
5851         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5852
5853 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5854
5855         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5856
5857         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5858
5859         * mini.h: Export type_to_eval_stack_type.
5860
5861         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5862         is only ins->klass of byref types.
5863
5864 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5867         (mini_emit_memcpy2): Ditto.
5868
5869         * mini-amd64.c: Fix a warning.
5870
5871 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5872
5873         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5874         linking.
5875
5876 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5877
5878         * method-to-ir.c: Extract stloc micro-optimization to a
5879         function and apply it to all cases.
5880
5881 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5882
5883         * method-to-ir.c: Don't fail generic code sharing in cases we
5884         already support.
5885
5886 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5887
5888         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5889
5890 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5891
5892         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5893         implementation.
5894
5895 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5896
5897         * trace.c: make tracing more useful and correct, with per-thread
5898         id and indent info.
5899
5900 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5901
5902         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5903         doing a method call and the argument is an R4.
5904
5905 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5906
5907         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5908         generic methods.
5909
5910 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5911
5912         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5913
5914 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5917         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5918
5919 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5920
5921         * driver.c: Add a --agent argument (not supported yet) to load managed
5922         agent assemblies before loading the main assembly, similarly to how the
5923         Java VM handles agents.
5924
5925 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5926
5927         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5928         function to do stack layout of local variables.
5929
5930 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5931
5932         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5933         calculation.
5934
5935 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5938         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5939         JIT if DISABLE_JIT is defined.
5940
5941         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5942         defined.
5943
5944 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5945
5946         * iltests.il.in: Disable the fconv test on PPC (the result is
5947         undefined according to ECMA).
5948
5949 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5950
5951         * iltests.il.in: Enable tail call tests for PPC.
5952
5953         * mini.h: Add variable for storing incoming valuetype argument
5954         addresses for tail calls.
5955
5956         * mini-ppc.c: Implement valuetype arguments and return values for
5957         tailcalls on Linux.
5958
5959 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5960
5961         * mini-ppc.c: Partially implement tail calls (struct arguments and
5962         return values not supported).
5963
5964         * method-to-ir.c: Enable tail calls on PPC.
5965
5966 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5969         runtime-invoke wrappers to work around the problem of them getting
5970         assigned to a random class.
5971
5972         * aot-runtime.c (mono_aot_get_method): Ditto.
5973         
5974 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5977         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5978
5979 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5980
5981         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5982         until they're implemented properly.
5983
5984         * exceptions-ppc.c: Use arch-independent exception-handling code
5985         instead of custom one.
5986
5987         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5988         for Linear IR.
5989
5990         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5991
5992         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5993         applies when __powerpc__ is defined.
5994
5995 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5996
5997         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5998         methods to their code to avoid computing the full name of wrappers and
5999         doing a lookup in a string hash table.
6000
6001 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6002
6003         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
6004         we identify bblocks before method_to_ir () is ran.
6005
6006         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
6007         Also avoid optimizing branches pointing to themselves.
6008
6009         * mini.c (mini_method_compile): Ditto. Fixes #422947.
6010
6011 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
6014
6015 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6016
6017         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
6018         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
6019         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
6020         'buf'.
6021
6022         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
6023         jumped to the same entry in plt_jump_table.
6024
6025 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * method-to-ir.c (initialize_array_data): Handle field with RVA from
6028         dynamic images.
6029
6030 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
6033         other assignment can be if converted. Saves 1.5% on corlib size and fixes
6034         #421807.
6035
6036 2008-08-29  Geoff Norton  <gnorton@novell.com>
6037
6038         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
6039         segment, and doesn't properly handle .space as .text.  Fixes
6040         AOT Mach/ARM
6041
6042 2008-08-29  Geoff Norton  <gnorton@novell.com>
6043
6044         * mini.c: Disable the mach exception handler when running on 
6045         ARM
6046
6047 2008-08-29  Geoff Norton  <gnorton@novell.com>
6048
6049         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6050         globals on Darwin/ARM
6051
6052 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6055         since too many things depend on it. Instead, call 
6056         mono_runtime_set_no_exec ().
6057         
6058         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6059         the new JIT.
6060
6061         * aot-compiler.c: Add an 'asm-only' AOT option.
6062
6063         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6064                 
6065         * aot-compiler.c (compile_method): Disable gshared support for now as it
6066         doesn't yet work.
6067
6068 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6069
6070         * mini-amd64.h : Fix a compiler warning.
6071
6072         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6073           Changed to use a callback function to retrieve the unwind info.
6074           This avoids problems observed when code blocks were removed by
6075           unloading an app domain.
6076
6077         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6078           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6079           to work properly.
6080
6081         Contributed under MIT/X11 license.
6082
6083 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6084
6085         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6086           case to keep the stack aligned to 8.
6087
6088         Contributed under MIT/X11 license.
6089
6090 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6091
6092         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6093         avoid repeated linear searches.
6094
6095 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6096
6097         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6098         methods it can't handle.
6099         
6100         * aot-compiler.c (add_method): Avoid adding a method twice.
6101         (add_wrappers): Add runtime invoke wrappers for all methods.
6102
6103         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6104         function to create an aot-compatible version of this trampoline.
6105
6106         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6107
6108 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6109
6110         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6111
6112         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6113         with a generic sharing failure.
6114
6115         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6116
6117         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6118         CEE_RETHROW. Fixes #419634.
6119
6120         * mini.c (mono_method_to_ir): Ditto.
6121
6122         * exceptions.cs: Add a new test.
6123         
6124         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6125         to mono_type_stack_size_internal () since some callers might not pass in
6126         an rgctx.
6127
6128         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6129         instrument_prolog. Fixes #419878.
6130
6131         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6132         doubles in soft float mode volatile.
6133
6134 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6135
6136         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6137
6138         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6139         to handle soft float correctly.
6140
6141         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6142         the fast path.
6143
6144         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6145
6146         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6147         to sp, since the generics catch code requires it.
6148
6149         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6150         copying.
6151
6152         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6153         mono_arch_emit_imt_argument ().
6154
6155         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6156
6157         * mini-arm.c tramp-arm.c: Generic sharing updates.
6158
6159 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6160
6161         * mini-arm.c: Fix the arm build.
6162
6163         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6164         handling enums, generic instances and generic sharing.
6165         (mini_type_stack_size_full): Ditto.
6166
6167         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6168         
6169         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6170
6171         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6172
6173         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6174         trampolines.
6175
6176         * mini-arm.c: Various small generic sharing changes.
6177
6178         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6179         this for x86.
6180         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6181         custom code.
6182
6183         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6184         helper function to return a generic class init trampoline.
6185
6186         * method-to-ir.c mini.c: Use it.
6187         
6188         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6189         arch-specfic function to return a generic class init trampoline.
6190
6191         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6192         the GENERIC_CLASS_INIT custom code.
6193
6194         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6195         a fatal error, not a sharing failure.
6196
6197         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6198         needed.
6199
6200         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6201         trampoline argument from MONO_ARCH_VTABLE_REG.
6202
6203         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6204         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6205         argument, and pass the vtable in VTABLE_REG.
6206
6207         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6208         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6209         argument, and pass the vtable in VTABLE_REG.
6210         (mono_arch_create_trampoline_code_full): Remove some special casing for
6211         the rgctx fetch trampoline.
6212
6213         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6214         Fixes #419273.
6215
6216         * iltests.il: Add a test for it.
6217
6218 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6221
6222         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6223         no longer needed.
6224
6225         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6226         use mono_jit_info_table_find () to avoid recursion.
6227         (mono_delegate_trampoline): Add a sync wrapper here.
6228
6229         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6230         here.
6231
6232         * mini.c (mono_method_to_ir): Ditto.
6233         
6234         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6235         add_sync_wrapper argument. Don't add a sync wrapper here.
6236         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6237
6238         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6239         
6240 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6241
6242         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6243           of nonvolatile registers back from MonoContext to CONTEXT.
6244
6245         Contributed under MIT/X11 license.
6246
6247 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6248
6249         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6250           arguments on Winx64 there are only 4 argument registers.  For this
6251           logic to work the last argument must be pulled from the stack.  
6252
6253         Contributed under MIT/X11 license.
6254
6255 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6258
6259         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6260         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6261         encode/decode_method_ref ().
6262
6263         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
6264
6265         * aot-runtime.c (decode_patch): Ditto.  
6266
6267         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
6268         MONO_PATCH_INFO_METHOD.
6269
6270         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
6271         MonoGenericJitInfo.
6272
6273         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
6274         MonoGenericJitInfo.
6275
6276         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
6277
6278         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
6279         one from the caller.
6280
6281         * aot-runtime.c (decode_generic_inst): New function to decode and
6282         return a interned generic inst.
6283         (decode_klass_ref): Use it.
6284         (decode_method_ref): Ditto.
6285
6286         * aot-compiler.c (emit_exception_debug_info): Save 
6287         jinfo->has_generic_jit_info too.
6288
6289 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6292
6293         * iltests.il.in: Add a test for fconv_to_i.
6294
6295         * liveness.c: Disable the liveness2 pass for now to save space.
6296
6297         * regalloc2.c: Include mempool-internals.h to fix warnings.
6298
6299         * aot-compiler.c (encode_method_ref): Encode the context of generic
6300         instance methods.
6301
6302         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6303         the context saved in the aot file.
6304
6305         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6306
6307         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6308
6309         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6310         volatile so they won't be optimized away.
6311
6312 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * ssa.c:
6315         * ssa2.c:
6316         * mini.c:
6317         * regalloc2.c:
6318         * dominators.c: Remove duplicated functions that now are in
6319         mempool-internals.h.
6320
6321 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6322
6323         * aot-compiler.c: Fix warnings.
6324
6325         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6326
6327         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6328
6329         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6330         as the patch type.
6331
6332         * mini.c (mono_resolve_patch_target): Ditto.
6333         
6334         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6335         (encode_klass_ref): Add support for encoding VARs/MVARs.
6336
6337         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6338
6339         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6340         the handling of the got entries into a separate 'decode_got_entry' function.
6341         Add support for RGCTX_FETCH.
6342
6343         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6344         clobbered by the trampoline code.
6345
6346         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6347         not clobbered by the indirect calling code.
6348
6349 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6352         to fix the build.
6353
6354 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6357         signature using the compilation mempool otherwise we would leak it.
6358
6359 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6362         mono_emit_abs_call ().
6363
6364         * patch-info.h: Add GENERIC_CLASS_INIT.
6365
6366         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6367
6368         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6369         as their target as a near call.
6370
6371         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6372         ABS handling code.
6373         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6374
6375         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6376         call to a runtime function described by a patch.
6377
6378         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6379         mono_emit_abs_call, this has the advantage that the ABS handling code in
6380         mono_codegen () can handle them both, and can handle other stuff in the
6381         future without additional code.
6382
6383         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6384         entry.
6385         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6386         abs addresses.
6387
6388         * mini.h: Add missing bblock related prototypes.
6389
6390         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6391         reverse_inst_list_len fields.
6392
6393         * mini.c: Refactor this file a bit by moving branch optimizations to 
6394         branch-opts.c.
6395
6396         * method-to-ir.c: Merge generic sharing changes missed earlier.
6397
6398         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6399
6400         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6401         shared patches. Process METHODCONST as a shared patch.
6402
6403         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6404         as it crashes on the 2.0 mscorlib.
6405
6406         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6407         to cause crashes.
6408         
6409         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6410         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6411         by IMT.
6412
6413         * aot-compiler.c: Reorganize the got handling code to be a bit more
6414         understandable.
6415
6416 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6417
6418         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6419         mono_patch_info_equals/hash, and use it to massively simplify
6420         get_plt_index ().
6421
6422         * mini.c (mono_patch_info_hash): Simplify this and add support for
6423         more patch types.
6424
6425         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6426
6427         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6428         handling code, since an offset is not enough to identify a trampoline.
6429
6430         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6431
6432 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6433
6434         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6435
6436         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6437
6438         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6439
6440         * decompose.c: PPC decompositions for various ops.
6441
6442         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6443
6444 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6445
6446         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6447         call the generic trampoline code using a call, instead of a jump, to
6448         remove some special casing from the generic trampoline code.
6449
6450         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6451         (mono_codegen): Ditto.
6452
6453         * aot-compiler.c aot-runtime.c: Ditto.
6454
6455         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6456
6457         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6458         helper function to find the offset corresponding to a lazy fetch trampoline.
6459
6460         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6461         when doing generic sharing.
6462
6463         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6464         places.
6465         
6466         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6467         mini-trampolines.c to be with the other trampoline creation functions.
6468
6469         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6470         as it is equal to method->signature in most cases, add a 
6471         mono_emit_method_call_full variant which takes a signature and an imt
6472         argument as well.
6473
6474 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6475
6476         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6477         to this function, since it could be computed easily from the method 
6478         argument.
6479         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6480         more.
6481
6482         * method-to-ir.c mini.c: Remove references to 
6483         compile_generic_method_wo_context.
6484
6485         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6486         generic method calls.
6487         
6488         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6489         dimensional non-szarrays.
6490
6491         * mini.c (mini_init): Register mono_array_new_1.
6492
6493         * jit-icalls.c (mono_array_new_1): New jit icall.
6494
6495         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6496         pointing to the method.
6497
6498         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6499         method addresses belonging to METHOD_JUMP patches in the 
6500         jump_target_got_slot_hash.
6501         (mono_aot_load_method): Ditto.
6502
6503         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6504         METHOD_JUMP patches.
6505
6506         * mini.c (mini_create_jit_domain_info): New helper function which 
6507         initializes/frees domain->runtime_info.
6508         (mini_free_jit_domain_info): Ditto.
6509         (mini_init): Install the domain hook functions with the runtime.
6510
6511         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6512         information maintained by the JIT.
6513
6514         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6515         insertion into jump_table_hash into mono_codegen (), also implement proper
6516         locking.
6517
6518         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6519         tail calls, it is already done by the aot code.
6520         
6521         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6522         mechanism on amd64.
6523
6524         * iltests.il.in: Make the jmp test a bit more complex.
6525
6526         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6527         generic instances which doesn't have a token.
6528
6529         * aot-runtime.c (decode_method_ref): Ditto.
6530         
6531         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6532         can handle this case now.
6533         (handle_box): Ditto.
6534
6535 2008-08-15  Geoff Norton  <gnorton@novell.com>
6536
6537         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6538         debugging check.
6539
6540 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6543         calling generic methods.
6544
6545         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6546
6547         * aot-runtime.c (decode_patch_info): Ditto.
6548
6549         * mini.c (mono_resolve_patch_target): Ditto.
6550         
6551         * patch-info.h: Add METHOD_RGCTX.
6552
6553         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6554
6555 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6556
6557         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6558         arguments in registers.
6559
6560         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6561         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6562
6563         * mini.c (mini_method_compile): Abort aot compilation for generic
6564         methods if generic sharing is disabled.
6565         
6566         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6567         an mrgctx.
6568
6569         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6570         requiring an mrgctx.
6571
6572         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6573         store instructions when converting a vcall to a normal call.
6574
6575         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6576         mono_arch_find_jit_info.
6577
6578 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6581         avoid calling mono_method_full_name () for every method even if the
6582         env var is not set.
6583         (check_inline_caller_method_name_limit): Ditto.
6584
6585 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6586
6587         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6588         assemblies in one run.
6589
6590         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6591         skipped methods if it is not 0.
6592
6593         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6594
6595 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6596
6597         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6598           MONO_ARCH_HAVE_UNWIND_TABLE.
6599
6600         Contributed under MIT/X11 license.
6601
6602 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6603
6604         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6605           from default optimizaton list on Winx64.
6606
6607         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6608
6609         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6610           the LMF from the MonoJitTlsData structure.
6611
6612         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6613
6614         Contributed under MIT/X11 license.
6615
6616 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6617
6618         * mini.c (sigsegv_signal_handler): Fix the build.
6619
6620         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6621         assembly->aot_module.
6622
6623         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6624         hash table. This simplifies and speeds up a lot of code, and fixes support
6625         for .netmodules.
6626
6627         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6628         with the runtime.
6629
6630         * mini-exceptions.c: Ditto.
6631         
6632         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6633         'native_offset' argument, since these are computed in the 
6634         mono_find_jit_info () function.
6635
6636         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6637         is used by exceptions-ppc.c.
6638
6639         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6640         mono_arch_find_jit_info ().
6641         
6642         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6643         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6644         generic code in mini-exceptions.c.
6645
6646 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6647
6648         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6649
6650         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6651         
6652         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6653         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6654         called while holding the loader lock. Fixes #415608.
6655         (mono_aot_get_method_from_token_inner): Ditto.
6656
6657 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6660         to reduce differences between this and the generic implementation in
6661         mini-exceptions.c.
6662         (ves_icall_get_frame_info): Ditto.
6663
6664         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6665
6666         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6667         longer neccesarry.
6668
6669         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6670         mono_arch_get_call_filter () and make it non-static, for consistency with the
6671         other architectures.
6672
6673 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * mini.c:
6676         * local-propagation.c:
6677         * mini-x86.c: Correct the name of arch defines.
6678
6679 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6682         NO_EMULATE_LONG_SHIFT_OPS define.
6683
6684 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6687         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6688
6689         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6690         MACH fixes. Merged from the 2.0 branch.
6691
6692         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6693
6694         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6695         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6696
6697         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6698
6699         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6700         mono_marshal_get_native_wrapper () signature changes.
6701
6702 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6703
6704         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6705         conversion bug under arm.
6706
6707 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6710
6711         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6712         with overflow checking.
6713
6714 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6715
6716         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6717         to the genmdesc.pl file
6718
6719 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6720
6721         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6722         arg_array in the soft-float versions of the LOAD/STORE macros.
6723
6724         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6725         implementation.
6726
6727         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6728
6729 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6730
6731         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6732         a float HFA. Fixes #413621.
6733
6734 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6735
6736         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6737         frame_size to args_size. Fixes build.
6738
6739 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6742         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6743
6744         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6745         the stack are not unaligned. Fixes #413247.
6746         
6747 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6748
6749         * mini.c: update jitted methods performance counters.
6750
6751 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6752
6753         * mini-exceptions.c: increase the exceptions thrown performance
6754         counter in mono_handle_exception ().
6755
6756 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6757
6758         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6759         can work with netmodules.
6760
6761 2008-07-28  Geoff Norton  <gnorton@novell.com>
6762
6763         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6764         regression tests.
6765
6766 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6769         correct place.
6770
6771 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6772
6773         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6774           The float param registers and other param registers must be the 
6775           same index on Windows x64.
6776
6777         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6778           ArgValuetypeAddrInIReg argument case.  Setting the argument
6779           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6780
6781         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6782           variable computed above as the copy length for arguments of storage
6783           type ArgValuetypeAddrInIReg.
6784
6785         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6786           ArgValuetypeAddrInIReg argument case.  This case will rely on
6787           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6788
6789         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6790           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6791           jump and tail call instructoins as they do not follow the typical call behavior.
6792
6793         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6794           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6795           local variable and pass the local variable by reference to the called method.
6796
6797         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6798           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6799           of a struct is passed in a register it must be saved with the other
6800           volatile argument on the stack.
6801
6802         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6803           frame pointer the stack adjustment value must be saved to the unwind 
6804           info structure.
6805
6806         Contributed under MIT/X11 license.
6807
6808 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6809
6810         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6811         which got lost in the merge.
6812
6813 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6816         build.
6817
6818         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6819         
6820         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6821         icalls, since they won't be patched.
6822
6823         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6824         different code sequence when running under valgrind to prevent some valgrind
6825         errors.
6826
6827         * iltests.il.in: Add new regression test.
6828
6829         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6830         end with a throw.
6831
6832         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6833         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6834
6835         * iltests.il.in: Add new test.
6836
6837         * aot-compiler.c: Fix some warnings.
6838
6839         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6840         Fixes #412494.
6841
6842 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6843
6844         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6845         (mini_usage_jitdeveloper): Add a missing --wapi option.
6846
6847 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * mini-codegen.c: Simplify the is_fp macros.
6850         (free_up_ireg): Remove, use free_up_reg instead.
6851         (free_up_reg): Fix the fp case.
6852
6853 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6854
6855         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6856         lowered earlier.
6857
6858         * exceptions-x86.c: Merge some changes which seemed to have got lost
6859         in the linear-ir merge.
6860
6861         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6862
6863         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6864         long vreg volatile even if the variable was already created.
6865
6866         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6867         volatile variables.
6868
6869 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6870
6871         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6872
6873         * mini.c (mono_jit_compile_method_inner): Add support for 
6874         MONO_EXCEPTION_BAD_IMAGE.
6875
6876         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6877         mini_method_get_context () returns NULL. Fixes #356531.
6878
6879         * mini.c (mono_method_to_ir): Ditto.
6880         
6881         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6882         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6883
6884 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6887         in the LDFTN implementation.
6888
6889 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6890
6891         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6892         code, patch calls to icalls, too, even if they're not in the
6893         shared generic code hash.  Fixes #411962.
6894
6895 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6896
6897         * cpu-x86.md: Increase the length of the fcall opcodes.
6898
6899         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6900         calls returning floats.
6901
6902         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6903         on NEWARR.
6904         
6905         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6906         missed earlier.
6907
6908         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6909         into the domain->method_code_hash.
6910
6911         * aot-compiler.c: Fix win32 build.
6912
6913         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6914         
6915         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6916         gshared NEWARR implementation.
6917
6918         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6919
6920         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6921         can be used outside of method_to_ir.
6922
6923         * mini.h (MonoCompile): Add arg_types field.
6924
6925         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6926         
6927         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6928         the values of the local arg_array and param_types array.
6929
6930 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6931
6932         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6933         got accesses might only get generated later when NEWOBJ is decomposed.
6934         
6935         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6936         looking up the native code of the target method when a delegate is called
6937         for the first time.
6938
6939         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6940         optimization.
6941
6942         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6943
6944         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6945         AOT work on platforms without a working dlsym implementation.
6946
6947         * mini.h: Bump AOT image format version.
6948         
6949 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6950
6951         * mini-exceptions.c: Free a MonoType with
6952         mono_metadata_free_type() instead of g_free().
6953
6954         * aot-runtime.c: Free a MonoType.
6955
6956 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6957
6958         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6959         optimization.
6960
6961         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6962         fp stack on x86.
6963
6964 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6965         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6966         profiler hook.
6967
6968 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6969
6970         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6971         NEWOBJ calls on valuetypes.
6972
6973         * iltests.il.in: Add new test.
6974
6975         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6976
6977 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6978
6979         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6980         is no longer needed.
6981
6982         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6983         non register sized integer arguments.
6984         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6985         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6986         emit_memcpy2 ().
6987
6988         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6989         CEE_MONO_RETOBJ.
6990         
6991         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6992         two a binop with different sized arguments is emitted.
6993
6994         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6995         instruction in the ins==NULL case.
6996
6997 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
7000
7001         * mini-x86.c: Fix osx build.
7002
7003         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
7004         opcodes as well.
7005
7006         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
7007         instruction for non int sized variables.
7008
7009         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
7010         implementation.
7011
7012 2008-07-23  Robert Jordan  <robertj@gmx.net>
7013
7014         * method-to-ir.c: Fix MSVC build.
7015
7016 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
7019         a non int sized type, widen it to an int since newer versions of gcc seem to
7020         generate code which needs this.
7021
7022         * ssa2.c abcremoval2.c: Fix warnings.
7023
7024         * *: Merge the Linear IR branch.
7025
7026         The original branch is at trunk/branches/vargaz/mini-linear-il, and
7027         the ChangeLog file there describes all the changes done over the years. 
7028         Further documentation can be found at www.mono-project.com/Linear_IL.
7029
7030 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7031
7032         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7033           The float param registers and other param registers must be the 
7034           same index on Windows x64.
7035
7036         Contributed under MIT/X11 license.
7037
7038 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
7039
7040         * mini.c: Make the previous fix GC safe.
7041
7042 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
7043
7044         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
7045
7046 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7047
7048         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7049           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7050           ArgValuetypeAddrInIReg instead.
7051
7052         Contributed under MIT/X11 license.
7053
7054 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7055
7056         * mini-codegen.c (get_register_spilling): Fix a warning.
7057
7058 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7059
7060         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7061         for types which the initialization fails. Raises the provided exception
7062         at the right stop after cleanup.
7063
7064 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7065
7066         * aot-compiler.c: Free most of the memory allocated during compilation.
7067
7068         * mini.c (mini_parse_debug_options): Fix a leak.
7069         
7070         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7071         during aot compilation.
7072
7073 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7074
7075         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7076         it has too much register pressure.
7077
7078 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7081
7082 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7083
7084         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7085         on x86.
7086
7087         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7088         on amd64 similar to the way it is done on arm.
7089
7090         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7091
7092         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7093         consistency, normalize error messages, avoid loading aot-only modules in
7094         normal mode.
7095
7096         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7097         for consistency.
7098
7099         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7100
7101 2008-07-11  Martin Baulig  <martin@ximian.com>
7102
7103         * debug-debugger.h
7104         (MonoDebuggerInfo): Add `interruption_request'.
7105
7106 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * aot-compiler.c (emit_plt): Remove some dead code.
7109
7110         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7111
7112         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7113         return the plt info offset belonging to a given plt entry.
7114
7115         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7116         mono_aot_get_plt_info_offset.
7117         
7118         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7119         similar to the amd64 code by makeing jumps through a separate jump table 
7120         instead of embedding the jump addresses into the code.
7121
7122 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7125         method.
7126
7127 2008-07-10  Martin Baulig  <martin@ximian.com>
7128
7129         * mini.c (mini_method_compile): Disable generics sharing when
7130         running in the debugger.
7131
7132 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7133
7134         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7135
7136         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7137         the local register allocator from running out of registers on x86 when 
7138         using aot.
7139
7140 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7141
7142         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7143         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7144         C4146.
7145
7146         Contributed under MIT/X11 license.
7147
7148 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7149
7150         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7151         speed up the assembler.
7152
7153 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7156         support.
7157
7158         * mini.c: Move the soft float handling macros a bit earlier, add 
7159         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7160         place.
7161
7162         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7163
7164         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7165         read-only to help catch code allocation requests.
7166         
7167         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7168         and turn it off when using --aot-only or when compiling with --aot=full.
7169
7170         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7171         jump table for switches from the normal domain mempool, not the code
7172         manager.
7173
7174         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7175         unbox trampoline which handles aot-only mode too.
7176
7177         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7178         an AOTed unbox trampoline.
7179
7180         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7181
7182 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7183
7184         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7185         ""
7186
7187         Contributed under MIT/X11 license.
7188
7189 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7190
7191         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7192           the unwind information for the method at the end of the allocated block.
7193           
7194         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7195           MonoCompileArch to hold the unwind info for SEH on Winx64
7196         
7197         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7198           frame pointer info for the method being compiled.
7199           
7200         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7201           the call to mono_exception_from_token.
7202           
7203         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7204           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7205           information is stored a the end of the method block because it is all 32-bit offset based.
7206
7207         Contributed under MIT/X11 license.
7208
7209 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7210
7211         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7212
7213         * wapihandles.c: Fix warnings.
7214
7215         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7216         mode.
7217
7218         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7219         mono_jit_compile_method in aot-only mode since that calls the type 
7220         initializer.
7221         
7222         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7223         get_delegate_invoke_impl in aot-only mode.
7224
7225         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7226
7227 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7230
7231         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7232         is on by default.
7233
7234         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7235
7236         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7237         init trampoline from the AOT file as well.
7238
7239         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7240         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7241         code.
7242
7243         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7244         mono_init.
7245
7246         * exceptions-amd64.c: Add _full variants for the remaining exception code
7247         creation functions as well, allow emission of relocatable code, remove
7248         caching since that is now done by the caller.
7249
7250         * mini-exceptions.c: Add _full variants for the remaining exception code
7251         creation functions as well, add aot-only support.
7252
7253         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7254         if we can determine a proper token for them.
7255         (add_wrappers): Add a few more wrappers.
7256         (emit_method_code): Remove some dead code.
7257         (emit_trampolines): Emit exception code too.
7258
7259         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7260
7261         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7262         mono_array_new_va which avoids varargs.
7263
7264         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
7265
7266         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
7267         mono_arch_create_specific_trampoline () in all places.
7268
7269         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
7270         a bit so it can be used for other things as well.
7271         
7272         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
7273         on demand as well.
7274
7275         * exceptions-amd64.c: Rename the caching from the exception code creation
7276         functions, it is done by the caller instead.
7277         
7278         * exceptions-amd64.c: Change the signature of the exception code creation 
7279         functions to allow the creation of relocatable code later.
7280
7281         * mini-exceptions.c: Add a set of functions to query the various 
7282         runtime-generated exception functions.
7283
7284         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7285         mono_arch_.. () functions.
7286         
7287 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7290
7291         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7292
7293         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7294         (mini_get_vtable_trampoline): Ditto.
7295
7296         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7297         code in the AOT case by returning the code size and a list of relocations to
7298         the caller.
7299
7300         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7301
7302 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7303
7304         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7305           clean the stack.
7306
7307         Contributed under MIT/X11 license.
7308
7309 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7312         so the buffer size can be computed correctly. Fixes #404735.
7313
7314         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7315         normally as cfg->debug_info is already freed.
7316
7317 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * mini-amd64.c: For calls returning vtypes in registers, don't store
7320         the return address on the stack, instead allocate a separate local for
7321         it. Fixes #404729.
7322
7323 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7324
7325         * mini-trampolines.c, mini.h: Add an argument to
7326         mono_create_jit_trampoline_in_domain() for turning off the adding
7327         of the sync wrapper.
7328
7329         * mini.c: Use the JIT trampoline without sync instead of
7330         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7331         be patched.
7332
7333 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7334
7335         * driver.c: Turn on GSHARED optimization by default.
7336
7337 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7340         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7341
7342         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7343         create a variant of the generic trampoline code callable from AOTed trampolines.
7344
7345         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7346         trampoline code callable from AOTed trampolines.
7347
7348         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7349
7350 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7351
7352         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7353         pass-through manner.
7354
7355         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7356         and don't fail sharing for them anymore.
7357
7358         * mini-exceptions.c: Handle exceptions in shared generic methods.
7359
7360         * generic-sharing.c: When checking the context of a generic
7361         method, also check its class's context.  Don't treat wrappers as
7362         sharable.
7363
7364         * mini-trampolines.c: Some code factored out to
7365         metadata/generic-sharing.c.  Handle the MRGCTX case.
7366
7367         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7368         we must deal with the method being of another instantiation of the
7369         class.  Add static rgctx invoke wrappers to generic methods.
7370
7371 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7372
7373         * mini.c: Provide all jit infos of generic shared methods with a
7374         generic jit info.
7375
7376         * mini-exceptions.c: Handle the new situation that a generic info
7377         might be available, but not info about the this/vtable/mrgctx
7378         variable.
7379
7380 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7381
7382         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7383         generic methods.
7384
7385 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7386
7387         * dominators.c (check_dominance_frontier): Fix a warning.
7388
7389         * mini.h: Add some missing prototypes.
7390
7391         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7392
7393         * driver.c (mono_jit_init_version): Correct the comments since the first
7394         argument should be the name of the root domain, not a filename.
7395
7396         * aot-runtime.c (make_writable): Error out if this is called while running
7397         with --aot-only.
7398         (load_aot_module): Ditto.
7399
7400         * aot-compiler.c: Really fix the computation of method indexes.
7401
7402         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7403         optimizations as this is no longer called frequently.
7404
7405         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7406         method and the invoke impl code and pass it to the delegate trampoline instead of
7407         just the delegate class.
7408
7409 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7410
7411         * aot-compiler.c: Fixup the computation of method indexes.
7412         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7413         the method builder infrastructure.
7414
7415         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7416         has no header.
7417
7418         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7419         mode, load the method right away instead of creating a trampoline.
7420
7421         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7422
7423         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7424         some checks a bit.
7425
7426 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7427
7428         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7429         (mono_aot_load_method): Use method_index instead of method->token.
7430
7431         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7432         can handle icalls etc. properly.
7433
7434         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7435
7436         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7437
7438         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7439         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7440         JIT_ICALL_ADDR patch type.
7441
7442         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7443
7444         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7445         request flag.
7446         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7447
7448         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7449
7450 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7453         domain->jit_code_hash.
7454
7455 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7458
7459 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7462         get_this_arg_from_call, let it compute it when needed.
7463
7464         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7465         gsctx from code only when needed.
7466
7467         * mini-trampolines.c (get_generic_context): Rename this to 
7468         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7469         it can be called by the arch backends.
7470
7471         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7472
7473 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7474
7475         * driver.c (mono_main): Add experimental --aot-only command line option.
7476
7477         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7478         set.
7479
7480 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7481
7482         * driver.c (DllMain): Remove mono_module_handle.
7483
7484         Contributed under MIT/X11 license.
7485
7486 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7487
7488         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7489         for emitting methods which are not in the source assembly. Detect and report
7490         failure of assembling+linking.
7491         
7492         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7493
7494         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7495
7496 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7497
7498         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7499
7500 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7501
7502         * mini.h: Remove some obsolete prototypes.
7503
7504         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7505
7506 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7507
7508         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7509         supported by Visual Studio, so use alloca().
7510
7511 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7514         Fixes #402585.
7515
7516 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7517
7518         * mini.c: Fail sharing of a generic method if it contains an open
7519         catch clause (because we don't pass MRGCTXs yet).
7520
7521 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7522
7523         * mini.c: When compiling a method with generic sharing, insert the
7524         method instantiated with an all-Object generic context into the
7525         jit info table, instead of the context of the first instantiation
7526         of the method we happen to compile.
7527
7528 2008-06-18  Martin Baulig  <martin@ximian.com>
7529
7530         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7531         `major_version' and `minor_version'.
7532
7533 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7534
7535         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7536         mono_method_is_generic_sharable_impl() takes an additional
7537         argument specifying whether to treat type variables as reference
7538         types.
7539
7540 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7541
7542         * mini.h: Removed obsolete prototypes.
7543
7544 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7545
7546         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7547         already handle them.
7548
7549 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7550
7551         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7552         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7553         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7554         tramp-x86.c: Added a MonoGenericContext* argument to
7555         mono_arch_get_unbox_trampoline() so that it can call other
7556         functions which require it.
7557
7558 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7559
7560         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7561         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7562         mono_arch_get_this_arg_from_call() takes a
7563         MonoGenericSharingContext* as well.
7564
7565 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7566
7567         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7568         implement generic sharing of unbox.
7569
7570 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7571
7572         * mini.c: Don't compute the vtable to determine whether a field is
7573         special static, because it might not work for open types.
7574
7575 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7576
7577         * mini.c: Removed the unused token_type and token_source arguments
7578         from get_runtime_generic_context_ptr().
7579
7580 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7581
7582         * mini.c (ADD_BINOP): fix the build
7583
7584 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7585
7586         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7587         a widening op.
7588
7589 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7590
7591         * mini.h: Removed class relations enum that's not used anymore.
7592
7593 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7594
7595         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7596
7597         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7598         the lazy fetch trampoline access code.
7599
7600 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7601
7602         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7603
7604 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7607
7608         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7609
7610         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7611
7612 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7615         intrinsics.
7616
7617         * mini-ops.h: Add MIN/MAX_UN opcodes.
7618
7619         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7620         intrinsics.
7621
7622         * basic-math.cs: Add more min/max tests.
7623
7624         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7625
7626 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7627
7628         * mini.c: Small fix in the prologue of emit_castclass.
7629
7630 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7633
7634         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7635         do not work even for unsigned types. Fixes #400014.
7636
7637         * basic-math.cs: Add regression tests for unsigned Min/Max.
7638
7639 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7640
7641         * mini.c: Added additional context_used argument to several
7642         functions, which will be needed for sharing generic methods.  Use
7643         GET_RGCTX macro wherever appropriate.  Declare only one
7644         context_used in mono_method_to_ir().
7645
7646 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7647
7648         * mini.c, generic-sharing.c: Removed generic class relations.
7649
7650         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7651         functions due to MRGCTX changes.
7652
7653 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7654
7655         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7656         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7657         with calculated IMT.
7658
7659         * mini.c: Generic sharing of calls via generic interfaces.
7660
7661         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7662         generic method with non-constant MonoGenericContext*.  Instead,
7663         the context is taken out of the method itself.
7664
7665 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7666
7667         * mini.c: Generic sharing of ldvirtftn.
7668
7669 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7670
7671         * mini.c: Generic sharing of ldftn.
7672
7673 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7674
7675         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7676
7677 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7678
7679         * mini.c: Generic sharing of the special case of ldtoken followed
7680         by a call to GetTypeFromHandle.
7681
7682 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7683
7684         * mini.c: Generic sharing of box for nullable types.
7685
7686 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7689         are passed on the stack. Fixes #324807.
7690
7691 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7692
7693         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7694         for the ArgValuetypeAddrInIReg case.
7695
7696         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7697         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7698
7699         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7700         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7701         local variable and pass the local variable by reference to the called method.
7702           
7703         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7704         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7705
7706         Contributed under MIT/X11 license.
7707
7708 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7709
7710         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7711
7712         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7713         everything.
7714
7715 2008-06-10  Martin Baulig  <martin@ximian.com>
7716
7717         * debug-mini.c
7718         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7719
7720 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7721
7722         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7723         possible error when no arguments are passed.
7724
7725         Contributed under MIT/X11 license.
7726
7727 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7728
7729         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7730         where the file name is NULL.
7731
7732 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7733
7734         * mini.c: Fix s390 build.
7735
7736 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7737
7738         * trace.c (mono_trace_parse_options): Fix warnings.
7739
7740         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7741
7742 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * mini.c (remove_block_if_useless): Avoid printing the method name.
7745         
7746         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7747         MONO_INST_NEW.
7748
7749         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7750         LMF. Not yet used.
7751
7752         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7753         translated code after it has been patched.
7754
7755 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7758         avoid problems during code patching on SMP systems.
7759         (emit_call): Avoid adding a patch info which is already added by 
7760         emit_call_body.
7761         (mono_arch_emit_exceptions): Ditto.
7762
7763 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7766         MONO_TYPE_ISSTRUCT already checks for it.
7767
7768 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7769
7770         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7771           structs with floats on Winx64 the float registers are not used.  
7772           The integer registers are always used..
7773         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7774           only one register will be used and only if the size of the struct 
7775           is 1,2,4, or 8 bytes.
7776
7777         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7778           to work for Winx64.
7779
7780         Contributed under MIT/X11 license.
7781
7782 2008-06-05  Martin Baulig  <martin@ximian.com>
7783
7784         * debug-debugger.c (debugger_lookup_class): Also call
7785         mono_class_setup_methods() here; we're only called from RTI.
7786
7787 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7788
7789         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7790         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7791         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7792         Post-process object files and add dtrace-generated object, if necessary.
7793
7794         Contributed under MIT/X11 license.
7795
7796 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7797
7798         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7799         element class.
7800
7801         * mini.c: Generic sharing for unbox.any and castclass.
7802
7803 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7804
7805         * mini.c: Ignore tailcall prefix in shared generic code and when
7806         doing calls which require a vtable/rgctx argument.
7807
7808 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7809
7810         * mini.c: Don't free the JIT info.
7811
7812         * driver.c: Changes in the JIT info table testing code.
7813
7814 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7817         interruption. Fix some warnings.
7818
7819         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7820         interruption_checkpoint.
7821
7822 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7823
7824         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7825         from embedding applications.
7826
7827 2008-06-02  William Holmes  <billholmes54@gmail.com>
7828
7829         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7830           reserving 32 bytes on the stack when making calls. 
7831
7832         Contributed under MIT/X11 license.
7833
7834 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7835
7836         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7837         the linear IL branch.
7838
7839         * driver.c: Print out more information for --version on arm.
7840
7841 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7842
7843         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7844         bb_exit instead, since out of line bblocks might not actually be emitted
7845         out-of-line.
7846         
7847         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7848         maximum epilog size for out of line bblocks if tracing is enabled.
7849
7850         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7851
7852 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7853
7854         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7855
7856 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7859         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7860         opcodes.
7861
7862 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7863
7864         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7865         the 'value' to store is a constant.
7866
7867         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7868
7869         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7870         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7871
7872 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7875         for accessing method->generic_container.
7876
7877 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7878
7879         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7880         
7881         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7882
7883         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7884
7885         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7886         fails.
7887
7888 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7891
7892         * mini.c: Handle the case when mono_class_vtable () fails.
7893
7894 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7895         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7896         the stat profiler.
7897
7898 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7899
7900         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7901         together with domain sharing.
7902
7903 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7904
7905         * mini.c: Treat callvirts to final methods like non-virtual calls
7906         when doing generic sharing, i.e. look them up in the runtime
7907         generic context.
7908
7909 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7910
7911         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7912         with computed types (for generic sharing).
7913
7914         * mini.c: Generic sharing for mkrefany and refanyval.
7915
7916 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7919         possible.
7920
7921         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7922         the generic sharing code.
7923         
7924         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7925         when needed.
7926
7927 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7928
7929         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7930
7931 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7932
7933         * driver.c: updated copyright date
7934
7935 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7938         needed.
7939
7940 2008-05-19  Martin Baulig  <martin@ximian.com>
7941
7942         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7943         pointing to the new `_mono_debug_using_mono_debugger' variable.
7944
7945         * driver.c
7946         (mono_main): Check mono_debug_using_mono_debugger() rather than
7947         the `MONO_INSIDE_MDB' environment variable to check whether we're
7948         inside the debugger.
7949
7950 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7951
7952         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7953         argument.
7954
7955 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7956
7957         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7958
7959         * mini.c: Added mini_assembly_can_skip_verification. This
7960         function checks if the assembly requested to skip verification. 
7961         Fixes part of #387274.
7962
7963 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7964
7965         * mini.c (mini_get_method): Disable the check for open generic classes when
7966         using generic sharing.
7967
7968         * generics.cs: Add a test for #387034.
7969
7970         * mini.c (mini_get_method): Check whenever the method class is an open generic
7971         type, and return NULL in that case, causing a verification error. Fixes
7972         #384123.
7973
7974 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7975
7976         * driver.c (mono_main): Revert r102623. The right
7977         thing to do is to enable the verifier under verifiable
7978         unless a --security flag was passed.
7979
7980         We need this non-trivial behavior for --verify-all otherwise
7981         mcs-compileall won't be able to use it. As it needs everything to
7982         be verified under validil.
7983
7984 2008-05-06  Martin Baulig  <martin@ximian.com>
7985
7986         Fix #383749.
7987
7988         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7989         (mono_debugger_thread_cleanup): Likewise.
7990         (mono_debugger_extended_notification): Likewise.
7991
7992 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7993
7994         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7995         against both inflated and non-inflated methods. We need to check against the
7996         generic definition for cases where the instantiated method is not visible.
7997         We need to check against the inflated types for cases where the instantiation
7998         changes any super type. This fixes #382986.
7999
8000         Note that this doesn't need to be applied to other parts of mono_method_to_ir
8001         that check for visibiliy as generic params only appears as the type subject
8002         of tokens on call opcodes. Field manipulation and ldftn must always
8003         target an exact type.
8004
8005 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8006
8007         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
8008         if no related --security flag is passed.
8009
8010 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8011
8012         * mini-arch.h: Prepare support for ppc64.
8013
8014         Contributed under MIT/X11 license.
8015
8016 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8017
8018         * aot-runtime.c: Prepare support for ppc64.
8019
8020         Contributed under MIT/X11 license.
8021
8022 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8023
8024         * mini-ops.h: Prepare support for ppc64.
8025
8026         Contributed under MIT/X11 license.
8027
8028 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
8029
8030         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
8031
8032         Contributed under MIT/X11 license.
8033
8034 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
8035
8036         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
8037         assemblies, since aot_name is not a full path, causing us to load MS.NET 
8038         assemblies on windows.
8039
8040 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
8041
8042         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
8043         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
8044         * main.c: Use UTF-8 encoded command line instead of Windows default code
8045         page on Windows to support Unicode.
8046         * driver.c (DllMain): New function for mixed-mode assembly support.
8047         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8048         export __stdcall functions without decoration.
8049
8050         Contributed under MIT/X11 license.
8051
8052 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8053
8054         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8055         saving it very early.
8056
8057 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8058
8059         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8060         deleted.  The only way to access the new RGCTX is via the
8061         trampline.
8062
8063         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8064         vtable instead of the RGCTX to static methods.
8065
8066         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8067         accessing the new RGCTX.
8068
8069         * generic-sharing.c: There is no separation between self, type
8070         arguments and other types in the RGCTX anymore.
8071
8072 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8073
8074         * mini-amd64.c (add_general): Remove previous stack adjustment.
8075         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8076         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8077         for 32 bytes of stack space reserved for all calls.
8078         
8079         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8080         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8081         adjustment.
8082         
8083         Code contributed under MIT/X11 license.
8084
8085 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8086
8087         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8088         against the root definition, peeling out method and type instantiations.
8089         Cache verify success results, code that fails verification is still
8090         checked multiple times.
8091
8092 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8093
8094         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8095
8096 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8097
8098         * mini-amd64.c (add_general): Always increment stack on Win64.
8099         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8100         on Win64.
8101         
8102         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8103         stack based argument handling on Win64.
8104         
8105         Code contributed under MIT/X11 license.
8106
8107 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8108
8109         * Makefile.am (version.h): Add support for git-svn.
8110
8111 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8114         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8115         avoiding allocations and libc functions which might deadlock.
8116         
8117         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8118         'no-gdb-backtrace' option is set.
8119
8120         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8121
8122         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8123
8124 2008-04-21  Martin Baulig  <martin@ximian.com>
8125
8126         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8127         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8128
8129 2008-04-21  Martin Baulig  <martin@ximian.com>
8130
8131         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8132         `thread_vtable', `event_handler_ptr' and `event_handler'.
8133
8134 2008-04-21  Martin Baulig  <martin@ximian.com>
8135
8136         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8137         allows delayed initialization of the `executable_code_buffer' when
8138         attaching.
8139
8140 2008-04-21  Martin Baulig  <martin@ximian.com>
8141
8142         * mini.h (mono_debugger_create_notification_function): Removed.
8143         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8144
8145         * mdb-debug-info64.s
8146         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8147
8148         * mdb-debug-info32.s
8149         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8150
8151         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8152         currently only works on x86 and x86_64, so don't create it on ppc.
8153
8154 2008-04-21  Martin Baulig  <martin@ximian.com>
8155
8156         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8157
8158         * mini.c
8159         (mini_method_compile): In the fp elimination check, check
8160         `debug_options.mdb_optimizations' in addition to
8161         mono_debug_using_mono_debugger().       
8162
8163         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8164         disable some JIT optimizations which are only disabled when
8165         running inside the debugger.
8166         Added `--help-debug' option to describe the debugging options.
8167         (parse_debug_options): New static function to parse the `--debug'
8168         options, so we can easily add more stuff in future.
8169
8170 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8173         the method has no body.
8174
8175 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8176
8177         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8178         assembly is not allowed in MSVC 64-bit compiler. 
8179         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8180         as we get floating point exceptions everywhere.
8181         
8182         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8183         correctly align arguments for call to throw_exception.
8184         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8185         
8186         Code contributed under MIT/X11 license.
8187
8188 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8189
8190         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8191
8192 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8193
8194         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8195
8196         * mini-amd64.c (NEW_INS): Set cil_code.
8197
8198         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8199         from mini-amd64.c so all debugger related logic is in one place.
8200
8201         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8202         later won't have a random ip assigned to them.
8203
8204 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8205
8206         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8207         the arch specific function initializes code_size.
8208         (mono_create_delegate_trampoline): Ditto.
8209
8210         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8211         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8212         platforms.
8213
8214         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8215         running under the debugger.
8216
8217         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8218         debugger.
8219
8220         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8221         debugger. Also move the disabling of optimizations here from driver.c.
8222         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8223         debugger.
8224
8225         * mini.h (MonoCompile): Add a few new flags.
8226
8227 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8228
8229         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8230         so the cil_code field of created MonoInst's is properly set.
8231         (mini_select_instructions): Ditto.
8232
8233         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8234         (MONO_INST_NEW_CALL): Ditto.
8235
8236         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8237         in many places so the ins->cil_code field is properly initialized.
8238
8239         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8240         place.
8241
8242 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8243
8244         * mini.c (mini_method_compile): Print a different message when compiling a 
8245         shared method.
8246         
8247         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8248         > 1.
8249
8250 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8251
8252         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8253         SSE2 instructions.
8254
8255         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8256         
8257 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8258
8259         * mini.c (handle_stack_args): Make this return void since its return value was
8260         never used. Also set cfg->unverifiable for invalid IL instead of calling
8261         G_BREAKPOINT ().
8262
8263 2008-04-10  Mark Probst  <mark.probst@gmail.com>
8264
8265         * mini.c: Make sure "this" is live in catch clauses with type
8266         variables in shared generic code.
8267
8268 2008-04-08  Mark Probst  <mark.probst@gmail.com>
8269
8270         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
8271         generic_class_is_reference_type() to ensure the proper behaviour
8272         when sharing generic code and the type in question is a type
8273         argument.
8274
8275 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8276
8277         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
8278         race conditions when printing thread dumps. Fixes #377738.
8279
8280 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
8281         
8282         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
8283         shows up when both MonoInst arguments can cause aliasig.
8284         There is likely no way in the current JIT to trigger this problem, but
8285         it showed up in the development of generics sharing, when in a new
8286         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8287         When the generics sharing code will be committed, its tests will be
8288         valid also for this bug.
8289
8290 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8291
8292         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8293         PATCH_INFO_METHOD.
8294
8295         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8296         NULL.
8297
8298 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8299
8300         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8301         use a more detailed exception message for InvalidCastException.
8302
8303         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8304
8305         * driver.c (mono_main): Add --debug=casts option to turn on better 
8306         InvalidCastException message details.
8307
8308         * mini.c (mini_get_debug_options): New helper function to return the address of
8309         the debug_options variable.
8310
8311         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8312         the jit_tls TLS variable.
8313
8314         * mini.c (mono_jit_tls): New TLS variable.
8315
8316         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8317         option is used.
8318
8319 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8320
8321         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8322
8323         * mini.c: Removed verifer related stuff, code moved to verify.c.
8324
8325         * driver.c: Using code from verify.c instead of mini.c.
8326
8327 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8328
8329         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8330         longer valid.
8331
8332 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * mini.c (check_for_method_verify): Enabling verification of
8335         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8336         have been fixed.
8337
8338 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8341         caller saved registers as well.
8342         
8343         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8344         saved registers as well.
8345
8346 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8347
8348         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8349
8350         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8351         code.
8352
8353 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8354
8355         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8356         to get_call_info.
8357         (get_call_info): Take a gsctx argument instead of 'cfg'.
8358
8359 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8362         mono_verify_all is set.
8363
8364         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8365
8366         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8367
8368 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8371         an exception.
8372
8373         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8374         verifier and the code generated by the compiler.
8375
8376 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8377
8378         * mini.c: Generic sharing of the non-nullable case of the box
8379         instruction.
8380
8381 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8382
8383         * inssel.brg: Fix the build.
8384
8385         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8386
8387 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8388
8389         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8390         Array:Address. Fixes #372410.
8391
8392         * iltests.il.in: New tests for readonly prefix.
8393
8394 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8395
8396         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8397         mini-trampolines.c.
8398
8399         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8400         mini-exceptions.c.
8401
8402         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8403         
8404         * mini.c (mono_decompose_op_imm): New helper function.
8405
8406         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8407         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8408         return value.
8409
8410         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8411         mono_arch_output_basic_block. Fix warnings.
8412
8413         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8414         for now.
8415
8416 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8417
8418         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8419         since the extra frame is now detected automatically inside the loop.
8420
8421         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8422         opts which are now in mono_peephole_ins ().
8423         
8424         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8425
8426         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8427         frames and skip duplicate managed-to-native frames. Fixes #367665.
8428
8429         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8430         opts which are now in mono_peephole_ins ().
8431         (mono_arch_peephole_pass_2): Ditto.
8432
8433         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8434
8435         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8436         arch independent peephole optimizations.
8437
8438         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8439         opts which are now in mono_peephole_ins ().
8440
8441         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8442         
8443         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8444
8445         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8446         pattern.
8447
8448         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8449         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8450         opcode. 
8451
8452 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8453
8454         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8455         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8456         return value.
8457
8458         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8459         mono_arch_output_basic_block. Fix warnings.
8460
8461 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8464         conv.ovf.u.un.
8465
8466 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8469         conv.ovf.u.un.
8470
8471         * iltests.il: Add new tests.
8472
8473 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8474
8475         * mini.c: Removed Windows version macros.
8476
8477 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8478
8479         * generic-sharing.c: Put reflection types in the extensible part
8480         of the runtime generic context.
8481
8482         * mini.c: Generic sharing of the GetTypeHandle special case of the
8483         ldtoken instruction.
8484
8485 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8486
8487         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8488
8489         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8490         
8491         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8492         consistency with the other version on the linear IR branch.
8493
8494         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8495
8496         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8497
8498         * iltests.il.in: Add new tests.
8499
8500 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8503
8504         * iltests.il.in: Add new tests.
8505
8506 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8507
8508         * mini.c: Two variables with the same name were declared in
8509         nesting contexts and one wasn't initialized.  Fixed.
8510
8511 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8512
8513         * mini.c: Generic sharing of the initobj instruction.
8514
8515 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8516
8517         * mini.c: make the test to optimize ldtoken from typeof() more
8518         precise.
8519
8520 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8521
8522         * mini.c: Generic sharing of the initobj instruction for reference
8523         types.
8524
8525 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8526
8527         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8528         the mono_breakpoint_clean_code() code to perform bound checks.
8529
8530 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8531
8532         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8533         mono_arch_patch_callsite() to include the start of the managed method
8534         to be able to perform bound checks.
8535
8536 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8537
8538         * mini.c: Generic sharing for the isinst instruction.
8539
8540 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8541
8542         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8543         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8544         with the runtime generic context argument.
8545
8546         * mini.c: Share calls to several types of unsharable methods by
8547         putting the address of the method code in the runtime generic
8548         context and doing an indirect call.
8549
8550         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8551         to switches.
8552
8553 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8554
8555         * generic-sharing.c: Change due to a change in the runtime genric
8556         context API.
8557
8558 2008-03-15  Martin Baulig  <martin@ximian.com>
8559
8560         * tramp-x86.c
8561         (mono_arch_nullify_class_init_trampoline): Add call to
8562         mono_breakpoint_clean_code() to make things work when running
8563         inside the debugger.
8564
8565         * tramp-amd64.c
8566         (mono_arch_nullify_class_init_trampoline): Add call to
8567         mono_breakpoint_clean_code() to make things work when running
8568         inside the debugger.
8569
8570 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8571
8572         * inssel-long.brg (reg): Fix 64 bit build.
8573
8574 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8575
8576         * mini.c, mini.h: Share static generic code by passing it an
8577         implicit argument pointing to the runtime generic context.
8578
8579         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8580         inssel-long32-mips.brg: New opcodes for calling shared static,
8581         which need to be passed the runtime generic context.
8582
8583         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8584         argument on the stack in the prologue if needed.  New function for
8585         finding the runtime generic context argument from the registers
8586         saved by the trampoline.
8587
8588         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8589         runtime generic context argument.
8590
8591         * tramp-amd64.c: Also restore the register used for the runtime
8592         generic context argument.
8593
8594         * mini-trampoline.c: Resolve shared static calls by consulting the
8595         runtime generic context via the new argument.
8596
8597         * generic-sharing.c: Add an argument to sharability-checking
8598         functions that specifies whether type variables should be treated
8599         as sharable type arguments.
8600
8601         * inssel-x86.brg: Removed a superfluous, buggy rule.
8602
8603         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8604         to switches.
8605
8606 2008-03-14  Martin Baulig  <martin@ximian.com>
8607
8608         * debug-debugger.c (main_thread_handler): Call
8609         mono_runtime_run_main() without sending any notifications.
8610
8611         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8612
8613 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8616
8617 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8618
8619         * tramp-x86.c: Fixed register restore offsets in the trampoline
8620         code for ECX and EDX.
8621
8622 2008-03-12  Geoff Norton  <gnorton@novell.com>
8623
8624         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8625         different ucontext_t implementations.
8626         * exceptions-arm.c: Use the above defines to get exceptions working on 
8627         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8628         * mini-arm.c: Implement iPhone icache support (based on a patch by
8629         Luke Howard lukeh@padl.com)
8630
8631 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8632
8633         * mini.c: Enable generic sharing of calls to non-static
8634         non-interface non-generic non-value-type methods.
8635
8636         * mini-trampolines.c: Resolve calls from shared generic code.
8637
8638 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8641
8642         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8643
8644 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8645
8646         * mini.c: some fixes for the AOT compiler.
8647
8648 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8649
8650         * cpu-amd64.md: Add clob:1 to some float opcodes.
8651
8652 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8653
8654         * mini.h: Added MiniVerifierMode enumeration.
8655
8656         * mini.c: Added mini_verifier_set_mode to control
8657         the usage of the new verifier.
8658
8659         * mini.c (mono_method): Integrated the new verifier.
8660
8661         * driver.c: Extended --security option with validil and
8662         verifiable options to activate the new verifier.
8663
8664 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8665
8666         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8667         optimization to ctors taking 0 or 2 arguments too.
8668
8669         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8670         a bit.
8671
8672         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8673
8674         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8675
8676 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8677
8678         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8679         non-aot case as well.
8680
8681         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8682
8683         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8684         changes.
8685
8686         * aot-compiler.c (encode_patch): Ditto.
8687
8688         * mini.h (G_MININT32): Fix the definition of this.
8689
8690 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8691
8692         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8693
8694         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8695
8696 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8697
8698         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8699         methods returning vtypes in registers.
8700         (mono_arch_allocate_vars): Ditto.
8701
8702         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8703
8704         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8705
8706         * generics.cs: Add a test from the linear IR branch.
8707
8708         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8709
8710         * mini.c (inline_method): Cache failed inline attempts.
8711
8712 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8713
8714         * mini.c: For shared methods of generic classes put the location
8715         of "this" into the MonoGenericJitInfo.
8716
8717         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8718         register out of a MonoContext by register number.  Add the generic
8719         sharing context as an argument to mono_arch_find_this_argument().
8720
8721         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8722         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8723         for new arch function.
8724
8725         * mini-exception.c: Handle open exception clauses in shared
8726         generic code.
8727
8728         * mini-trampolines.c: Supply additional argument to
8729         mono_arch_find_this_argument().
8730
8731 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * Makefile.am (regtests): Run the bench.exe tests last.
8734
8735 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8738         a bit.
8739
8740 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8741
8742         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8743         with MS.
8744
8745         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8746         
8747         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8748
8749         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8750         whose class has no cctor.
8751
8752         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8753
8754 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8755
8756         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8757         unverified.
8758
8759 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8762         to be in sync with the code on the linear IR branch.
8763
8764         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8765
8766         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8767
8768 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8769
8770         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8771
8772         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8773
8774         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8775
8776         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8777
8778         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8779         
8780         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8781         body.
8782
8783 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8784
8785         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8786         OP_LOADR4_MEMBASE emission.
8787
8788         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8789         (mono_spillvar_offset_float): Ditto.
8790
8791         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8792
8793         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8794         emission.
8795
8796         * basic-long.cs: Add regression tests for them.
8797
8798         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8799         use.
8800         (mono_arch_allocate_vars): Fix representation of single-precision float
8801         argument.
8802         (mono_arch_output_basic_block): Ditto.
8803
8804         * inssel-mips.brg: Ditto, remove duplicate items.
8805
8806         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8807         arguments of tail calls as on other platforms.
8808         (mono_arch_output_basic_block): Handle tail calls.
8809
8810         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8811         register.
8812
8813         * objects.cs (test_5_pass_static_struct): Add test for it.
8814
8815         Contributed under MIT/X11 license.
8816
8817 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * Makefile.am: Use gmcs for compiling the regression tests.
8820
8821         * *.2.cs *.2.il: Rename to *.cs and *.il.
8822
8823 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * regalloc.h: Make the vassign array smaller.
8826
8827         * mini.c (mini_method_compile): Remove an unused field in cfg.
8828
8829         * mini-codegen.c: Add a bunch of micro optimizations.
8830
8831 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8832
8833         * regalloc.h: Remove some unused fields.
8834
8835 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8838
8839         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8840
8841 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8842
8843         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8844
8845         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8846         trampoline: Fetch an entry from the runtime generic context.  If
8847         it's NULL, jump to the actual trampoline to fill the runtime
8848         generic context.  Otherwise, return it.
8849
8850         * mini.c: Call the lazy fetch trampoline to get entries out of the
8851         runtime generic context.
8852
8853         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8854         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8855         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8856
8857 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8858
8859         * mini.c: Fetch data out of the extensible part of the runtime
8860         generic context instead of calling a helper function.
8861
8862         * generic-sharing.c: Some functions moved into
8863         metadata/generic-sharing.c.  Helper function for fetching other
8864         types now checks and asserts against extensible rgctx (just for
8865         debugging purposes - the helper function isn't called anymore
8866         unless for debugging).
8867
8868 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8871         for tail calls up to the point that the tests in iltests.exe run. Also add a
8872         dummy CKFINITE implementation.
8873         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8874         needed for trampoline LMF frames.
8875
8876         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8877         trampoline LMF frames.
8878
8879 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8880
8881         * mini.c (inline_method): clean any pending loader error when inlining fail.
8882         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8883
8884 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8887
8888         * aot-runtime.c (decode_patch_info): Ditto.
8889
8890         * mini.c (mono_resolve_patch_target): Ditto.
8891         
8892         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8893         icall wrappers.
8894
8895         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8896         
8897         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8898         if it references an icall address.
8899
8900 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * cpu-s390x.md: Remove some more unused opcodes.
8903         
8904         * cpu-s390x.md: Remove some unused opcodes.
8905
8906         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8907         mono_op_imm_to_op ().
8908
8909         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8910         instead of a switch statement.
8911         
8912         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8913         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8914
8915         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8916         
8917         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8918
8919         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8920         -1.
8921
8922 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8923
8924         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8925         opened. Fixes #362607.
8926
8927         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8928
8929         * iltests.il.in: Add a test for static methods in interfaces.
8930
8931 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * genmdesc.c (build_table): Fix a crash on older glib versions.
8934
8935         * cpu-sparc.md: Remove some unused opcodes.
8936         
8937         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8938         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8939
8940         * cpu-amd64.md: Remove some unused opcodes.
8941
8942         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8943         like the other opcodes.
8944
8945 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8948
8949         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8950
8951         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8952         variables 'cfg' instead of 'm' for consistency.
8953
8954         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8955
8956         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8957         argument holding the vtype return address, to avoid the ambigious use of
8958         cfg->ret for this purpose.
8959
8960         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8961
8962         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8963         
8964         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8965         new mono_print_ins () function which only takes one argument.
8966
8967 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8970         macro arguments.
8971
8972 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8975
8976         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8977
8978         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8979         opcodes and other small changes.
8980
8981         * mini-ops.h: Add some new opcodes from the linear IR branch.
8982
8983         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8984
8985         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8986         opcodes, use the REG_MEMBASE opcodes instead.
8987         
8988         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8989         opcodes, use the REG_MEMBASE opcodes instead.
8990         
8991         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8992         linear IR branch.
8993
8994         * mini.c (mono_op_imm_to_op): New helper function.
8995
8996         * mini-ops.h: Add some opcodes from linear IR branch.
8997
8998 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
9001         <tsv@solvo.ru>.
9002
9003 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
9006         OP_ICONV_TO_R4/R8.
9007
9008         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
9009
9010 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * aot-compiler.c (emit_method_code): Add an assert.
9013
9014         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
9015         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
9016         methods.
9017
9018 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
9019
9020         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
9021         some load/store opcodes so they are consistent. 
9022         (mono_arch_emit_prolog): Simplify some code.
9023
9024         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
9025
9026         * objects.cs: Add tests for large argument offsets on ARM.
9027
9028         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
9029         stack offsets. Fixes #359651.
9030
9031         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
9032
9033         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
9034
9035         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
9036
9037         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
9038
9039         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
9040
9041         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
9042         rid of CEE_CONV_R_UN.
9043
9044         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
9045
9046 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9047
9048         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9049
9050         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9051
9052         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9053
9054         * cpu-amd64.md: Remove some unused opcodes.
9055
9056         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9057
9058         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9059
9060         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9061         arch specific functions for its parts. Call the peephole pass after local
9062         regalloc so the prolog can compute a more accurate max_offset.
9063         
9064         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9065         the corresponding OP_I/OP_L opcodes.
9066
9067         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9068
9069         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9070
9071 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9074         as they are handled in mini.c.
9075
9076         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9077         
9078         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9079         case since it is handled in mini.c.
9080
9081         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9082
9083         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9084
9085         * *.c: Use the new opcodes in the IR and back end code.
9086
9087         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9088
9089         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9090
9091 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9092
9093         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9094         an assert because it has a race condition.
9095
9096 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9099
9100         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9101
9102         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9103
9104         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9105         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9106
9107 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9108
9109         * cpu-amd64.md (move): Correct the maximum size of move.
9110
9111 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9112
9113         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9114         the generic class init trampoline to return quickly if the class
9115         is already inited.
9116
9117 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9120         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9121
9122 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9123
9124         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9125         branch.
9126
9127 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * objects.cs: Add some soft-float tests.
9130
9131         * mini.c: Fix a couple more soft-float issues.
9132
9133         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9134
9135         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9136         avoid a REX prefix.
9137
9138 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9141         exception happens while compiling a virtual method.
9142
9143 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9146         
9147         * mini-sparc.c: Fix build.
9148
9149         * mini-sparc.c (get_call_info): Add support for generic sharing.
9150
9151         * mini-exceptions.c: Add a FIXME.
9152
9153 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9156         altstack handling code.
9157
9158         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9159         
9160         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9161
9162         * mini-s390.c: Add support for generic sharing.
9163
9164         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9165         Fix CAS on s390.
9166         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9167
9168         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9169
9170         * mini-s390x.c: Add support for generic sharing.
9171         
9172         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9173         Fix CAS on ia64.
9174         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9175
9176         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9177         can be used since it takes a 16 bit signed immediate.
9178
9179         * inssel-s390x.brg: Fix OP_SETRET.
9180
9181         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9182
9183         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9184
9185         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9186
9187         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9188
9189         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9190         in one place.
9191
9192         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9193         stuff.
9194
9195         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9196         of the unused mono_arch_patch_delegate_trampoline stuff.
9197
9198 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * basic-long.cs: Move the fp related tests to basic-float.cs.
9201
9202         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9203
9204         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9205
9206         * basic-calls.cs: Add a test for proper float argument passing.
9207
9208         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9209         if the context corresponds to an exception received through a signal.
9210
9211         * exceptions.cs: Add a test for nullref handling at the start of a try
9212         clause.
9213
9214         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9215
9216         * jit-icalls.c (mono_break): New JIT icall.
9217
9218         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9219
9220         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9221
9222 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9223
9224         * cpu-*.md: Get rid of unused opcodes.
9225
9226         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9227
9228         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9229         by all platforms.
9230
9231         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9232         define.
9233
9234         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9235         the arch independent trampoline code in mini-trampolines.c.
9236
9237         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9238
9239         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9240
9241         * mini-s390.h: Remove an unused define.
9242         
9243         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9244         the arch independent trampoline code in mini-trampolines.c.
9245
9246         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9247
9248 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9251
9252         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9253
9254         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9255
9256         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9257
9258         * cpu-amd64.md: Use smaller sizes for int opcodes.
9259
9260         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9261
9262         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9263         objects.cs.
9264
9265         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
9266         debugging.
9267
9268         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
9269         instead of though a pointer to save an indirection when accessing elements of
9270         the array.
9271
9272         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
9273         some typos.
9274         (NOT_IMPLEMENTED): New helper macro.
9275         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
9276         of a bb.
9277
9278         * *.c: Use the new helper macro.
9279
9280 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
9283
9284 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9285
9286         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9287         stack slots.
9288
9289 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9292         profiling is enabled.
9293         
9294         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9295         the end.
9296         (mono_arch_emit_prolog): Add more first bblock optimizations.
9297
9298         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9299         in order if possible.
9300         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9301         bblock, since the arguments are still in their original registers.
9302
9303         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9304
9305 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9306
9307         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9308         as well.
9309
9310         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9311         offset 0.
9312
9313         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9314
9315         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9316         process async exceptions received while in unmanaged code.
9317
9318         * mini.c (mini_init): Install a callback with the runtime which will be called
9319         when a thread receives an async exception while in unmanaged code.
9320
9321         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9322
9323         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9324
9325 2008-01-16  Wade Berrier  <wberrier@novell.com>
9326
9327         * cpu-g4.md:
9328         * cpu-arm.md:
9329         * cpu-s390x.md:
9330         fix build
9331
9332 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9335         compilation with sun cc.
9336
9337         * cpu-*.md: Fix the build.
9338
9339         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9340
9341         * mini-amd64.h: Add some comments to the MonoLMF structure.
9342
9343         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9344         
9345         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9346         in the LMF structure if possible. This saves two instructions in the
9347         managed->native wrappers.
9348
9349         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9350
9351 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9352
9353         * generic-sharing.c: New type argument lookup code which uses the
9354         runtime generic context template.
9355
9356 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9359
9360         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9361         (mono_arch_output_basic_block): Fix localloc implementation.
9362
9363         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9364
9365         * mini-ia64.c (peephole_pass): Fix ia64 build.
9366
9367         * mini-amd64.c (peephole_pass): Fix a warning.
9368         
9369         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9370         at a constant offset from sp/fp.
9371
9372         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9373         instead of obtaining it from *lmf in the managed method case.
9374
9375 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9376
9377         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9378
9379 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9380
9381         * mini.h (MonoInstList): New type.
9382         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9383         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9384         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9385         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9386         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9387         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9388         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9389         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9390         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9391         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9392         MONO_INST_LIST_FOR_EACH_ENTRY,
9393         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9394         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9395         mono_inst_list_first, mono_inst_list_last,
9396         mono_inst_list_next, mono_inst_list_prev): New instruction
9397         list handling interfaces.
9398         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9399         list head 'ins_list'.
9400         (MonoInst): Replace next pointer with list head 'node'.
9401         (MonoCallInst): Make 'out_args' a MonoInstList.
9402         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9403         (MonoCompile): Delete reverse_inst_list and
9404         reverse_inst_list_len.
9405         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9406         mono_arch_lowering_pass, mono_arch_local_regalloc,
9407         mono_arch_output_basic_block, mono_arch_emit_prolog):
9408         Convert to new instruction lists.
9409         (insert_after_ins): Delete.
9410         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9411         instruction lists.
9412         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9413         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9414         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9415         mono_emulate_opcode, mono_emit_load_got_addr,
9416         inline_method, mono_method_to_ir, mono_print_bb_code,
9417         print_dfn, decompose_pass, nullify_basic_block,
9418         replace_out_block_in_code, remove_block_if_useless,
9419         merge_basic_blocks, move_basic_block_to_end,
9420         try_unsigned_compare, optimize_branches, mono_print_code,
9421         mini_select_instructions, remove_critical_edges): Likewise.
9422         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9423         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9424         mono_arch_output_basic_block, mono_arch_emit_prolog):
9425         Likewise.
9426         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9427         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9428         mono_arch_output_basic_block): Likewise.
9429         (inst_list_prepend, insert_after_ins): Delete.
9430         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9431         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9432         instruction lists.
9433         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9434         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9435         mono_arch_emit_prolog): Likewise.
9436         * cfold.c (mono_constant_fold): Likewise.
9437         * liveness.c (visit_bb, mono_analyze_liveness,
9438         optimize_initlocals): Likewise.
9439         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9440         * graph.c (mono_draw_code_cfg): Likewise.
9441         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9442         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9443         mono_ssa_cprop): Likewise.
9444         * abcremoval (get_relations_from_previous_bb, process_block):
9445         Likewise.
9446         * local-propagation (mono_cprop_invalidate_values,
9447         mono_local_cprop_bb): Likewise.
9448         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9449         peephole_pass, mono_arch_output_basic_block,
9450         mono_arch_emit_prolog): Likewise.
9451         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9452         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9453         mono_arch_emit_prolog): Likewise.
9454         (insert_after_ins): Delete.
9455         * aliasing.c (print_code_with_aliasing_information,
9456         mono_build_aliasing_information, mono_aliasing_deadce):
9457         Convert to new instruction lists.
9458         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9459         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9460         mono_arch_local_regalloc, mono_arch_output_basic_block):
9461         Likewise.
9462         (insert_after_ins): Delete.
9463         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9464         peephole_pass, mono_arch_output_basic_block): Convert to
9465         new instruction lists.
9466         * mini-codegen (InstList, inst_list_prepend,
9467         insert_after_ins): Delete.
9468         (insert_before_ins, get_register_force_spilling,
9469         get_register_spilling, free_up_ireg, free_up_reg,
9470         create_copy_ins, create_spilled_store, alloc_int_reg,
9471         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9472         to new instruction lists.
9473         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9474         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9475         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9476         (insert_after_ins): Delete.
9477         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9478         mono_arch_local_regalloc, mono_arch_output_basic_block,
9479         mono_arch_call_opcode): Convert to new instruction lists.
9480         (insert_after_ins): Delete.
9481         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9482         peephole_pass, mono_arch_output_basic_block,
9483         mono_arch_emit_prolog): Convert to new instruction lists.
9484
9485 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9486
9487         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9488
9489         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9490         Fixes #353182.
9491
9492         * Makefile.am (version.h): Make this work with non-bash shells.
9493
9494 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9495
9496         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9497
9498 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9499
9500         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9501         the InitializeArray optimization.
9502
9503 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * mini.c driver.c: Don't include os/gc_wrapper.h.
9506
9507 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * mini.c (print_jit_stats): Print GC statistics if available.
9510
9511 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9512
9513         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9514
9515 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9516
9517         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9518
9519 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9520
9521         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9522         
9523         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9524
9525         * driver.c (mono_main): Ditto.
9526
9527 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9528
9529         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9530
9531         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9532         in the vtable can't be encoded.
9533         (compile_method): Ditto.
9534
9535 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9536
9537         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9538         defined.
9539
9540         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9541         lmf->rbp.
9542
9543         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9544         the top LMF entry belongs to the current method.
9545
9546         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9547
9548 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9549
9550         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9551         
9552         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9553
9554         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9555
9556         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9557
9558         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9559
9560         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9561         implementation.
9562
9563         * basic-float.cs: Add an ulong->double cast test.
9564
9565 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * mini.c (mono_method_to_ir): Fix a warning.
9568
9569 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * mini-ops.h: Add OP_SWITCH.
9572
9573         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9574         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9575
9576 2007-12-11  Geoff Norton  <gnorton@novell.com>
9577
9578         * mini-s390x.c: Minor change to the MAX() define to allow
9579         it to compile with other gcc versions.
9580
9581 2007-12-11  Geoff Norton  <gnorton@novell.com>
9582
9583         * cpu-s390x.md:
9584         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9585
9586 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9587
9588         exceptions-arm.c (mono_arch_get_restore_context): Restore
9589         the frame pointer.
9590
9591         exceptions-arm.c (throw_exception): Save the frame pointer.
9592         This is a partial fix for #323747. Only the client side is
9593         fixed.
9594
9595 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9596
9597         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9598         was using an unrelated variable to log the class which
9599         needed the cctor to be called. This was crashing on arm.
9600
9601 2007-12-09  Robert Jordan  <robertj@gmx.net>
9602
9603         * mini-x86.c (mono_arch_emit_epilog):
9604         Consider all kinds of 64-bit types. Fixes #323114.
9605
9606 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9609
9610 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9613
9614 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9615
9616         * mini.c: run type ctor before allocating an object, not only
9617         when running it's constructor method (fixes at least part of bug #342507).
9618
9619 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9620         
9621         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9622         
9623         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9624         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9625         function.
9626
9627         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9628         mono_generic_class_init_trampoline () the same as it is done with the other
9629         trampolines.
9630
9631         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9632         aot-runtime.c aot-compiler.c: Implement AOT support.    
9633
9634 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9635
9636         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9637         build for archs which don't have the vtable trampoline defined
9638         yet.
9639
9640 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9641
9642         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9643
9644         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9645
9646         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9647
9648         * tramp-<ARCH>.c: Use the new helper function.
9649
9650 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9651
9652         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9653         trampoline call, which takes a vtable argument.
9654
9655         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9656         OP_TRAMPCALL_VTABLEs like other calls.
9657
9658         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9659         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9660         call.  Implemented a support function which fetches the vtable
9661         from a register set.
9662
9663         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9664         Implemented a generic class init trampoline, using the
9665         OP_TRAMPCALL_VTABLE opcode.
9666
9667         * mini.c: Implemented static field access when sharing generic
9668         code.  This implies initing the class using the new
9669         OP_TRAMPCALL_VTABLE call.
9670
9671 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9672
9673         * mini.c: Don't compile methods with sharing enabled if their
9674         classes are disabled for sharing.
9675
9676 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9679         opcodes. Fixes #346563.
9680
9681         * objects.cs: Add a new test.
9682
9683         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9684
9685         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9686         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9687
9688 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9691
9692 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9693
9694         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9695         code stream.
9696
9697 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9698
9699         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9700
9701         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9702         optimization in the AOT case.
9703         
9704 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9707         
9708         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9709
9710         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9711
9712         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9713
9714         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9715         is created by the inlined delegate ctor.
9716
9717         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9718
9719         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9720
9721 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * cpu-x86.md: Fix the length of ckfinite.
9724
9725 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9726
9727         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9728         
9729         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9730         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9731
9732         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9733
9734         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9735         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9736
9737 2007-11-28  Martin Baulig  <martin@ximian.com>
9738
9739         * mini-x86.c
9740         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9741         after creating the trampoline.
9742
9743 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9744
9745         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9746
9747         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9748         the same version.
9749
9750         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9751         instead of the calling method to help AOT.
9752
9753         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9754
9755 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9756
9757         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9758         is defined.
9759
9760 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9761
9762         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9763         
9764         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9765         (encode_method_ref): No need to handle generic method definitions specially.
9766
9767         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9768
9769         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9770         decode_klass_info.
9771
9772         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9773         encode_klass_info.
9774         (compile_method): Enable generic sharing.
9775
9776 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9777
9778         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9779         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9780
9781         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9782         generic code.
9783
9784         * mini-trampolines.c: Fix a warning.
9785
9786         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9787         NEW_PCONST.
9788         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9789         (generic_class_is_reference_type): Remove unused function.
9790
9791         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9792         in the generic vtable trampoline case.
9793
9794         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9795         
9796         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9797         return an AOT method based on a vtable slot.
9798
9799         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9800
9801         * mini.c (mini_get_vtable_trampoline): Export this.
9802
9803 2007-11-22  Martin Baulig  <martin@ximian.com>
9804
9805         * debug-debugger.h
9806         (MonoDebuggerInfo): Move `debugger_version' up.
9807
9808 2007-11-22  Martin Baulig  <martin@ximian.com>
9809
9810         * mini-amd64.c
9811         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9812
9813         * mini-trampolines.c
9814         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9815         after compiling the method.
9816
9817 2007-11-20  Martin Baulig  <martin@ximian.com>
9818
9819         * debug-mini.c
9820         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9821         (mono_debugger_remove_breakpoint): Likewise.
9822         (mono_debugger_check_breakpoints): Likewise.
9823
9824         * debug-debugger.c: Implement the new breakpoint interface here.
9825
9826 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9829         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9830
9831         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9832
9833 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9836
9837         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9838         mini.c.
9839
9840         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9841         mini.c.
9842
9843         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9844         returning a vtype in a register.
9845
9846         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9847         here from the arch specific code.
9848
9849         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9850         mini.c.
9851
9852         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9853         (mono_arch_emit_prolog): Increment maximum prolog size.
9854
9855         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9856         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9857
9858         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9859         MonoGenericSharingContext.
9860
9861         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9862         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9863
9864 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9865
9866         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9867         which extract fields out of the runtime generic context.  Full
9868         sharing of the NEWARR opcode.
9869
9870 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9871
9872         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9873         --enable-minimal=ssa.
9874
9875 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9876
9877         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9878         mono_marshal_get_delegate_invoke () signature change.
9879
9880 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9881
9882         * mini.c: Removed the shared context in favor of the generic
9883         sharing context.  Allocate the MonoJitInfo structure with room for
9884         the generic sharing context if it's needed.
9885
9886         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9887         domain-internals.h now.
9888
9889         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9890
9891         * generic-sharing.c: Several changes for working without a shared
9892         context and instead operating on open types instead.
9893
9894 2007-11-12  David S. Miller  <davem@davemloft.net>
9895
9896        * inssel-sparc.brg: Fix double instruction emit.
9897
9898 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9899
9900         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9901         Get/Set/Address methods.
9902         
9903         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9904         mono_marshal_get_delegate_invoke signature change.
9905
9906 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9909         This can happens with dynamic methods. Fixes the other bug in #322722.
9910
9911 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9912
9913         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9914         BX call sequence.
9915
9916         * mini-arm.c (arm_patch): Implement patching of BX call
9917         sequence. Fixes one of the bugs in #322722.
9918
9919 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9920
9921        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9922        under Linux.  We only need to flush every 32-byte cache line.    
9923
9924 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9925
9926         * mini.c:
9927         move_basic_block_to_end: Add branches when needed, eventually creating
9928         a new BB.
9929         optimize_branches: added a parameter that tells if it's ok to create
9930         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9931         and avoid calling move_basic_block_to_end when it's not ok.
9932         Fixes bug 318677.
9933
9934 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9935
9936         * mini.c: Abort inlining call to InitializeArray if something
9937         looks wrong.  Let the icall handle it, which now has proper safety
9938         checks.
9939
9940 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9941
9942         * mini.c (mono_spill_call): add support for soft-float.
9943
9944         * mini.c (mono_method_to_ir): add support for soft-float
9945         to inlined functions that return float.
9946
9947         * mini.c (mono_method_to_ir): add support for soft-float
9948         to cee_stsfld opcode on float fields.
9949
9950 2007-11-05  Geoff Norton  <gnorton@novell.com>
9951
9952         * mini-x86.h: Fix the structure access for X86 Leopard.
9953
9954
9955 2007-11-05  Martin Baulig  <martin@ximian.com>
9956
9957         * mini-trampolines.c
9958         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9959         after compiling the method to notify the debugger.
9960
9961 2007-11-05  Martin Baulig  <martin@ximian.com>
9962
9963         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9964
9965 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9966
9967         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9968         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9969
9970 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9973         native-to-managed wrappers.
9974         
9975 2007-11-01  Geoff Norton  <gnorton@novell.com>
9976
9977         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9978         members.
9979
9980 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9981
9982         * mini.c, mini-x86.c: when getting back from unmanaged code
9983         to managed via a marshaled delegate we also need to set the
9984         right domain.
9985
9986 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9987
9988         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9989         for amd64.
9990
9991 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9992
9993         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9994         let the debugger or other external agents to tell the JIT when
9995         a sw breakpoint has been inserted in the code that the JIT needs
9996         to be able to inspect.
9997
9998 2007-10-31  Martin Baulig  <martin@ximian.com>
9999
10000         * debug-debugger.h
10001         (MonoDebuggerInfo): Remove `runtime_class_init'.
10002
10003 2007-10-30  Martin Baulig  <martin@ximian.com>
10004
10005         * debug-mini.h
10006         (mono_debugger_thread_created): Added `MonoThread *' argument.
10007         (mono_debugger_extended_notification): New public method.
10008         (mono_debugger_trampoline_compiled): New public method.
10009
10010         * debug-mini.c
10011         (MonoDebuggerThreadInfo): Added `thread' and
10012         `extended_notifications' fields.
10013
10014         * debug-debugger.c
10015         (debugger_executable_code_buffer): New static variable.
10016
10017         * debug-debugger.h
10018         (MonoDebuggerInfo): Added `executable_code_buffer',
10019         `executable_code_buffer_size', `breakpoint_info_area',
10020         `breakpoint_table' and `breakpoint_table_size'.
10021
10022 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
10023
10024         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
10025         that IP  either is an unused value or the vtable pointer. IMT 
10026         calls use vtable + offset now. Reduced by almost half the size
10027         of IMT entries.
10028
10029 2007-10-26  Jonathan Chambers <joncham@gmail.com>
10030
10031         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
10032         defines to access param registers. Replace long usage with
10033         gsize as sizeof(long) != sizeof(void*) on Win64.
10034
10035         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
10036         on Win64. Fix intrinsic, use _AddressOfReturnAddress
10037         instead of non-existant _GetAddressOfReturnAddress.
10038
10039         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
10040         param registers. Save/restore %rdi and %rsi in MonoLMF.
10041
10042         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
10043         param registers. Modify (throw_exception) signature to take 
10044         %rdi and %rsi on Win64. 
10045
10046         Code is contributed under MIT/X11 license.
10047
10048 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10049
10050         * helpers.c: unlink debugging output files.
10051
10052 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * mini.c: Move mono_create_ftnptr () to object.c.
10055
10056 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10057
10058         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10059         optional. This function can now be used to disassemble code generated
10060         outside the JIT such as trampolines and IMT thunks.
10061
10062         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10063
10064         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10065         vtable pointer from a ldr instruction.
10066
10067         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10068         new IMT call sequence.
10069
10070         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10071         call sequence for interface invocations.
10072
10073         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10074         for imt support. This function is empty since IMT on ARM requires no
10075         special handling on the IR side.
10076
10077         * mini-arm.c (mono_arch_find_imt_method): added, required for
10078         imt support.
10079
10080         * mini-arm.c (mono_arch_find_this_argument): added, required
10081         for imt support.
10082
10083         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10084         a ldr instruction to load a value stored in the code stream.
10085
10086         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10087         for imt support.
10088
10089
10090 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10091
10092         * mini.c (mini_init): Install the jump trampoline callback.
10093
10094 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10095
10096         * mini-trampolines.c: handle synchronized methods with the common
10097         vtable trampoline (bug #335601).
10098
10099 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10102
10103         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10104         64 bit platforms.
10105
10106         * mini-ia64.h mini-ia64.c: Add support for IMT.
10107
10108         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10109         prolog. Fixes #331958.
10110
10111 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10114
10115 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10116
10117         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10118         trampoline.
10119
10120 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10121
10122         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10123         trampoline.
10124
10125 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10126
10127         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10128         trampoline.
10129
10130 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10131
10132         * mini-trampolines.c: changed the magic rampoline to understand
10133         the common vtable trampoline method: the method to invoke is
10134         determined by the vtable displacement of the call.
10135
10136 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10137
10138         * mini.c, mini.h: register the common vtable trampoline if the
10139         architecture supports it.
10140
10141 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10142
10143         * cpu-amd64.md: use the correct max length for tls_get.
10144
10145 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10148         CEE_STELEM_ANY. Fixes #333696.
10149
10150 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10151
10152         * exceptions-x86.c: provide more graceful handling of the case where
10153         we followed a bogus function pointer from managed code (bug #332866).
10154
10155 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10156
10157         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10158         replaces the generic_shared flag and will carry more information
10159         in the future.
10160
10161         * generic-sharing.c: Added mini_type_stack_size() which allows
10162         allows open types if given a generic sharing context.
10163         mini_get_basic_type_from_generic() takes a
10164         MonoGenericSharingContext* instead of a MonoCompile* now.
10165
10166         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10167         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10168         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10169         changes above.  Just passing arguments through to the right
10170         places.
10171
10172 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini-arm.c: unify the call emission to emit_code_seq().
10175
10176 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10177
10178         * tramp-arm.c: reduced the trampoline size.
10179
10180 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10181
10182         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10183         variable handling out of arch-specific code.
10184
10185 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10186
10187         * mini-arm.c: implemented fast delegate dispatch.
10188
10189 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10190
10191         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10192         that fp elimination is turned off if the space required by locals is too
10193         big. Fixes #331958.
10194
10195 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10196
10197         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10198         ARM to the new style trampoline.
10199
10200 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10201
10202         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10203
10204         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10205
10206 2007-10-09  Martin Baulig  <martin@ximian.com>
10207
10208         * debug-debugger.h
10209         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10210         `field_info_offset_offset'.     
10211
10212 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10213
10214         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10215         removed more internal usage of the r11 register and made it available
10216         to the register allocator.
10217
10218 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10219
10220         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10221         when sharing generics and treat type variables as references.
10222
10223 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10224
10225         * mini-ppc.c: started removing the internal uses of register r11
10226         to eventually allow the register allocator to manage it as an
10227         additional available register.
10228
10229 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10230
10231         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10232
10233 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10234
10235         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10236         specific trampolines as they are not performance critical as a jump
10237         target (maybe align as before only for AOT code?). This saves about
10238         200 KB of native code on x86 for monodevelop startup.
10239
10240 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10241
10242         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10243         monodevelop startup.
10244
10245 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10248
10249         * mini-sparc.h mini-sparc.c: Implement IMT support.
10250
10251         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10252         its smaller and doesn't clobber sparc_g1.
10253
10254         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10255
10256 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10257
10258         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10259
10260 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10261
10262         * mini-ppc.c: implemented fast delegate invocation.
10263
10264 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10265
10266         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
10267
10268 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10269
10270         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
10271         code to the new style trampoline in preparation for IMT support.
10272
10273 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10274
10275         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
10276         systems already. This also reduces the specific trampiline sizes and
10277         prepares for the use of r12 as the IMT identifier register.
10278
10279 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10280
10281         * mini-mips.h: endianess fix (simplified from a patch by
10282         Thomas Kunze <thommy@tabao.de>, bug #323737).
10283
10284 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10285
10286         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10287         to access ucontext fields and enable netbsd support
10288         (partially from Magnus Henoch <mange@freemail.hu>).
10289
10290 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10291
10292         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10293         use the preprocessor from the CPP env var if it is set.
10294
10295 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10296
10297         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10298         code, before interface_offset gets used.
10299
10300 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10301
10302         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10303         mono_class_setup_vtable () before accessing klass->vtable.
10304
10305 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10308         hackish.
10309
10310 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10311
10312         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10313         IMT slots (this saves hundreds of KB of memory in programs like
10314         IronPython and Monodevelop).
10315
10316 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10317
10318         * mini.c: print the delegate counter.
10319
10320 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10321
10322         * mini-x86.c: make it easier to enable the debugging code for IMT
10323         slots.
10324
10325 2007-09-28  Martin Baulig  <martin@ximian.com>
10326
10327         * debug-debugger.h
10328         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10329         `mono_method_klass_offset' and `mono_method_token_offset'.
10330
10331 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10332
10333         * mini.c: First generics sharing implementation.  Can only share
10334         in very simple cases.  If sharing doesn't work it falls back to
10335         dedicated compilation.
10336
10337         * mini.h: Flag in MonoCompile to specify whether generic
10338         compilation is shared.  Flags enum for marking which generic inst
10339         of a context is used.  Prototypes for helper functions.
10340
10341         * generic-sharing.c: Helper functions for generic method sharing.
10342
10343         * optflags-def.h: Optimization flag (gshared) for enabling generic
10344         method sharing added.
10345
10346         * Makefile.am: generic-sharing.c added.
10347
10348 2007-09-19 Daniel Nauck <dna@mono-project.de>
10349
10350         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10351
10352 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10353         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10354         fixes bug 325507.
10355
10356 2007-09-19  Martin Baulig  <martin@ximian.com>
10357
10358         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10359         mono_debug_cleanup() is now part of mono_cleanup().
10360
10361 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10362
10363         * driver.c (mono_main): Fix a warning.
10364
10365 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * aot-compiler.c: Optimize various parts when processing large assemblies.
10368         Fixes ##325568.
10369
10370         * mini.c (mono_patch_info_hash): Improve hash function.
10371
10372 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10373
10374         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10375         
10376         Code is contributed under MIT/X11 license.
10377
10378 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini.c (mini_init): Fix a leak.
10381
10382         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10383
10384 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10385
10386         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10387
10388 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10389
10390         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10391
10392 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10395         variance tests.
10396
10397         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10398
10399         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10400
10401         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10402
10403         * aot-runtime.c (decode_patch_info): Ditto.
10404
10405 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10406
10407         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10408         static case. Cache delegates in architecture specific code, 
10409         based on number of parameters.
10410         
10411         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10412         in architecture specific code, based on number of parameters.
10413         
10414         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10415         caching happen in architecture specific code now.
10416         
10417         Code is contributed under MIT/X11 license.
10418
10419 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10420
10421         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10422         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10423         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10424
10425         Code is contributed under MIT/X11 license.
10426
10427 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10428         * mini.c: (mono_thread_abort) Fixed bug #82416.
10429
10430 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10431
10432         * mini.: hook the new managed GC allocation feature into the JIT.
10433
10434 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10435
10436         * mini.c: implementation for the new runtime tls opcode.
10437
10438 2007-09-11  Martin Baulig  <martin@ximian.com>
10439
10440         * debug-debugger.h
10441         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10442         `mono_method_inflated_offset'.
10443
10444 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10445
10446         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10447         async exceptions into a method.
10448
10449         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10450         purpose of testing whenever the unwinder works at every instruction.
10451
10452 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10453
10454         * mini.c: check accessibility of method used in ldftn (fixes
10455         bug #82635).
10456
10457 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10458
10459         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10460
10461         * inssel.brg: Fix a warning.
10462
10463 2007-09-03  Martin Baulig  <martin@ximian.com>
10464
10465         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10466         now takes the `main_method' as argument.
10467
10468 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10469
10470         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10471
10472 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10473
10474         * driver.c: include the cil-coff.h header on Windows.
10475         
10476         Code is contributed under MIT/X11 license.
10477
10478 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10479
10480         * mini.c, driver.c: don't include the cil-coff.h header.
10481
10482 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10483
10484         * mini.c: flag places that needs fixes fo soft-float support.
10485
10486 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10487
10488         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10489         endian systems (partially from Dean Jenkins, bug #81924).
10490
10491 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10492
10493         * mini.c (check_linkdemand): Remove embedded reference object in
10494         call to LinkDemandSecurityException.
10495         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10496         with an IntPtr instead of a reference object.
10497
10498 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10499
10500         * mini.c (handle_initobj): Handle alignment properly.
10501
10502         * inssel.brg (mini_emit_memset): Ditto. 
10503
10504         * inssel.brg (mini_emit_memcpy): Ditto. 
10505
10506         * inssel-sparc.brg: Ditto.              
10507
10508         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10509
10510 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10511
10512         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10513         exceptions raised in unmanaged code. Fixes part of #82594.
10514
10515 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10516
10517         * mini.c (mono_method_to_ir), declsec.c
10518         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10519
10520 2007-08-22  Martin Baulig  <martin@ximian.com>
10521
10522         * debug-mini.h
10523         (MonoDebuggerThreadInfo): New typedef.
10524         (mono_debugger_thread_table): New global variable.
10525         (mono_debugger_thread_created): New public function.
10526         (mono_debugger_thread_cleanup): New public function.
10527
10528         * debug-debugger.h
10529         (MonoDebuggerInfo):
10530         - removed `get_current_thread' and `lookup_assembly'.
10531         - removed `data_table'.
10532         - added `thread_table'.
10533
10534         * mini.c
10535         (mono_thread_start_cb): Call mono_debugger_thread_created().
10536         (mono_thread_attach_cb): Likewise.
10537         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10538         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10539         initial domain.
10540
10541         * driver.c (mono_main): Move mono_debug_init() up, before calling
10542         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10543
10544 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10545
10546         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10547         together when passing several arguments of type double (gives a small
10548         speedup and saves a few bytes of generated code).
10549
10550 2007-08-20  Jb Evain  <jbevain@novell.com>
10551
10552         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10553
10554 2007-08-20  Jb Evain  <jbevain@novell.com>
10555
10556         * mini.c (mono_method_to_ir): throw MethodAccessException
10557         and FieldAccessException instead of InvalidProgramException.
10558
10559 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10560
10561         * mini.c: CoreCLR security checks.
10562
10563         * mini.h: Removed MonoSecurityMode (moved to
10564         metadata/security-manager.h) and mono_security_mode global var
10565         (replaced by set/get functions in security-manager.h).
10566
10567         * driver.c: Added "core-clr-test" security mode for testing.  Used
10568         set-function for setting security mode.
10569
10570 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10571
10572         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10573         the new jit_info_table.
10574
10575         * driver.c: Test code for the new jit_info_table (enabled by the
10576         define MONO_JIT_INFO_TABLE_TEST).
10577
10578 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10579
10580         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10581         detection of call <REG> instruction sequence. Fixes build on freebsd.
10582
10583 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * mini-exceptions.c: Fix a warning.
10586
10587 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10588
10589         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10590         stack overflow handling code on amd64 too.
10591
10592         * mini-exceptions.c (mono_setup_altstack): Make this use 
10593         mono_thread_get_stack_bounds ().
10594
10595         * mini-x86.h: Disable sigaltstack on solaris x86.
10596
10597 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10598
10599         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10600
10601 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10602
10603         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10604
10605 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10606
10607         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10608
10609         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10610
10611 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10612
10613         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10614         due to alignment.
10615
10616 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10617
10618         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10619         to be emitted (bug #82281).
10620
10621 2007-08-01  Martin Baulig  <martin@ximian.com>
10622
10623         Merged the `debugger-dublin' branch.
10624
10625         * debug-debugger.h (MonoDebuggerInfo):
10626         Removed the `old_*' compatibility entries.
10627         Added `debugger_version' and `data_table'.
10628         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10629         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10630
10631         * debug-mini.c
10632         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10633         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10634         instead of a `gconstpointer'.
10635         (mono_debugger_insert_method_breakpoint): Return a
10636         `MonoDebugMethodAddressList *'.
10637
10638 2007-06-28  Martin Baulig  <martin@ximian.com>
10639
10640         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10641
10642 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10645         __builtin_frame_address () since it is broken on older gcc versions.
10646
10647 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10648
10649         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10650         on the stack overflow handling and made the managed stack overflows
10651         catchable in most cases using soft guard pages.
10652         * exceptions-x86.c: added code to restore the protection in the soft
10653         guard pages at the end of exception handling.
10654
10655 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10658
10659 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10660
10661         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10662         exception handling.
10663
10664 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10665
10666         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10667         signal handling support until it has been ported to the new mechanism.
10668         * mini.c: fixed stack overflow detection and use the new
10669         architecture code  to handle signals on the altstack.
10670
10671 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10672
10673         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10674         stack overflows on the alt stack.
10675
10676 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10677
10678         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10679         stack overflows on the alt stack.
10680
10681 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10682
10683         * exceptions-ppc.c: cleanup preparing for altstack support.
10684
10685 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10686
10687         * exceptions-arm.c: cleanup preparing for altstack support.
10688
10689 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10690
10691         * mini.c (print_jit_stats): Output hazard pointer stats.
10692
10693 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10694
10695         * driver.c, mini.c: Replaced security mode flags with a single
10696         enum variable.
10697
10698 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10699
10700         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10701
10702 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10703
10704         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10705         (which doesn't do anything yet) for activating Core CLR
10706         (Silverlight) security.
10707
10708 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10709
10710         * mini-codegen.c: work around a possible gcc bug on arm.
10711
10712 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10713
10714         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10715         message for platforms that don't support AOT compilation.
10716
10717 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10718
10719         * mini.h, mini.c, driver.c: temporary smcs hack.
10720
10721 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10722
10723         * mini-arm.h, mini-arm.c: arm EABI fixes.
10724
10725 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10726
10727         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10728         case.
10729
10730         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10731         trampolines taking a method argument.
10732
10733         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10734
10735         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10736         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10737
10738         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10739         JIT compilation throws an exception. Fixes #82050.
10740
10741 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10742
10743         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10744         with the MONO_EXCEPTION_ defines.
10745
10746 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10749         #82117.
10750         
10751         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10752         the cause of an assertion.
10753
10754 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10755
10756         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10757         removed.
10758
10759 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10760
10761         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10762         assert. Should fix #82103.
10763
10764 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10767         here too. Fixes #82095.
10768
10769         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10770         addresses.
10771
10772         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10773
10774         * mini-amd64.h: Enable IMT for amd64.
10775         
10776         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10777
10778 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10779
10780         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10781
10782 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10783
10784         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10785         as soon as check_linkdemand sets an exception_type.
10786
10787 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10788
10789         * mini-x86.c: fixed offsets for IMT call sequence.
10790         * mini-x86.h: enable IMT again.
10791
10792 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10793
10794         * trace.c (mono_trace_enter_method): Decode MonoType too.
10795
10796         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10797
10798         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10799
10800         * mini-amd64.c: Add preliminary IMT implementation.
10801         
10802 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10803
10804         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10805         understand the new IMT-base interface invocation (thanks to
10806         Daniel Nauck for the report and the remote debugging session).
10807
10808 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10809
10810         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10811
10812 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10813
10814         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10815
10816 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10817
10818         * mini-trampolines.c: implement AOT IMT support.
10819         * mini-x86.h: enable IMT support for wider testing.
10820
10821 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10822
10823         * inssel.brg (emit_imt_argument): Add aot support here.
10824
10825         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10826
10827 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10828
10829         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10830         of the IMT implementation, partially from massi, with my
10831         implementation of the bsearch sequence. Disabled by default until
10832         the AOT code is implemented.
10833
10834 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10837
10838         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10839
10840 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10841
10842         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10843         arch-independent IMT JIT code from Massimiliano
10844         Mantione (massi@ximian.com) with small cleanups from me.
10845
10846 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10847
10848         * Makefile.am: fix svn invocation to get the svn revision to be
10849         independent of the local language (build fix).
10850
10851 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10852
10853         * mini.c (inline_method): Reset cfg->exception_type if the
10854         inlining is aborted.  Fixes: 82049.
10855
10856 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10857
10858         * mini.c: remove assert from exception handling code when exception_ptr
10859         is not set.
10860
10861 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10862
10863         * mini.c (mono_codegen): Add an assert.
10864
10865         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10866         enter and leave code.
10867         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10868
10869 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10870
10871         * mini-ppc.c: fixed memory corruption for localloc(0)
10872         (bug #81852).
10873
10874 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10875         
10876         * mini.c: Fix warnings.
10877
10878 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10879
10880         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10881         to emit better double->int conversions.
10882
10883 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10884
10885         * mini.c: the provided Min/Max optimizations are valid for unisgned
10886         ints.
10887
10888 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10889
10890         * 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
10891
10892 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10893
10894         * mini.c (mono_running_on_valgrind): Add support for reporting the
10895         method and  its boundaries to valgrind.
10896
10897 2007-06-28  Martin Baulig  <martin@ximian.com>
10898
10899         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10900
10901 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10904
10905         * generic.2.cs: Add new test case.
10906
10907 2007-06-25  Martin Baulig  <martin@ximian.com>
10908
10909         Merged the `debugger-dublin' branch.
10910
10911         * debug-mini.c
10912         (mono_debugger_insert_method_breakpoint): New public method.
10913         (mono_debugger_remove_method_breakpoint): Likewise.
10914         (mono_debugger_check_breakpoints): New static method.
10915         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10916
10917         * debug-debugger.h (MonoDebuggerInfo):
10918         Renamed (to keep backward compatibility in the vtable):
10919         `insert_breakpoint' -> `old_insert_breakpoint'.
10920         `remove_breakpoint' -> `old_remove_breakpoint'.
10921         `create_string' -> `old_create_string'.
10922         `lookup_class' -> `old_lookup_class'.
10923         `lookup_type' -> removed; changed into a dummy field.
10924         `lookup_assembly' -> `old_lookup_assembly'.
10925         Added (same functionality, but different signature):
10926         `create_string', `lookup_class', `lookup_assembly'
10927         Added new:
10928         `get_method_addr_or_bpt', `remove_method_breakpoint',
10929         `runtime_class_init'.
10930
10931         * debug-debugger.c: Merged the `debugger-dublin' branch.
10932
10933 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10934
10935         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10936         well.
10937         (peephole_pass): Likewise.
10938
10939 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10940
10941         * driver.c: hopefully make setaffinity work also for ancient
10942         versions of linux.
10943
10944 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10945
10946         * driver.c : win32 build fix.
10947
10948 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10949
10950         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10951         processor if it is set.
10952
10953 2007-06-21  Martin Baulig  <martin@ximian.com>
10954
10955         * debug-mini.h: New file.
10956
10957         * debug-mini.c
10958         (mono_debugger_insert_breakpoint_full): Moved here from
10959         ../metadata/mono-debug-debugger.c.
10960         (mono_debugger_remove_breakpoint): Likewise.
10961         (mono_debugger_breakpoint_callback): Likewise.
10962
10963 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10964
10965         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10966         changes in MonoGenericClass.
10967
10968 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10971
10972 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10973
10974         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10975         removal of MonoGenericMethod.
10976
10977 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10978
10979         * mini-exceptions.c: hooks for the exception events profiling API.
10980
10981 2007-06-14  Randolph Chung  <tausq@debian.org>
10982
10983         * Makefile.ma: Add hppa target.
10984         * mini-arch.h: Include mini-hppa.h
10985         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10986         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10987         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10988
10989 2007-06-14  Randolph Chung  <tausq@debian.org>
10990
10991         * inssel.brg: Add rules for "chained" compare-branch operations so that
10992         a single compare op can affect multiple branches.  Adjust cost for
10993         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10994         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10995         cost for some rules so that they can more easily be overridden by
10996         per-arch rules (with fixes from lupus).
10997         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10998
10999 2007-06-13  Randolph Chung  <tausq@debian.org>
11000
11001         * mini-ops.h: Reorder branch ops so that they match the order of the
11002         corresponding CEE_* ops.  The code expects them this way.
11003         Add new ops for HPPA target.
11004         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11005
11006 2007-06-13  Randolph Chung  <tausq@debian.org>
11007
11008         * mini-exceptions.c: Handle cases where the stack grows towards
11009         larger addresses.
11010         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11011
11012 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11013
11014         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
11015         counter.
11016         * driver.c: explain where a non-matching corlib is found.
11017
11018 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11019
11020         * mini.c (print_jit_stats): Output dynamic code allocation stats.
11021
11022 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
11023
11024         * mini-exceptions.c: Generate a method profile leave event during
11025         an exception to ensure that the profiler gets notified.
11026
11027 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
11030         branch.
11031
11032         * cpu-amd64.md: Add long_and/or/xor opcodes.
11033
11034 2007-06-06  Wade Berrier  <wberrier@novell.com>
11035
11036         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
11037         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
11038         length of instruction shr_imm (expected 8, got 10)
11039
11040 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
11043
11044 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11045
11046         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11047         MonoInternalHashTable again (fixed bug in the internal hash table
11048         code).
11049
11050 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11051
11052         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11053         Have to figure out what makes it crash the SWF regression.
11054
11055 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11056
11057         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11058
11059 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11060
11061         * mini.c: optimize out the type check when storing null in a
11062         reference array.
11063
11064 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11065
11066         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11067         MonoInternalHashTable.
11068
11069 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11070
11071         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11072         signed integer methods.
11073
11074 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11075
11076         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11077         permanently since the current approach doesn't work.
11078
11079 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11082         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11083
11084 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11087         the sreg2==rdx case.
11088         
11089         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11090         account if it contains a rex prefix.
11091         (peephole_pass): Handle OP_FMOVE as well.
11092
11093 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11096         as it causes regressions.
11097
11098 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11101         static case as well.
11102
11103         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11104
11105         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11106         (mono_arch_get_this_arg_from_call): Ditto.
11107
11108         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11109
11110         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11111         invoke_impl field.
11112
11113         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11114         (mono_arch_get_this_arg_from_call): Ditto.
11115
11116         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11117         
11118         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11119         try to create optimized invoke code and use that for further invocations. 
11120         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11121
11122         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11123
11124 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11125
11126         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11127         sealed classes or methods.
11128         *devirtualization.cs: tests for the new optimization
11129
11130 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11131
11132         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11133         by the update_volatile () function.
11134
11135 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11136
11137         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11138         require it.
11139
11140         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11141
11142 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11143
11144         * mini.c: Add configure checks for header files.
11145         * mini-x86.c: Add configure checks for header files.
11146         * trace.c: Add configure checks for header files.
11147         * aot-runtime.c: Add configure checks for header files.
11148         * aot-compiler.c: Add configure checks for header files.
11149         * driver.c: Add configure checks for header files.
11150         * mini-codegen.c: Add configure checks for header files.
11151         
11152         Code is contributed under MIT/X11 license.
11153
11154 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11157         icompare_imm -128 + op_iclt. Fixes #81703.
11158
11159 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11162
11163 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11164
11165         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11166         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11167         so that all isinst checks now use "interface_bitmap".
11168
11169 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * cpu-amd64.md (jmp): Fix a warning.
11172
11173         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11174
11175         * basic.cs: Add new regression test.
11176
11177         * basic.cs: Remove test which is now in basic-long.cs.
11178
11179         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11180
11181         * basic-long.cs: Add new test.
11182         
11183 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11186
11187 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11190
11191         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11192         places.
11193         
11194         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11195         throwing code a bit.
11196
11197         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11198         the exception throwing code a bit.
11199
11200         * mini-x86.c (get_call_info): Allocate result from a mempool.
11201
11202 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11205
11206         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11207
11208         * mini.h (MonoCompile): Add 'token_info_hash' field.
11209
11210         * mini.c: Save token->method associations during compilation so the AOT 
11211         compiler can use it.
11212         
11213         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11214         which reference generic classes and methods.
11215
11216 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11219
11220         * aot-compiler.c (compile_method): Fix a typo in a comment.
11221
11222         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11223
11224         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11225         everything generic.
11226
11227         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11228
11229 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11230
11231         * mini.h (MonoCompile): Add 'args' field.
11232
11233         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11234         into cfg->args.
11235
11236         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11237
11238 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11241
11242         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11243
11244         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11245         opcodes for some opcodes.
11246
11247         * mini.h *.brg *.c: Use the new opcodes.
11248
11249 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11250
11251         * mini.h: Bumped aot revision.
11252
11253         * inssel.brg: modified code generation of type checks for interfaces
11254         to use the new "MonoClass.interface_bitmap" instead of the old
11255         "MonoClass.interface_offsets".
11256
11257 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11260
11261 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
11264         64 bit platforms.
11265
11266 2007-04-27  Neale Ferguson <neale@sinenomine.net>
11267
11268         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
11269
11270 2007-04-27  Wade Berrier  <wberrier@novell.com>
11271
11272         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
11273         mini.h) to fix build.
11274
11275 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
11278         
11279         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
11280         causes the corlib unit tests to fail.
11281
11282 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11285
11286         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11287
11288         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11289         opcodes to the comparison relations.
11290
11291         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11292         opcodes to their types.
11293         
11294         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11295
11296         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11297         it in cfg->arch.cinfo.
11298
11299         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11300
11301         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11302         cfg->cil_offset_to_bb.
11303
11304 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11305
11306         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11307         created becase of initlocals.
11308
11309 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11310
11311         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11312         Sergey Tikhonov <tsv@solvo.ru>.
11313
11314 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11315
11316         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11317
11318 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * cpu-s390.md (break): Correct the length of break instruction.
11321
11322 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11323
11324         * mini.c: fix a couple of soft-float issues and comments.
11325
11326 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11327
11328         * trace.c (is_filenamechar): - is also a filename char.
11329
11330 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11331
11332         * mini-s390.c: Correct checking for enum type in return value processing.
11333
11334 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11335
11336         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11337         (version.h): Makefile is in the build directory.
11338
11339 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11340
11341         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11342
11343 2007-04-11  Martin Baulig  <martin@ximian.com>
11344
11345         * mini.c (can_access_member): Fix handling of generic classes;
11346         fixes #81259.
11347
11348 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11349
11350         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11351
11352 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11355
11356 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11357
11358         * mini-codegen.c: make sure the right spill amount is
11359         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11360
11361 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11362
11363         * mini-ppc.c: fixes for the fp_branch_nan test.
11364
11365 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11366
11367         * basic.cs: Comment out new test which still fails on ia64.
11368
11369 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11370
11371         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11372
11373 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11374
11375         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11376
11377 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11378
11379         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11380         on 64 bit machines. Fixes part of #80738.
11381
11382         * basic.cs: Add regression test.
11383
11384 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11385
11386         * inssel.brg basic.cs: Revert previous change to fix build.
11387
11388         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11389         platforms.
11390         
11391         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11392
11393         * basic.cs: Add new regression test.
11394
11395 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11398         many arguments.
11399
11400 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11401
11402         * cpu-s390x.md: Correct length of break instruction.
11403
11404 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11405
11406         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11407         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11408
11409 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11410
11411         * *.c: Begin WIN64 port.
11412         * mini.c:  Use correct register in profiler.
11413         * mini-amd64.c: No inline assembly on Win64.
11414         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11415         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11416         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11417         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11418         mono_arch_ip_from_context for Win64.
11419         
11420         Contributed under MIT/X11 license.
11421
11422 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11423
11424         * exceptions-amd64.c (seh_handler): Ditto.
11425
11426         * exceptions-x86.c (seh_handler): Fix a memory leak.
11427
11428 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11429
11430         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11431         mini-s390x.c: fixed peephole optimizations to deal
11432         correctly with 1 and 2 byte reload avoidance.
11433
11434 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11435
11436         * cpu-s390.md, cpu-s390x.md: update localloc length.
11437
11438 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11439
11440         * cpu-g4.md: added missing descriptions.
11441
11442 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11443
11444         *  Makefile.am: Add support so the tail tests are not executed on
11445         PowerPC as that is a known limitation of the PowerPC port.
11446
11447 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11448
11449         * runmdesc.bat:  Move to msvc directory.
11450         
11451 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11452
11453         * runmdesc.bat:  Run executable that was produced by the current
11454         target and sent via an argument.
11455         
11456 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11457
11458         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11459         #81102.
11460
11461         * generics.2.cs: Add regression test.
11462
11463 2007-03-09  Wade berrier  <wberrier@novell.com>
11464
11465         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11466
11467 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11470         AOT code depends on this.
11471
11472 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11473
11474         * mini.c: more precise tracking of types in the eval stack
11475         (part of fix for bug #81044).
11476
11477 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11480
11481         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11482
11483 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11486
11487         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11488
11489 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11490
11491         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11492         a pointer on 64 bit systems. Fixes #80190.
11493
11494         * iltests.il: Add new regression test.
11495
11496 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11497
11498         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11499
11500 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11501
11502         * trace.c: Remove an erroneous alignemnt check when tracing.
11503           Fixes --trace on OSX86.
11504
11505 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11506
11507         * mini-$(arch).h: initialize SP in context for all the archs.
11508
11509 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11510
11511         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11512         regressions in the thread tests.
11513
11514 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11517         - fixed implementation of LOCALLOC opcode
11518         - implemented non-un compare for floats
11519         - code cleanup
11520         - implementation of FDIV and CKFINITE opcodes
11521         - fixes for latest mono updates
11522         - additional arch opcodes
11523
11524 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11525
11526         * Makefile.am: simplify and merge rules for cross-compilation.
11527
11528 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11529
11530         * local-propagation.c: Actually *apply* the fix for bug 80591...
11531
11532 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * mini-exceptions.c: backuot part of the last change
11535         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11536
11537 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11538         * inssel.brg: Fix bug 59286.
11539
11540
11541 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11542
11543         * mini-exceptions.c: patch from Zoltan to correctly check for
11544         stack boundaries (using the stack register, not the frame register),
11545         fixes bugs #80724, #79717.
11546
11547 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11548
11549         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11550         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11551
11552         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11553         presence of frame pointer elimination.
11554
11555 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11556         
11557         * mini-x86.h: NetBSD UCONTEX_REG defines.
11558
11559 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11560
11561         * inssel-amd64.brg: Fix amd64 build.
11562
11563 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11564
11565         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11566         on amd64.
11567
11568 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11571         ends.
11572
11573         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11574
11575 2007-01-30 Mark Mason <mason@broadcom.com>
11576
11577            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11578            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11579            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11580            beginning support for CEE_JMP [not quite working yet]
11581            * tramp-mips.c: LMF handling now works
11582         
11583 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11584
11585         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11586
11587         * mini.h (NULLIFY_INS): New macro.
11588
11589 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11590
11591         * mini.c: statistical profiler fix for windows, patch
11592         from Tor Lillqvist (tml@novell.com).
11593
11594 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11595         * local-propagation.c: Fix bug 80591.
11596
11597 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11598
11599         * Makefile.am: put back the --export-dynamic option as with
11600         the previous gmodule flags (thanks to Robert Jordan).
11601
11602 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11605
11606         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11607         simplify and speed up the local register allocator. Also rename some fields
11608         like iassign->vassign.
11609         
11610         * regalloc.c: Remove some functions which are no longer used since their
11611         inlined version is in mini-codegen.c.
11612         
11613         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11614
11615         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11616
11617 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11620         narrowing. Fixes #80622.
11621
11622         * iltests.il: Add new regresssion test. 
11623
11624 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11625
11626         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11627         debug-debugger.c, debug-debugger.h: warning fixes.
11628         * driver.c: updated copyright year and made it fit in one line.
11629
11630 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11631
11632         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11633
11634 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11635
11636         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11637
11638         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11639
11640         * iltests.il: Add new test for bug #80507.
11641
11642 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11643
11644         * mini-arm.h: use soft-float also on vfp for now.
11645
11646 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11647
11648         * mini.c: fix some more soft-float issues.
11649
11650 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11653
11654 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11655         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11656         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11657         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11658
11659 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11660
11661         * mini-arm.c: typo fix.
11662
11663 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11664
11665         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11666
11667 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11668
11669         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11670         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11671
11672         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11673
11674         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11675
11676         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11677         
11678         * inssel.brg: Fix a warning.
11679
11680         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11681
11682         * abcremoval.c ssa.c ssapre.c: Update after this change.
11683         
11684         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11685
11686         * dominators.c (df_set): Use mono_bitset_union_fast.    
11687
11688 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11689
11690         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11691         mini-codegen.c: reduce relocations and memory usage for the cpu
11692         description.
11693
11694 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11697
11698         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11699         to reduce their size.
11700
11701 2007-01-19 Mark Mason <mason@broadcom.com>
11702
11703         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11704         * mini-mips.c: more configuration macros, support long conditional branches, additional
11705         asserts, fix epilog instrumentation.
11706         * mini-mips.h: use standard stack walk
11707         * cpu-mips.md: increase size of div, rem and conditional branches
11708         
11709 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11710
11711         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11712         to cpu spec data.
11713
11714 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11715
11716         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11717         (compile_method): Ditto.
11718
11719         * aot-runtime.c (decode_klass_info): Ditto.
11720
11721         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11722         needed by the code generated by inssel.brg. Also fix a warning.
11723
11724 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11725
11726         * mini.c: deal with enums that become genericinsts by
11727         being nested in a generic class (bug #79956).
11728
11729 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11730
11731         * mini.c: match the generic definition to check for
11732         private access with generic types (bug #78431).
11733
11734 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11735
11736         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11737         to make life easier for people cross-compiling that insist on not
11738         using scratchbox.
11739
11740 2007-01-17 Mark Mason <mason@broadcom.com>
11741
11742         * inssel-long.brg: patch to deal with mips missing flags
11743         * inssel-long32-mips.brg: implement overflow checks
11744         * insset-mips.brg: implement overflow checks
11745         * mini-mips.h: implement conditional exception handling
11746         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11747           Remove unused code, minor cleanups.
11748         * exceptions-mips.c: minor cleanups
11749         * mini-ops.h: add mips conditional exception ops
11750         * cpu-mips.md: add mips conditional exception ops
11751
11752         
11753 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11754
11755         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11756         to deal with mips missing of flags.
11757
11758 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11759
11760         * exceptions-ppc.c: execute fault handlers.
11761
11762 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11763
11764         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11765
11766 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11767
11768         * mini.c: handle also floating point values in initialize_array.
11769
11770 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11771
11772         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11773         array initialization and make it conditional on the intrins option.
11774
11775 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11776
11777         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11778         relocations and put the patch info names close to the enum definition.
11779
11780 2007-01-15 Mark Mason <mason@broadcom.com>
11781
11782         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11783
11784 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11785
11786         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11787
11788 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11789
11790         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11791
11792 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11793
11794         * Makefile.am: distribute the mips sources.
11795
11796 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11797
11798         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11799         directly.
11800
11801 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11802
11803         * cpu-x86.md: back out for now as this triggers other regressions.
11804
11805 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11806
11807         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11808         to eax:edx, so ecx can't get allocated to them (bug #80489).
11809
11810 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11811
11812         * mini.c, mini-exceptions.c: enabled running fault handlers
11813         (bug #80469).
11814
11815 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11816
11817         * driver.c: If nothing fail, do not use the string "failed",
11818         because it makes it very annoying to view test result logs on the
11819         web. 
11820
11821 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11822
11823         * debug-debugger.c (mono_debugger_main): Rename "main" to
11824         "main_method" to prevent a warning.
11825
11826         Remove a warning for unused field.
11827
11828 2006-12-28  Martin Baulig  <martin@ximian.com>
11829
11830         * debug-debugger.c
11831         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11832
11833 2006-12-22  Martin Baulig  <martin@ximian.com>
11834
11835         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11836         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11837         seperate `.mdb_debug_info' section, so we can access it from the
11838         debugger even if the binary is stripped.
11839
11840         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11841         from the `.mdb_debug_info' here to prevent the linker from
11842         removing that section.
11843
11844         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11845         mdb-debug-info64.s.
11846
11847 2006-12-19  Robert Jordan  <robertj@gmx.net>
11848
11849         * mini-x86: enable the code to return small structures in
11850         registers for FreeBSD as well. Fixes bug #80278.
11851         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11852
11853 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11854
11855         * mini-x86.c: align the stack when calling the profiler
11856         function instrumenting the prolog (on OSX).
11857
11858 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11859
11860         * mini.c: emit a break opcode where Debugger.Break () is called.
11861
11862 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11863
11864         * mini.c (mono_method_to_ir): Provide useful information on this
11865         assert, to prevent others from debugging like I did.
11866
11867 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11868
11869         * mini.c: enable code which was incorrectly commented
11870         (bug #80235).
11871
11872 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11873
11874         * mini-x86.c: enable on OSX, too, the code to return small
11875         structures in registers.
11876
11877 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11878
11879         * mini-x86.c: remove the use of the dynamic code manager here, too.
11880
11881 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11882
11883         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11884         mono_debugger_create_notification_function() to use
11885         mono_global_codeman_reserve () instead of a dynamic code manager.
11886
11887 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11888
11889         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11890         ves_array_element_address() jit icall and use a generated
11891         managed method instead (which is about 4 times faster for a rank 3
11892         array access).
11893
11894 2006-11-29  Mark Mason  <mason@broadcom.com>
11895
11896         * basic-calls.cs: additional tests for passing
11897         structures as function arguments.
11898
11899 2006-11-29  Mark Mason  <mason@broadcom.com>
11900
11901         * mini-mips.h: disable custom exception handling
11902         * mini-mips.c: throw/rethrow should use jalr to call
11903         exception stubs.  Fixed bug with passing structures
11904         by value. More support for tracing floating point
11905         functions.
11906
11907 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11908
11909         * mini.c: fixed typo in the soft-float ldind.r4 handling
11910         (bug #80086).
11911
11912 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11913
11914         * mini.c, mini.h, driver.c: added --runtime command line
11915         option to select a different runtime than the autodetected one.
11916         * jit.h: added API for embedders to initialize with a specific
11917         runtime version.
11918
11919 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11920
11921         * mini.c: handle also boxing of r4 values (bug #80024).
11922
11923 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11924
11925         * mini-ppc.c: force indirect calls until we reserve
11926         enough address space for all the generated code.
11927
11928 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11929
11930         * exceptions-arm.c: workaround bugs in the libc definition
11931         of struct ucontext.
11932
11933 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11934
11935         * inssel.brg: fixes from me and Mark Mason.
11936
11937 2006-11-23  Dick Porter  <dick@ximian.com>
11938
11939         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11940         semaphore display now we've fixed the initial value
11941
11942 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11943
11944         * inssel.brg: partially revert the last change to fix the build.
11945
11946 2006-11-21  Mark Mason  <mason@broadcom.com>
11947
11948         * inssel.brg: Add and use compare-and-branch macros to support
11949         architectures that do not have condition code registers (ie. MIPS).
11950         * *-mips.{c,brg,md}: Fix copyright statements
11951
11952 2006-11-20  Mark Mason  <mason@broadcom.com>
11953
11954         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11955         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11956         * mini.h: Added declaration for mono_print_ins()
11957         * mini-codegen.c: added ins_spec initializer for MIPS
11958         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11959         vreg to be virtual and hreg to be non-virtual.
11960         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11961         is not yet working/implemented correctly.
11962         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11963         non-static, fixup calls to print_ins() from other parts in the file.
11964
11965 2006-11-20  Mark Mason  <mason@broadcom.com>
11966
11967         * basic-calls.cs: added tests for passing structures as arguments
11968         to calls.
11969
11970 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11971
11972         * inssel-long32.brg: optimize signed division by power of two.
11973
11974 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11975
11976         * mini-arm.c: added support for interworking with thumb code
11977         (mono must be still be built using the ARM instruction encoding).
11978
11979 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11980
11981         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11982         verifier has different rules for it.   Fixes a few verifier issues
11983         in the test suite.
11984
11985         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11986         at the end, so people know what happened.
11987
11988 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11989
11990         * brach-opts.c: in optimize_exception_target() make sure we
11991         are in a catch clause (fixes bug #79871).
11992
11993 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11994
11995         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11996         more soft-float support fixes.
11997
11998 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11999
12000         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
12001         that are passed half on the stack and half in registers.
12002
12003 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12004
12005         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
12006         more mips integration work from Mark E Mason 
12007         <mark.e.mason@broadcom.com>.
12008
12009 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12010
12011         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
12012         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
12013         tramp-mips.c: added sources for the mips port, not
12014         integrated in the build yet. Contributed by
12015         Mark E Mason <mark.e.mason@broadcom.com>.
12016
12017 2006-11-14  Neale Ferguson <neale@sinenomine.net>
12018
12019         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
12020
12021 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12022
12023         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
12024         put the soft-float rules in its own file since it seems to
12025         break s390 compilation.
12026
12027 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12028
12029         * mini-arm.c: fixed wrnings.
12030
12031 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
12032
12033         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
12034         inssel-arm.brg: ARM support for soft-float.
12035
12036 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12037
12038         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
12039         loads and stores of 32 bit fp values.
12040
12041 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
12042
12043         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
12044
12045         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
12046         works. Fixes #79852 and #79463.
12047
12048 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12049
12050         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12051         more soft-float support WIP and fixes.
12052
12053 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12054
12055         * mini-arm.c: some VFP updates.
12056
12057 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12058
12059         * mini-exceptions.c: 0 is a valid local var offset in some
12060         architectures, don't assert (bug #78508).
12061
12062 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12063
12064         * exceptions-arm.c: fixed off by one error in stack walk code.
12065
12066 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12067
12068         * mini.h, mini.c: more precise tracking of type load exceptions.
12069
12070 2006-11-03  Robert Jordan  <robertj@gmx.net>
12071
12072         * Makefile.am: [WIN32] Add monow.exe target.
12073         * driver.c: [WIN32] Don't detach the console when debugging.
12074         Fixes bug #79797.
12075         
12076 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12077
12078         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12079
12080 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12081
12082         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12083
12084         * driver.c (mini_regression): Fix --regression with AOT.
12085
12086         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12087
12088 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12089
12090         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12091
12092         * mini-sparc.h: Don't use sigaction on sparc/linux.
12093
12094         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12095
12096         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12097
12098         * mini-exceptions.c: Add proper include files for getpid ().
12099
12100 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12103         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12104         method.
12105
12106         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12107         name cache to reduce its size.
12108
12109         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12110
12111 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12112
12113         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12114         the mono_lmf TLS variable.
12115
12116         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12117         trampoline lmf frames.  
12118
12119         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12120
12121 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12124         the mono_lmf TLS variable.
12125
12126         * mini-exceptions.c: Access the LMF structure through accessors.
12127
12128         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12129         variable instead of in jit_tls->lmf.
12130
12131         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12132         
12133         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12134         trampoline lmf frames.
12135
12136         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12137
12138 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12139
12140        * mini.c trace.c mini-x86.c: Revert these too.
12141         
12142        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12143        signature change.
12144
12145 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12146
12147         * genmdesc.c: removed now dead code.
12148
12149 2006-10-09  Robert Jordan <robertj@gmx.net>
12150
12151         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12152
12153 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12154
12155         * mini.h: do not leave gaps in the opcode values.
12156
12157 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12158
12159         * jit-icalls.h: flag functions as internal here, too.
12160
12161 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12162
12163         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12164         functions with the internal attribute.
12165
12166 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12167
12168         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12169
12170 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12171
12172         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12173         for soft-float.
12174
12175 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12178         tail calls as on other platforms.
12179
12180         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12181
12182         * iltests.il: Add a few tailcall tests.
12183
12184 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12185
12186         * driver.c: fix loop for old compilers (bug #79521).
12187
12188 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12191
12192         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12193
12194         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12195         metadata without any code.
12196
12197         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12198         more precise debugging information using gdb.
12199
12200 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12201
12202         * inssel-ia64.brg: Make the helper methods static.
12203
12204 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12205
12206         * inssel-x86.brg: make the helper methods static.
12207
12208 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12209
12210         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12211
12212 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12213
12214         * mini.c: updates for monoburg changes.
12215         * inssel.brg: make a few helper functions static as they should.
12216
12217 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12218
12219         * Makefile.am: Move mini-codegen.c to common_sources.
12220
12221 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12222
12223         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12224         instructions.
12225         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12226         mini-ppc.h: port to use the common local register allocator.
12227
12228 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12229
12230         * mini.h: Remove the comment too then.
12231
12232 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12233
12234         * mini.h: put back backend.data which is to be used shortly and
12235         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12236         pointers on 4 byte boundaries it'd have much bigger issues running
12237         and you can ifdef it out anyway.
12238
12239 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12242         MonoInst size by 4 bytes on 64 bit machines.
12243
12244 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12245
12246         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12247         replacement with more meaningful field names. Arch maintainers, please
12248         check the assigned names are good enough for your arch.
12249
12250 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12253         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12254
12255 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12256
12257         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12258         relocations and memory requirements, put the optimization flags
12259         definitions in their own file.
12260
12261 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
12264
12265         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
12266
12267 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
12270
12271 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
12272
12273         * inssel.brg: use the correct function to get the size of an item
12274         in an array, given an element class.
12275         * aot-compiler.c: do not access class->class_size directly.
12276
12277 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12278
12279         * mini.h, debug-mini.c: added a debugging function to print
12280         info about local variables and arguments in a jitted method.
12281
12282 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12285
12286         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12287
12288 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12291         inner and outer loops when passing vtypes.
12292
12293 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12294
12295         * mini-ppc.c: take into account the cpu errata for cache flushing
12296         which caused some random errors (bug #79381).
12297
12298 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12301         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12302
12303 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12304
12305         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12306         loaded.
12307
12308         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12309         freebsd ports tree.
12310
12311         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12312         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12313
12314         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12315         displacement.
12316
12317 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12320
12321 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12324         macro does not have to be changed during debugging.
12325
12326         * 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>.
12327
12328         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12329
12330         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12331         
12332         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12333         MONO_ARCH_NO_EMULATE_MUL is defined.
12334
12335         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12336
12337         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12338
12339         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12340
12341         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12342         
12343 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12344
12345         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12346         stuff to mini-exceptions.c where it is used.
12347
12348         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12349         setup code, the real one is in mini-exceptions.c.
12350
12351         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12352         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12353         some changes from the freebsd ports tree.
12354
12355         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12356         constants.
12357         
12358         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12359
12360 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12361
12362         * mini.c: on Linux, check for /proc to be mounted
12363         (bug# 79351, novell bug#201204).
12364
12365 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12366
12367         * mini.c: handle cases where pthread_attr_getstack() behaves
12368         incorrectly (bug #78096).
12369
12370 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12371
12372         * mini-arm.c: support larger stack frames (bug #79272).
12373
12374 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12377
12378         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12379         tokens.
12380
12381         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12382         mono_class_from_name () to find a class from its name.
12383
12384         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12385
12386 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12387
12388         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12389
12390 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12391
12392         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12393
12394 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12397         callinfo->trampoline.
12398
12399         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12400         fixes #79271.
12401         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12402         future.
12403
12404 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12405
12406         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12407
12408 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12411         stats.method_trampolines, it is already done by the generic trampoline code.
12412
12413         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12414         
12415 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12418
12419         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12420
12421         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12422
12423         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12424         
12425         * mini.c (print_jit_stats): Print new stats.
12426
12427         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12428
12429 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12432         Address on two dimensional arrays. Fixes #78729.
12433
12434         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12435
12436         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12437         a method.
12438
12439         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12440
12441         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12442         #79130.
12443         
12444         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12445         a race condition.
12446         (mini_get_ldelema_ins): Ditto.
12447
12448 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12451         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12452         Fixes #79213.
12453
12454 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12455
12456         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12457         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12458
12459         * exceptions-s390x.c: Cosmetic change.
12460
12461         * tramp-s390.c: Fix warning.
12462
12463         * cpu-s390.md: Correct length of mul_imm.
12464
12465 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12466
12467         * aot-compiler.c: added binary writer with ELF backend
12468         implementation (only on Linux/x86 for now).
12469
12470 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12471
12472         * Makefile.am: Don't run net 2.0 AOT tests.
12473
12474         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12475         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12476
12477         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12478
12479 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12480
12481         * aot-compiler.c: simplified and refactored the asm-writing code
12482         to allow different backends.
12483
12484 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12487
12488         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12489         little. Share patches of type TYPE_FROM_HANDLE as well.
12490
12491         * mini.c (mono_patch_info_equal): New helper function.
12492         (mono_patch_info_hash): Ditto.
12493
12494         * aot-compiler.c (emit_method_code): Fix s390 build.
12495
12496         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12497         is not handled because it is stored as a flag and not as a type ctor. Fixes
12498         #79016.
12499
12500 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12501
12502         * aot-compiler.c: Fix computation of GOT slot statistics.
12503         
12504         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12505         Also remove support for not PIC AOT.
12506
12507         * mini.h: Bump AOT file format version.
12508
12509         * objects.cs: Add a test for #78990.
12510
12511         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12512         (peter.dettman@iinet.net.au). Fixes #79087.
12513
12514         * basic-long.cs: Add a test for the above.
12515
12516 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12517
12518         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12519         
12520         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12521         code somewhat.
12522
12523 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12526         exceptions.
12527
12528 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12529
12530         * mini.c: Don't verify COM proxy invoke calls
12531         
12532
12533 2006-08-10  Dick Porter  <dick@ximian.com>
12534
12535         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12536         which process is holding semaphores locked.
12537
12538 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * mini-ia64.c mini-amd64.c: Fix #79027.
12541
12542         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12543
12544         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12545
12546         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12547         implicit arguments in a vararg call. Fixes #79027.
12548
12549 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12550
12551         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12552         (mono_get_array_new_va_signature): Ditto.
12553
12554 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * aot-runtime.c: Call init_plt lazily.
12557
12558         * inssel-long.brg: Fix unsigned long->int conversion.
12559
12560         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12561
12562         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12563         that most data is now in the .rss/.data section.
12564
12565 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12566
12567         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12568
12569         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12570
12571         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12572
12573         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12574
12575         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12576         virtual call. Fixes #79010.
12577
12578         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12579         and use the result as the this argument in the real call.
12580
12581         * generics.2.cs: Add a new test for #79010.
12582         
12583 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * mini-x86.c: Fix a warning.
12586
12587         * aot-compiler.c: Add a bunch of statistics.
12588
12589         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12590
12591 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12594
12595 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12596
12597         * 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>.
12598
12599 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12600
12601         * mini.c (mono_method_to_ir): Obtain the original method in the
12602         CIL stream and use this to perform validation.
12603
12604         Fixed: #78816
12605
12606 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12609         (mono_arch_call_opcode): Ditto.
12610
12611         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12612         #78826.
12613
12614         * mini.c (mono_patch_info_dup_mp): New helper function.
12615         
12616         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12617         compilation. Fixes #78827.
12618
12619 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12620
12621         * declsec.c: Use original security informations for
12622           MONO_WRAPPER_MANAGED_TO_MANAGED.
12623
12624 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12625
12626         * mini.c: Allow Com Interop methods/classes and
12627         don't verify COM wrapper calls
12628         
12629
12630 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12631
12632         * inssel-long32.brg: Fix long->i4 checked conversion.
12633
12634         * exceptions.cs: Add a test for the above.
12635
12636 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12637
12638         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12639
12640         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12641         leaks.
12642
12643         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12644         #78775.
12645
12646 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12647
12648         * mini.c: Fix solaris/x86 exception handling.
12649
12650         * Makefile.am: Get rid of $(ICU_LIBS).
12651
12652 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12653
12654         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12655         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12656         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12657
12658         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12659
12660         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12661         this function causes a SIGSEGV.
12662
12663 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12664
12665         * mini.c: Remove unused solaris/x86 includes.
12666
12667 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12668
12669         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12670
12671 2006-06-20  Jb Evain  <jbevain@gmail.com>
12672
12673         * cpu-g4.md: fix max length of start_handler instruction.
12674
12675 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12676         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12677
12678 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12679         * ssa.c: Fixed bug 78653 for SSA based deadce.
12680         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12681         MonoInst.flags, used in SSA based deadce.
12682         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12683         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12684
12685 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12686
12687         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12688         it can end up using non executable memory on ppc64 systems
12689         running ppc32 userspace (fix from Johannes Berg).
12690
12691 2006-06-14  Dick Porter  <dick@ximian.com>
12692
12693         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12694         4.1.1
12695
12696 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12697         * mini.c: Made so that inline is locally disabled if it would
12698         trigger a .cctor, because too many apps depend on this behavior
12699         (which seems to be also the one of the MS CLR).
12700
12701 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12702
12703         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12704         No idea why this worked before.
12705
12706         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12707         which branch to outer exception clauses since they could skip the
12708         inner finally clauses. Fixes #78633.
12709
12710         * exceptions.cs: Add a test for the above.
12711
12712         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12713         Fixes #78629.
12714
12715         * iltests.il: Add a test for the above.
12716
12717 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12718
12719         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12720         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12721
12722         * iltests.il: Add a test for the above.
12723
12724 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12725
12726         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12727         
12728         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12729         methods as instrinsics.
12730
12731 2006-06-09  Wade Berrier <wberrier@novell.com>
12732
12733         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12734         (simple-cee-ops.h ssapre-mini-ops.h)
12735
12736 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12737
12738         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12739         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12740         instruction).
12741         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12742         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12743
12744 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12745
12746         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12747
12748 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12749
12750         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12751         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12752         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12753         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12754         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12755         of opcodes, so that bug 78549 should not happen again.
12756         * ssapre.c: Updated to use the renamed files.
12757
12758 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12759
12760         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12761         in OP_ATOMIC_EXCHANGE_I4.
12762
12763 2006-06-07  Wade Berrier <wberrier@novell.com>
12764
12765         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12766         in mono_debugger_create_notification_function)
12767
12768 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12769
12770         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12771         
12772         * mini.c (type_from_stack_type): Disable some changes which do not
12773         seem to work.
12774
12775         * driver.c: Reenable opts.
12776
12777         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12778         of the evaluation stack.
12779         
12780         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12781         evaluation stack trace at entry to the bblock.
12782
12783         * mini.c (merge_stacks): New function to perform verification of stack merges.
12784         Turned off by default.
12785
12786         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12787         STACK_MP.
12788         
12789 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12790
12791         * local-propagation.c: Fixed bug 78549.
12792
12793 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12796
12797 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12798
12799         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12800         tramp-arm.c, tramp-ia64.c
12801         (mono_debugger_create_notification_function): Update signature to
12802         new signature and use new protocol for creating the notification
12803         function.  
12804
12805         Should fix the build.
12806
12807 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12808
12809         * exceptions-ppc.c (mono_jit_walk_stack)
12810         (ves_icall_get_frame_info): Fix the build
12811
12812 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12815
12816 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12817
12818         * il2tests.2.il: New file for generics CIL tests.  Add test for
12819         #78019.
12820         * Makefile.am: Update.
12821
12822         Fix #78019
12823         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12824         to nullable types.
12825
12826 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12827
12828         * aliasing.c: Fixed bug 78311.
12829
12830 2006-05-29  Martin Baulig  <martin@ximian.com>
12831
12832         * mini-exceptions.c (mono_find_jit_info): When computing the
12833         native offset, check whether we're actually inside the method's
12834         code; call mono_debug_print_stack_frame() to format the frame.
12835         (ves_icall_System_Exception_get_trace): Call
12836         mono_debug_print_stack_frame() to format the stack frame.
12837         (ves_icall_get_trace): Update to the new debugging API.
12838         (mono_jit_walk_stack_from_ctx): Likewise.
12839         (ves_icall_get_frame_info): Likewise.
12840
12841         * mini.c (get_method_from_ip): Use the new debugging API.
12842         (mono_print_method_from_ip): Likewise.
12843
12844         * exceptions-ppc.c
12845         (mono_jit_walk_stack): Use the new debugging API.
12846         (ves_icall_get_frame_info): Likewise.   
12847
12848 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12849
12850         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12851
12852 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12853
12854         * mini.c: Added "limitator" to inline for debugging.
12855
12856 2006-05-24  Martin Baulig  <martin@ximian.com>
12857
12858         * debug-debugger.c (mono_debugger_init): Create a private,
12859         malloc()-based code manager for the notification function and
12860         intentionally leak it on exit.  This fixes the crash-on-exit race
12861         condition.
12862
12863         * tramp-amd64.c
12864         (mono_debugger_create_notification_function): Added
12865         `MonoCodeManager *' argument.
12866
12867         * tramp-x86.c
12868         (mono_debugger_create_notification_function): Added
12869         `MonoCodeManager *' argument.
12870
12871 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12872
12873         * aliasing.c: Fixed 64 bit issue.
12874         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12875         default since all known bugs are fixed (one more time!).
12876
12877 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini.c: write barrier support.
12880
12881 2006-05-23  Martin Baulig  <martin@ximian.com>
12882
12883         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12884         check at the top of the file.
12885
12886 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12887
12888         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12889         reverting changes without reason and without changelog entries.
12890
12891 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12894         to a few opcodes. Fixes #78439.
12895
12896         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12897         consistency with other archs.
12898
12899         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12900
12901 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12902
12903         * debug-debugger.c: fix the build.
12904
12905 2006-05-17  Martin Baulig  <martin@ximian.com>
12906
12907         * debug-debugger.c
12908         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12909         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12910         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12911         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12912
12913 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12914
12915         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12916
12917 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12920         MONO_TYPE_GENERICINST.
12921         
12922         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12923         MONO_TYPE_GENERICINST.
12924
12925 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12926
12927         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12928         #78325.
12929
12930 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12933         mempool.
12934         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12935
12936 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12939         mono_trace_cleanup ().
12940
12941         * iltests.il: Fix problem with the newly added test.
12942
12943         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12944         due to register constraints, free up the previous hreg. Fixes #78314.
12945
12946         * iltests.il: Add new test for #78314.  
12947
12948         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12949         Interlocked.Add. Fixes #78312.
12950
12951         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12952         
12953 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12956
12957 2006-05-05  Martin Baulig  <martin@ximian.com>
12958
12959         * debug-mini.c (mono_debug_open_block): New method.
12960
12961         * mini-amd64.c
12962         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12963         the beginning of each basic block.
12964
12965         * mini-x86.c
12966         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12967         the beginning of each basic block.
12968
12969 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12970
12971         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12972         default until I understand why they break the build on amd64.
12973
12974 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * mini.c (mini_cleanup): Call mono_cleanup ().
12977
12978         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12979         errors.
12980
12981 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12982
12983         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12984         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12985         default since all known bugs are fixed, and I cannot reproduce bug
12986         77944... I'm asking Matt Hargett to test again after this commit.
12987
12988 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12989
12990         * mini-codegen.c: Fixed typo that thrashed inline.
12991
12992 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * dominators.c (compute_dominators): Avoid using a worklist since
12995         it is not correct in some cases. Instead, iterate over all bblocks as
12996         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12997
12998 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12999
13000         * mini.c (mono_jit_compile_method_inner): Use
13001         mono_prepare_exception_from_error that resets the value
13002         internally.
13003
13004 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13005
13006         * mini.c: Move the mini_loader_error_to_exception to metadata. 
13007         
13008 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13009
13010         * aliasing.c: Fixed bug 78210.
13011
13012 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13013
13014         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13015         default until all their problems (or the ones they trigger) are fixed.
13016
13017 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
13020         
13021         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
13022         as loaded only after resolving patches since that could invoke the same method.
13023
13024         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
13025
13026         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
13027         functions.
13028
13029         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
13030         AOT loader.
13031
13032         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
13033         stack.
13034
13035         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
13036         made from AOT code through the PLT table.
13037
13038         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
13039         holding the plt offset when a call is made to the aot plt trampoline.
13040         
13041 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
13044         amd64 AOT support.
13045
13046         * Makefile.am (common_sources): Fix build breakage.
13047
13048         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13049         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13050         intra-assembly calls if possible.
13051         
13052         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13053
13054         * mini-trampolines.c: Handle PLT entries.
13055
13056         * mini.c: Avoid creating a GOT var for calls.
13057
13058         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13059         from mscorlib code.
13060
13061         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13062         from mscorlib code.
13063
13064         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13065         AOT code.       
13066
13067         * mini.h: Bump AOT file format version.
13068         
13069         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13070         covers more cases.
13071
13072 2006-04-25  Martin Baulig  <martin@ximian.com>
13073
13074         * driver.c: Disable copyprop, consprop and inline when running
13075         inside the debugger.
13076
13077 2006-04-25  Martin Baulig  <martin@ximian.com>
13078
13079         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13080         with `get_current_thread' and added `detach'.
13081         (MonoDebuggerMetadataInfo): Added `thread_size',
13082         `thread_tid_offset', `thread_stack_ptr_offset' and
13083         `thread_end_stack_offset'.
13084
13085 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13086
13087         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13088         aot-runtime.c.
13089
13090         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13091         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13092
13093         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13094
13095         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13096
13097         * aot.c: Add support for ADJUSTED_IID.  
13098
13099 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13100
13101         * aot.c (emit_method_order): Don't align method_order_end.
13102
13103         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13104         the interface ID changes.
13105
13106 2006-04-21  Dick Porter  <dick@ximian.com>
13107
13108         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13109         cleaning up a thread.  Fixes the new part of bug 77470.
13110
13111 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13112
13113         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13114         to managed wrapper.
13115                      
13116 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13117
13118         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13119         
13120         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13121         SIGSEGV. Fixes #78072.
13122
13123         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13124         unregister our SIGABRT handler.
13125
13126 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13127
13128         * mini.c: Disabled inline where it can alter the call stack in a
13129         way visible from managed code.
13130         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13131         default.
13132
13133 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13134
13135         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13136         on other platforms. Fixes #78089.
13137
13138 2006-04-13  Martin Baulig  <martin@ximian.com>
13139
13140         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13141         determine whether we're inside the debugger.
13142
13143         * debug-debugger.h
13144         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13145
13146 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13149         handler clauses. Fixes #78024.
13150
13151         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13152         in the CALL_MEMBASE opcodes. Fixes #78088.
13153         (mono_arch_get_vcall_slot_addr): Ditto.
13154
13155 2006-04-10  Martin Baulig  <martin@ximian.com>
13156
13157         * debug-debugger.c: The thread handling code has now been moved
13158         into ../metadata/threads.c.
13159
13160 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13161
13162         * driver.c (mono_main): Fix --with-gc=none build.
13163
13164         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13165         (mono_spillvar_offset_float): Ditto.
13166         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13167         hreg, not when its !global, since on ia64, there is a third category: stacked
13168         registers.      
13169
13170 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13171
13172         * mini.c: set MonoInst->klass for load field address and a few other
13173         places.
13174
13175 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13178
13179 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13180
13181         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13182         the branch opt changes.
13183
13184 2006-04-06  Dick Porter  <dick@ximian.com>
13185
13186         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13187         
13188         * wapihandles.c (mini_wapi_seminfo): 
13189         * driver.c (mono_main): Add semaphore info option
13190
13191 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13192
13193         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13194         branch optimization changes. Fixes #78009.
13195
13196 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13197
13198         * mini.c: ignore accessibility of methods in managed->native wrappers.
13199
13200 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13201
13202         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13203         
13204         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13205
13206 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * mini.c: Modify the branch optimizations to preserve the invariant that
13209         the entries inside the in_bb and out_bb arrays are unique.
13210         (mono_unlink_bblock): Avoid creation of new arrays.
13211
13212 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13213
13214         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13215         change (#77992).
13216
13217 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13218
13219         * mini.c (optimize_branches): Remove the "optimizations" in
13220         the cbranch1/cbranch2 -> branch cases which were causing several
13221         problems in the past. Fixes #77986.
13222
13223 2006-03-31  Chris Toshok  <toshok@ximian.com>
13224
13225         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13226         default optimizations :(
13227
13228 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13231         branch.
13232
13233 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13234
13235         * local-propagation.c: Added comments to structs and removed
13236         "Mono" prefixes from local tree mover types.
13237
13238 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * Makefile.am (arch_sources): Define this for each architecture so 
13241         libmono_la_SOURCES is defined in one place.
13242
13243 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13244
13245         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13246         from handles/.
13247
13248 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13249
13250         * driver.c: print the GC name supplied by configure.
13251
13252 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13253
13254         * local-propagation.c: Added tree mover, and moved here all the
13255         local propagation code from mini.c
13256         * mini.c: Added support for treeprop, and moved all the local
13257         propagation code to local-propagation.c
13258         * mini.h: Added support for treeprop
13259         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13260         treeprop, inline and deadce by default
13261         * Makefile.am: Added local-propagation.c
13262
13263 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
13266
13267 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
13268
13269         * debug-debugger.c: make it compile without the Boehm GC.
13270
13271 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13272
13273         * mini.c: fixed issue with mismatch when an icall is registered
13274         with multiple names but same address.
13275
13276 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13277
13278         * declsec.c, mini-exceptions.c: use write barrier to set reference
13279         fields of managed objects.
13280
13281 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13284         (can_access_internals): Fix a warning.
13285
13286         * mini.c (print_method_from_ip): Rename this to 
13287         mono_print_method_from_ip so it gets exported.
13288
13289         * trace.c: Deal with strings inside StringBuilder's containing garbage
13290         and fix memory leaks. Fixes #77848.
13291
13292 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13295         fixes #77787.
13296
13297 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13298         
13299         * mini-s390.c: Remove OP_X86_TEST_NULL.
13300
13301 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13302
13303         * mini.c: use the correct GetHashCode() for the moving collector.
13304
13305 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13306
13307         * liveness.c: Regalloc spill cost tuning.
13308
13309 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13310         
13311         * mini-s390x.h: Correct S390_LONG macro.
13312
13313         * mini-s390x.c: Cleanup unused code.
13314
13315 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * jit-icalls.h: New file.
13318
13319         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13320         icalls and include that instead of including jit-icalls.c.
13321
13322         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13323         OP_X86 opcodes.
13324
13325 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13326
13327         * mini.c: when checking for member accessibility, also check for
13328         friend assemblies and for explicit interface implementations.
13329
13330 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13331
13332         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13333
13334         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13335
13336         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13337         common cases are done first.    
13338
13339         * mini-ops.h: Only define platform specific opcodes on the given platform.
13340
13341         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13342         branch.
13343         
13344 2006-03-14  Martin Baulig  <martin@ximian.com>
13345
13346         Revert Paolo's change from r57348:
13347
13348         * mini.h: don't use gboolean for bitfields.
13349         * mini.c: verifier changes for fields and methods accessibility.
13350
13351 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13352
13353         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13354
13355         * mini-s390x.c: Fix conv_r_un.
13356
13357         * cpu-s390, cpu-s390x.md: Fix lengths.
13358
13359 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13360
13361         * mini.c: nested types have access to all the nesting
13362         levels, not just the enclosing types.
13363
13364 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13365
13366         * mini.c: added a few more verification checks.
13367
13368 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * liveness.c: Merge optimizations from the linear-il branch.
13371
13372 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-ia64.c (emit_call): Add a comment.
13375
13376         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13377
13378         * tramp-ia64.c: Fix some warnings.
13379
13380 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13381
13382         * mini.h: don't use gboolean for bitfields.
13383         * mini.c: verifier changes for fields and methods accessibility.
13384
13385 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13388         lazy icall wrapper changes.
13389
13390         * dominators.c: Replace all the dominator algorithms with faster
13391         ones from the linear-il branch.
13392
13393         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13394         the mempool.
13395
13396         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13397         common cases are done first.
13398
13399         * mini-amd64.c: Fix some warnings.
13400
13401         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13402         from the mempool.
13403
13404         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13405         added code.
13406
13407         * mini.h: Add a missing prototype.
13408
13409 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13410
13411         * mini.c: Compile icall wrappers lazily.
13412
13413         * mini-codegen.c: Use printf instead of g_print since its much faster.
13414
13415         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13416         function.
13417
13418         * mini.c (optimize_branches): Cache the negative result from 
13419         remove_block_if_useless ().
13420
13421         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13422         Also fix some bblock linking issues.
13423
13424         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13425         assembly files.
13426
13427         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13428
13429         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13430         accessed fields first, for better cache behavior.
13431         
13432 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini.c: speedup IList<T> array accesses.
13435
13436 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13437
13438         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13439         inline_costs counter. Fixes #77190.
13440
13441 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13444         trace messages. Fixes #77706.
13445
13446 2006-03-04  Martin Baulig  <martin@ximian.com>
13447
13448         * tramp-amd64.c, tramp-x86.c
13449         (mono_debugger_create_notification_function): Use
13450         mono_global_codeman_reserve() to allocate a buffer at runtime and
13451         return it.
13452
13453         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13454
13455         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13456         notification function at runtime and then call `initialize' in the
13457         `MONO_DEBUGGER__debugger_info' vtable.
13458
13459 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * iltests.il: Fix a visibility problem.
13462
13463 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13464
13465         * driver.c, mini.c: add hooks for the counters API.
13466
13467 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13468
13469         * driver.c: show disabled options.
13470
13471 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13472
13473         * linear-scan.c: always use cost-driven selection.
13474
13475 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13476
13477         * jit-icalls.c (helper_compile_generic_method): Revert change from
13478         2006-02-24.
13479
13480 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13481
13482         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13483
13484 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13485
13486         * inssel.brg: style fixes, mostly to force the updated monoburg
13487         to run for people using svn.
13488
13489 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13490
13491         * mini.c: match monoburg changes.
13492
13493 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13494
13495         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13496         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13497         declaration in the header file.
13498
13499 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13500
13501         * helpers.c: reduce relocations and mem usage.
13502
13503 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13504
13505         * mini.h, mini-codegen.c: disable logging features if
13506         requested by configure.
13507
13508 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13509
13510         * mini.c: tiny verifier changes.
13511
13512 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13513
13514         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13515         cpu-pentium.md: stack alignment changes for osx/x86,
13516         partially from Geoff Norton <gnorton@customerdna.com>.
13517
13518 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13519
13520         * jit-icalls.c (helper_compile_generic_method): Update to changes
13521         in metadata/class.c.
13522
13523 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13524         
13525         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13526         
13527         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13528         interface calls with large offsets.
13529
13530 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13531
13532         * jit-icalls.c (helper_compile_generic_method): Document the
13533         special-case we depend on so that we can inflate the method twice
13534         with the same context with no bad side-effects.
13535
13536 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13537
13538         * mini-x86.c, mini-amd64.c: fix for case when xen support
13539         is disabled.
13540
13541 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13542
13543         * mini-x86.c, mini-amd64.c: generate code to access tls items
13544         in a faster way for Xen systems.
13545
13546 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13547
13548         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13549         updates and compilation fixes for the OSX/x86 port, mostly from
13550         Geoff Norton <gnorton@customerdna.com>.
13551
13552 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13553
13554         * inssel.brg: faster interface call implementation
13555         to sync with the interface_offsets MonoVTable changes.
13556
13557 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13558
13559         * mini.c: more verification checks.
13560
13561 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13562
13563         * mini.c: added a few more verification checks.
13564
13565 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13566
13567         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13568         facility on the processor and use it if available.
13569
13570 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13571
13572         * driver.c, aot.c, mini.c: throw exception if the IL code is
13573         invalid or unverifiable.
13574
13575 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13576
13577         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13578         m.StructField.
13579
13580 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13581
13582         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13583
13584 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13585
13586         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13587         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13588         handling of instantiated generic valuetypes.
13589
13590 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13593         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13594         instead.
13595
13596         * generics.2.cs: Revert the nullable reftypes tests.
13597
13598 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13599
13600         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13601         using __builtin_frame_address (1) as it doesn't work in the presence
13602         of optimizations. Hopefully fixes #77273.
13603
13604         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13605         -> generics.cs change as it doesn't work with some automake versions.
13606
13607 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13608
13609         * mini.c: handle systems that sue a different way to
13610         retrieve the stack address of the current thread.
13611
13612 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13615         it specially in the makefile.
13616
13617         * generics.2.cs: Add tests for nullable reference types.
13618
13619 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13620
13621         * mini.c: always handle the case when mono_jit_init()
13622         is called in a thread different from the main thread,
13623         confusing libgc (bug #77309).
13624
13625 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13626
13627         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13628
13629 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13630
13631         * mini.c: change optimize_branches () to use a single loop
13632         and introduce a new optimization to simplify some range checks.
13633
13634 2006-02-03  Martin Baulig  <martin@ximian.com>
13635
13636         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13637         and merged with debugger_thread_manager_add_thread().
13638         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13639         inform the debugger about the main thread.
13640
13641 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * basic.cs: Add test for div.un/rem.un constant folding.
13644
13645 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13646
13647         * cpu-s390x.md: correct int_xor_imm length
13648
13649 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * generics.2.cs: New test for #77442.
13652
13653         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13654         #77442.
13655
13656 2006-02-02  Martin Baulig  <martin@ximian.com>
13657
13658         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13659         <mono/metadata/mono-debug-debugger.h>   
13660
13661         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13662
13663 2006-02-02  Martin Baulig  <martin@ximian.com>
13664
13665         * debug-debugger.h: New header file for debug-debugger.c.
13666
13667         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13668         function is a separate thread anymore; add support for attaching.
13669
13670 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13671
13672         * tramp-x86.c: Fix a warning.
13673
13674 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13677         on very large methods.
13678
13679         * aot.c (load_patch_info): Fix a warning.
13680
13681 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13682
13683         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13684         mini-ops.h: alu membase optimizations.
13685
13686 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13687
13688         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13689         to speedup StringBuilder.
13690
13691 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13692
13693         * dominators.c (mono_compute_natural_loops): Fix detection of
13694         loop body start blocks.
13695
13696         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13697
13698 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13699
13700         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13701         #75145.
13702
13703 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13704
13705         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13706
13707 2006-01-25  Martin Baulig  <martin@ximian.com>
13708
13709         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13710         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13711         started to cleanup this file a little bit.
13712
13713 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13714
13715         * mini.c: optimize a codepath frequently happening in generics code.
13716
13717 2006-01-23  Martin Baulig  <martin@ximian.com>
13718
13719         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13720
13721         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13722         functions directly.
13723
13724         * driver.c: debug-debugger.c is only available if
13725         `MONO_DEBUGGER_SUPPORTED' is defined.   
13726
13727 2006-01-23  Martin Baulig  <martin@ximian.com>
13728
13729         * debug-debugger.c: Only enable this on platforms where the Mono
13730         Debugger is working (x86 and x86_64).
13731
13732 2006-01-21  Martin Baulig  <martin@ximian.com>
13733
13734         The Mono Debugger is now using the normal `mono' instead of the
13735         `mono-debugger-mini-wrapper' when executing managed code.
13736
13737         * debug-debugger.c: New file; previously known as
13738         debugger/wrapper/wrapper.c.
13739
13740         * debug-mini.c (mono_init_debugger): Removed.
13741
13742         * driver.c (mono_main): Added new `--inside-mdb' command line
13743         argument which is used when running inside the debugger.
13744
13745 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * liveness.c (mono_analyze_liveness): Remove some unused data
13748         structures.
13749
13750 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13751
13752         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13753
13754 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13757         depends on implementation details of monobitset.
13758
13759         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13760         Fixes #77271.
13761
13762 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * liveness.c: Update after monobitset changes.
13765
13766 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13767
13768         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13769
13770 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13771
13772         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13773
13774         * mini-s390x.c: Remove warning messages.
13775
13776 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13777
13778         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13779
13780 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13781
13782         * generics.2.cs: Add ldelem/stelem_any test.
13783
13784 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13785
13786         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13787
13788 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13791         
13792 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * generics.2.cs: Reenable vtype tests.
13795
13796         * inssel-x86.brg: Remove an icorrect valuetype rule.
13797
13798 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13799
13800         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13801         initial support for OP_ABS.
13802
13803 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13804
13805         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13806
13807 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13808
13809         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13810         conversion and implement LADD/LSUB.
13811
13812         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13813         architectures.
13814
13815 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13816
13817         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13818
13819         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13820         architectures.
13821
13822 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13823
13824         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13825         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13826         (stack walk problem).
13827
13828 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * aot.c (mono_aot_load_method): Fix a warning.
13831
13832 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13833
13834         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13835
13836 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * iltests.il: Add test for #77148.
13839
13840         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13841         #77148.
13842
13843 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13844
13845         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13846
13847 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13848
13849         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13850         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13851
13852         * basic-long.cs: Add lconv-to-r4/r8 tests.
13853
13854 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13857
13858         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13859         here as on other archs.
13860
13861 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13862
13863         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13864
13865 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13866
13867         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13868         
13869         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13870
13871         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13872         instrument_prolog; Add memory_barrier instruction.
13873
13874 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13877
13878 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13881
13882         * aliasing.c inssel.brg: Fix warnings.
13883
13884         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13885         could skip initialization of some parts of memory.
13886
13887         * mini.c mini-ia64.c: Fix warnings.
13888
13889         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13890
13891 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13894         a crash seen on sparc.
13895
13896         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13897         
13898         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13899
13900 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13901
13902         * mini-ops.h: Add s390_backchain instruction
13903
13904         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13905
13906         * cpu-s390.md: Add s390_backchain instruction
13907
13908         * mini-s390.c: Significant ABI changes
13909
13910         * mini-s390.h: Cater for zero length structures
13911
13912 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13913
13914         * mini-s390.c: ABI fixes
13915
13916         * inssel-s390.brg: Remove debug statements
13917
13918         * cpu-s390.md: Fix length of ATOMIC_xx operations
13919
13920 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13921
13922         * basic-float.cs: Add float<->long conversion tests.
13923
13924 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13925
13926         * mini-s390.c: Fix LOCALLOC processing.
13927
13928         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13929
13930 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13931
13932         * iltests.il: Add tests for some opcodes not covered by the other
13933         tests.
13934
13935 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13936
13937         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13938         register loading for Tail processing; Correct trace output.
13939
13940         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13941
13942         * cpu-s390.md: Correct size of jmp instruction. 
13943
13944 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13945
13946         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13947
13948 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13949
13950         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13951           Bring s390 up to current level.
13952
13953 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13954
13955         * generics.2.cs: Disable the newly added tests as they do not work yet.
13956         
13957         * generics.2.cs: Add valuetype tests.
13958
13959 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13960
13961         * basic-long.cs: Add i4->u8 test.
13962
13963         * objects.cs: Add tests for JIT intrinsic.
13964
13965         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13966         optimizations lost by a mistake.
13967
13968 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * basic-long.cs: Remove a test moved to objects.cs.
13971
13972         * arrays.cs: Add more array tests.
13973
13974 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * arrays.cs: Add new tests for multi-dimensional arrays.
13977
13978 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13979
13980         * Makefile.am (test_sources2): Add generics.2.cs.
13981         (EXTRA_DIST): Add test_sources2.
13982
13983 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13984
13985         Support for boxing and unboxing nullable types as well as the
13986         isinst operation on nullables, per the CLI ammendment.
13987
13988         * inssel.brg (CEE_ISINST): Special case for nullable
13989
13990         * mini.c (handle_unbox_nullable): new method
13991         (handle_box): Special case for nullable types
13992         (mono_method_to_ir): Call handle_unbox_nullable in correct
13993         places.
13994
13995         * generics.2.cs: New test suite
13996
13997         * Makefile.am: Support for regression tests with generics.
13998
13999 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
14000
14001         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
14002         allocated to registers. Fixes #76800.
14003
14004 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
14005
14006         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
14007
14008 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
14009
14010         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
14011         of platforms.
14012
14013 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
14014
14015         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
14016         objects.cs.
14017
14018         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
14019         
14020         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
14021 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
14022
14023         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
14024         single precision before storing to a single precision location.
14025
14026 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14027
14028         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
14029
14030 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
14033         correct files.
14034
14035         * basic.cs: Remove test_0_byte_compares test which was moved to
14036         objects.cs a long time ago.
14037
14038 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
14039
14040         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14041
14042 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
14043
14044         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
14045         handlers are called.
14046
14047         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14048         throwing code.
14049
14050          * mini-ia64.c: Add support for the throw->branch exception 
14051         optimization.   
14052
14053         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14054
14055 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14056
14057         * mini.c: Enabled "fastpath" deadce :-)
14058         
14059 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14060
14061         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14062         alias analysis pass to support it.
14063         * mini.h: Likewise.
14064         * ssa.c: Likewise.
14065         * liveness.c: Likewise (liveness computation can use aliasing
14066         information to be more accurate).
14067         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14068         moreover made so that "--compile-all" uses the given optimization
14069         flags and not the default ones.
14070         * aliasing.c: Alias analysis (new file).
14071         * aliasing.h: Likewise.
14072         * Makefile.am: added "aliasing.c" and "aliasing.h".
14073         
14074 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14077         OP_L opcodes.
14078
14079 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14080
14081         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14082         fp >= end_of_stack exit condition, as it is not needed, and it might
14083         become true for fp eliminated frames.
14084
14085 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14088         coded offsets.
14089
14090 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14091
14092         * mini-arm.c: fixed alignment of doubles/longs to match
14093         the C ABI (bug #76635).
14094
14095 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14096
14097         * aot.c: fix compilation with --enable-minimal=aot.
14098
14099 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14100
14101         * mini-arm.c: fixed compatibility with the new
14102         floating point emulator package for compares.
14103
14104 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14105
14106         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14107
14108 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * mini-exceptions.c (print_stack_frame): Output to stderr.
14111         (mono_handle_native_sigsegv): Ditto.
14112
14113 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14114
14115         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14116         OP_LCONV_TO_OVF_I implementation.
14117
14118         * mini-amd64.c: Add support for the throw->branch exception 
14119         optimization.
14120
14121         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14122         when the catch clause catches a more general exception, i.e. Object.
14123
14124 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14125
14126         * cpu-ia64.md: Remove unused opcodes.
14127
14128         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14129         specific defines for architectures defining USE_SIGACTION.
14130
14131         * mini-ia64.c: Fix some warnings.
14132
14133         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14134         version seemed to skip a frame.
14135
14136 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14137
14138         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14139         only calls which are made to native code use this flag.
14140
14141 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14142
14143         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14144         varargs methods as well.
14145         
14146         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14147         which have save_lmf set. Reorganize methods prologs a bit.
14148
14149         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14150         debugger to the proper place.
14151
14152 2005-10-29  Martin Baulig  <martin@ximian.com>
14153
14154         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14155         when running inside the debugger until the debugger has support
14156         for it.
14157
14158 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * mini.h: Fix a warning.
14161
14162 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14163
14164         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14165         we expose publicly, this returns the string.
14166
14167 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14168
14169         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14170         with fp elimination.
14171
14172 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14175         native stacktrace using the glibc 'backtrace' function if available.
14176
14177 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14178
14179         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14180
14181         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14182         handle SIGSEGVs received while in native code.
14183
14184         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14185         code, call mono_handle_native_sigsegv which will abort the runtime
14186         after printing some diagnostics, instead of converting it into a
14187         confusing NullReferenceException.
14188
14189 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * cpu-pentium.md: Remove unused opcodes.
14192
14193 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14194
14195         * mini-amd64.h (MonoLMF): Add rsp field.
14196
14197         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14198         the lmf too.
14199
14200 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14201
14202         * mini-codegen.c (get_register_spilling): Fix some warnings.
14203
14204 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14205
14206         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14207         elimination during exception handling. Enable fp elimination by
14208         default.
14209
14210         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14211         elimination.
14212
14213 2005-10-16  Martin Baulig  <martin@ximian.com>
14214
14215         * mini-exceptions.c
14216         (mono_debugger_run_finally): New public method for the debugger.
14217
14218 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14219
14220         * debug-mini.c (mono_debug_init_method): Fix warning.
14221
14222         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14223         the 'exname' parameter const to fix some warnings.
14224
14225 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14226
14227         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14228         introduced by the previous patch.
14229
14230 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14231
14232         * basic-float.cs: Add test for precision of float arithmetic.
14233
14234         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14235         when loading/storing single values from/to memory.
14236
14237         * mini.c (mono_jit_compile_method_with_opt): Create the function
14238         pointers in the correct domain.
14239
14240 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14241
14242         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14243         introduced by previous patch.
14244         
14245         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14246         when out_filter_idx is NULL.
14247
14248         * mini-exceptions.c: Don't run filter clauses twice during exception
14249         handling. Fixes #75755.
14250
14251 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * aot.c: Add support for ldflda wrappers.
14254
14255         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14256         #75902.
14257
14258 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14259
14260         * mini.c, mini.h: do not consider exception handlers blocks when
14261         setting up interface variables.
14262
14263 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
14264
14265         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
14266
14267 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
14268
14269         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
14270         causes a regression.
14271
14272         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
14273
14274 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
14275
14276         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
14277         of the OP_P definitions.
14278
14279         * TODO: Add a proposal for dealing with the CEE/OP mess.
14280
14281         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
14282         optimizations from the x86 port.
14283
14284         * cpu-amd64.md: Ditto.
14285
14286         * basic.cs basic-long.cs: Add tests.
14287
14288 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14289
14290         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14291         Patrik Torstensson's implementation of my exception-handling
14292         optimization idea, when the exception object is not used
14293         (bug #62150).
14294
14295 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14296
14297         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14298         of the mul_imm optimizations from the old jit.
14299
14300 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.c, liveness.c: patch by Patrik Torstensson and
14303         Zoltan Varga to improve performance in methods with
14304         exception clauses.
14305
14306 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * driver.c: Remove 'Globalization' entry from --version.
14309
14310 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14313         there is a profiler interested in JIT events.
14314
14315         * aot.c: Load profile files produced by the AOT profiling module, and
14316         reorder methods based on the profiling info. Add a 'method_order' table
14317         to the AOT file to make mono_aot_find_jit_info work with the reordered
14318         methods.
14319
14320         * mini.h: Bump AOT file version info.
14321
14322 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14323
14324         * mini-arm.h: work around what looks like a gcc bug when optimizations
14325         are enabled.
14326
14327 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14328
14329         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14330         conditionals.  Use ...
14331         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14332
14333 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14334
14335         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14336         to determine the amount of memory to copy when passing valuetypes.
14337
14338         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14339         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14340
14341 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14342
14343         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14344         information about aot.
14345
14346 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14347
14348         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14349         macros. This will allow a deadlock debugger to easily be plugged
14350         in.
14351
14352 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14353
14354         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14355
14356 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14357
14358         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14359         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14360         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14361         ($(arch_built)) [CROSS_COMPILING]: Error out.
14362
14363 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14364
14365         * aot.c: Add support for the no_special_static flag for classes.
14366
14367 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14368
14369         * Reapply reverted patches.
14370
14371         * *: Revert r50174 as well.
14372
14373         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14374
14375 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14376
14377         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14378
14379 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14380
14381         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14382         part of the SIG_HANDLER_SIGNATURE.  
14383
14384 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14385
14386         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14387         statistics.
14388
14389         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14390         introduced by previous patch.
14391
14392 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14393
14394         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14395         saved registers too.
14396
14397         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14398         upon the information returned by get_call_info ().
14399         
14400         * mini-x86.c (add_float): Fix stack size calculation.
14401         (mono_arch_call_opcode): Rewrite this so it works based up the
14402         information returned by get_call_info ().
14403         (mono_arch_get_this_vret_args): Ditto.
14404
14405 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14406
14407         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14408         in cinfo to determine the registers which need to be used.
14409
14410 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14411
14412         * driver.c (mono_main): Add --server and --desktop flags. 
14413
14414 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14415
14416         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14417         registers as global registers.
14418
14419         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14420         longer needed with the new register allocator.
14421
14422         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14423
14424         * cpu-ia64.md: Remove unused opcodes.
14425         
14426         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14427         
14428 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14429
14430         * cpu-amd64.md: Remove unused opcodes.
14431
14432         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14433         needed with the new register allocator.
14434
14435         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14436         reg-reg moves.
14437
14438 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14439
14440         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14441
14442 2005-09-16  Martin Baulig  <martin@ximian.com>
14443
14444         * exceptions-amd64.c
14445         (throw_exception): Don't call mono_debugger_throw_exception() if
14446         we're a rethrow - see the FIXME in the code.
14447
14448 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14449
14450         * mini.c (mono_init_exceptions): This only works on some architectures.
14451         
14452 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14455         on ia64.
14456
14457         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14458
14459         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14460         now in mini-exceptions.c.
14461
14462 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14463
14464         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14465         now in mini-exceptions.c.
14466
14467 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14468
14469         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14470         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14471
14472         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14473         code into mini-exceptions.c. Add some assertions to it.
14474
14475 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14476
14477         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14478         (<software@solmersa.com>). Fix as errors on windows.
14479
14480 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14481
14482         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14483         method info into the LMF.
14484
14485 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14486         
14487         * mini-ia64.c: Add proper unwind info for method epilogs.
14488
14489         * exceptions-ia64.c: Add some code to help debugging.
14490         
14491         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14492
14493         * mini-exceptions.c: Fix warning.
14494
14495 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14496
14497         * mini.c: Really fix build.
14498
14499         * mini-x86.c mini-amd64.c: Fix build.
14500
14501 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14504
14505         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14506         some Interlocked methods as intrinsics.
14507
14508         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14509         for Thread methods as well.
14510
14511         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14512
14513         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14514
14515         * mini-ia64.c mini-x86.c mini-amd64.c 
14516         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14517         OP_MEMORY_BARRIER.
14518         
14519         * mini.c (mono_init_exceptions): Fix build breakage.
14520
14521 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14522
14523         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14524         of instructions. Use the new ia64_unw_op macros for emitting unwind
14525         info.
14526
14527         * mini.c (mono_init_exceptions): Initialize exception handling
14528         related trampolines at startup.
14529
14530 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14531
14532         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14533
14534 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini.c: Handle type loading errors gracefully during compilation and
14537         throw the appropriate exception.
14538
14539 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14540
14541         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14542         for the mono binary.
14543
14544 2005-09-09  Martin Baulig  <martin@ximian.com>
14545
14546         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14547         the release.
14548
14549 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14550
14551         * mini-arm.h: use emulation for conv.r.un for the release.
14552
14553 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14554
14555         * mini-arm.c, objects.cs: more fixes and tests for them.
14556
14557 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14558
14559         * mini-arm.c: align structures to at least 4 bytes to be able
14560         to keep our current optimized memcpy.
14561
14562 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14563
14564         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14565
14566 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14567
14568         * mini.c: ignore SIGPIPE.
14569
14570 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14573
14574         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14575
14576 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14577
14578         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14579
14580 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14581
14582         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14583         exception handling support.
14584         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14585         patch by Brian Koropoff <briank@marakicorp.com>).
14586
14587 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14588
14589         * mini.c: revert another 'optimization' which breaks when
14590         items on the eval stack need to be saved at a basic block end
14591         (bug #75940).
14592
14593 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14594
14595         * jit-icalls.c: for arrays, ensure we always provide
14596         lower bounds.
14597
14598 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14599
14600         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14601         
14602         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14603
14604 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14605
14606         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14607         arguments in their original register.
14608
14609 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14610
14611         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14612         memset/memcpy.
14613
14614         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14615         when ssapre is enabled.
14616
14617         * inssel-long.brg: Fix bug in previous patch.
14618
14619         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14620         multiplication by a constant.
14621
14622 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14623
14624         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14625         icc.
14626
14627         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14628         saving registers.
14629
14630 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14631
14632         * inssel-arm.brg: apply changes tested by Brian Koropoff
14633         <briank@marakicorp.com>.
14634
14635 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14636
14637         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14638         
14639 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14640
14641         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14642         to the same register if dreg is just a base register.
14643         (print_ins): Improve printing of membase opcodes.
14644
14645         * inssel-x86.brg: Add optimized ldind(reg) rules.
14646
14647         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14648
14649 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14650
14651         * mini.c: when running under valgrind, set the stack bottom for
14652         the GC at the actual approximate stack for the app (fixes running
14653         mono with valgrind).
14654
14655 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14656
14657         * mini.c: do no break at the first valuetype to init found
14658         (fixes bug #75791).
14659
14660 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14661
14662         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14663
14664 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14665
14666         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14667
14668 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14669
14670         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14671
14672 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14673
14674         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14675
14676         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14677         code.
14678
14679         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14680         code.
14681
14682         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14683         methods.
14684
14685 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14686
14687         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14688
14689 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14690
14691         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14692         in the tail recursion optimization.
14693
14694         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14695         debug info into the assembly file.
14696
14697         * iltests.il: Add test for filter regions.
14698
14699         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14700         initial stack of filter regions. Fixes #75755.
14701
14702 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14703
14704         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14705         stack requirements.
14706
14707 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14708
14709         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14710         the check for an already compiled method on non-ia64 platforms.
14711         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14712         proper domain.
14713
14714         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14715
14716         * inssel-x86.brg: Add some optimized call rules.
14717
14718 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14719
14720         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14721         method here.
14722
14723         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14724         mono_arch_patch_delegate_trampoline.
14725
14726         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14727
14728         * mini-trampolines.c: Fix build.
14729
14730         * mini-amd64.h: Add delegate trampolines.
14731
14732         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14733
14734         * inssel-amd64.brg: Add optimized call rules.
14735         
14736         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14737
14738         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14739
14740 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14741
14742         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14743         change.
14744
14745         * mini-ia64.c: Remove LMF fixmes.
14746
14747         * mini-ia64.h: Remove most fields from LMF.
14748
14749         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14750
14751         * mini-trampolines.c: Add support for IA64 function descriptors.
14752
14753         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14754         for IA64 function descriptors.
14755
14756 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14757
14758         * tramp-arm.c: patch the vtable for virtual calls. Added
14759         support code to register/unregister the LMF.
14760         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14761         more LMF work.
14762
14763 2005-08-19  Dick Porter  <dick@ximian.com>
14764
14765         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14766         bit value if needed.
14767
14768 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14769
14770         * mini.c (mini_get_method): Move handling of wrapper data here.
14771
14772         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14773
14774         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14775         virtual.
14776
14777         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14778         bblock->code does not remain empty.
14779
14780 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14781
14782         * arrays.cs: Add regression test for #75832.
14783
14784         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14785         rules. Fixes #75832.
14786
14787         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14788         instruction scheduling.
14789
14790 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14791
14792         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14793
14794 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14795
14796         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14797
14798         * mini-codegen.c: Fix VC build.
14799
14800         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14801
14802 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14803
14804         * mini.h: fix signature for mono_register_opcode_emulation.
14805
14806 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14807
14808         * mini.c: Get rid of most of the helper_sig_... constants using
14809         mono_create_icall_signature ().
14810
14811 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14812
14813         * jit-icalls.c (helper_ldstr): New helper function.
14814
14815         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14816
14817         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14818         throw, load the string using a helper call instead of creating a string object.
14819
14820         * aot.c: Update after LDSTR changes.
14821
14822         * mini.h: Bump AOT file version.
14823         
14824         * aot.c: Save class size info into the AOT file. Print more statistics during
14825         compilation.
14826
14827         * mini.h: Bump AOT file version.
14828
14829         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14830         ordering of disasm cases. Fixes #74957.
14831
14832 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14833
14834         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14835         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14836         the generic code needed for the ARM port.
14837
14838 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14839
14840         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14841         inssel-arm.brg: more ARM features and fixes.
14842
14843 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14844
14845         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14846         ARM port work in progress.
14847
14848 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14849
14850         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14851
14852         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14853
14854         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14855
14856         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14857
14858         * *-ia64.*: Ongoing IA64 work.
14859         
14860         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14861
14862 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14863
14864         * TODO: Remove out-of-data todo stuff.
14865
14866         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14867         dead code.
14868
14869         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14870
14871         * mini.h: Bump corlib version.
14872
14873 2005-07-27  Martin Baulig  <martin@ximian.com>
14874
14875         * mini-codegen.c
14876         (create_copy_ins): Added `const unsigned char *ip' argument; set
14877         `copy->cil_code' from it.
14878
14879 2005-07-27  Martin Baulig  <martin@ximian.com>
14880
14881         * mini-exceptions.c (mono_handle_exception): Don't call
14882         mono_debugger_handle_exception() for filters.
14883
14884 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14885
14886         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14887         as well.
14888
14889 2005-07-26  Martin Baulig  <martin@ximian.com>
14890
14891         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14892
14893         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14894         helper_compile_generic_method() if the method is actually virtual
14895         and non-final.
14896
14897 2005-07-26  Martin Baulig  <martin@ximian.com>
14898
14899         * mini.c
14900         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14901         public; this is now accessed directly by the debugger.
14902         (mono_generic_trampoline_code): Removed.
14903
14904         * debug-mini.c
14905         (mono_debug_init_method): Also add interncalls and wrappers.
14906
14907 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14908
14909         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14910
14911 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14914
14915 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14916
14917         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14918
14919 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14920
14921         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14922         getting TLS offsets on AMD64 too.
14923
14924 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14925
14926         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14927
14928 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14929
14930         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14931         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14932
14933 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14936
14937         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14938         to mini.c.
14939
14940         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14941         mono_sparc_is_virtual_call ().
14942         
14943         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14944
14945         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14946         trampoline parameters.
14947
14948         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14949         
14950         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14951         to mono_arch_get_vcall_slot_addr.
14952
14953         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14954         trampoline code.
14955
14956         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14957
14958 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14959
14960         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14961
14962 2005-07-19  Martin Baulig  <martin@ximian.com>
14963
14964         * exceptions-amd64.c (throw_exception): Call
14965         mono_debugger_throw_exception() here like we're doing it on i386.
14966
14967 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14968
14969         * mini-ia64.c: Add optimized TLS access support.
14970
14971 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14972
14973         * mini-exceptions.c: Ongoing IA64 work.
14974
14975         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14976
14977         * mini.c: Use the default optimization set when embedding. Fixes
14978         #75194.
14979
14980 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14981
14982         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14983         of trampolines to a separate file.
14984
14985         * mini-trampolines.c: New file.
14986
14987         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14988         separate file.
14989         
14990         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14991         amd64/ia64 code.
14992
14993         * mini-codegen.c: Fix cygwin build.
14994
14995 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14996
14997         * mini.c: Add some minor changes needed by the IA64 port.
14998
14999         * *-ia64.*: Ongoing IA64 work.
15000
15001 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
15002
15003         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
15004         trampolines into arch-independent and arch-dependent parts.
15005
15006         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
15007
15008 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
15009
15010         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
15011
15012         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
15013         the xp-regalloc-branch for amd64.
15014
15015         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
15016         xp-regalloc-branch for x86.
15017
15018 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15019
15020         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
15021
15022 2005-07-06  Martin Baulig  <martin@ximian.com>
15023
15024         * mini.c
15025         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
15026         (mono_jit_runtime_invoke): Likewise.
15027
15028 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15029
15030         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
15031         on x86 too.
15032         
15033         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
15034         without loading their metadata. Reorganize the file format so exception handling+
15035         debug info is kept separate from normal method info. Create MonoJitInfo 
15036         structures for methods lazily.
15037
15038         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
15039         loading metadata.
15040         (x86_class_init_trampoline): Patch AOT class init trampolines too.
15041
15042         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
15043
15044         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
15045         in AOT code.
15046
15047         * mini.h: Bump AOT file version.
15048
15049 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15050
15051         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15052
15053 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15054
15055         * Makefile.am (check-local): Call semdel-wrapper.
15056
15057 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15058
15059         * mini-x86.c: Revert the last change as it seems to break the build..
15060
15061 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15062
15063         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15064         
15065         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15066
15067 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15068
15069         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15070         outside of the macro, so strange stuff doesn't happen with gcc4
15071         (NEW_AOTCONST_TOKEN): Likewise.
15072
15073 2005-06-28  Martin Baulig  <martin@ximian.com>
15074
15075         * mini.c (mini_class_is_system_array): New static method; use this
15076         instead of `klass->parent == mono_defaults.array_class' everywhere
15077         since this also works for the new generic array class.
15078
15079 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15080
15081         * inssel.brg: Remove warnings.
15082
15083 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15084
15085         * mini-ia64.c: Ongoing IA64 work.
15086
15087         * basic-float.cs: Add float->i1 conversion test.
15088
15089         * iltests.il: Add conv.u4 test.
15090
15091 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15092
15093         * inssel-long.brg: Fix bug caused by last change.
15094
15095 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15096
15097         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15098         BSDs.  Allows the x86 JIT to work on OSX86
15099
15100 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15101
15102         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15103         u4->i8 conversion.
15104
15105         * mini-ia64.c: Ongoing IA64 work.
15106
15107 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15108
15109         * mini-ia64.c: Ongoing IA64 work.
15110
15111         * driver.c: Clean up jit_code_hash as well when using --regression.
15112
15113         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15114
15115         * basic-long.cs: Add tests for long->u4 conversion.
15116
15117 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15118
15119         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15120         that we do not depend on undefined C behavior: the order stuff
15121         gets evaluated within an expression. Fixes mono when compiled on
15122         GCC 4.
15123
15124 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15125
15126         * *-ia64.*: Ongoing IA64 work.
15127
15128         * aot.c: Lower memory usage while loading AOT methods.
15129
15130         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15131
15132         * mini.h: Bump AOT file format version.
15133
15134 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15135
15136         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15137
15138 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15139
15140         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15141         not on callee assembly). Fixed some comments.
15142
15143 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15144
15145         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15146         it gets proper disassembly.
15147         (emit_method_info): Remove some dead code.
15148
15149         * mini.c (mini_method_compile): Allways allocate the GOT var in
15150         mono_method_to_ir for emulating opcodes.
15151
15152 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15153
15154         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15155         before freeing the code memory. Fixes #74990.
15156
15157         * objects.cs: Add regression test for #74992.
15158
15159         * liveness.c: Extend live ranges of arguments to the beginning of the
15160         method. Fixes #74992.
15161
15162         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15163         so it points into the faulting instruction.
15164
15165 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15166
15167         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15168
15169         * *-ia64.*: Ongoing IA64 work.
15170
15171         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15172
15173 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15174
15175         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15176
15177         * *-ia64.*: Ongoing IA64 work.
15178
15179 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15180
15181         * basic-long.cs: Add tests for add/sub.ovf.
15182
15183         * basic.cs: Add tests for sub.ovf.
15184
15185         * *-ia64.*: Ongoing IA64 work.
15186
15187 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15188
15189         * *-ia64.*: Ongoing IA64 work.
15190
15191         * basic.cs: Add conv.ovf.i4.un test.
15192
15193 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15194
15195         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15196         
15197 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15198
15199         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15200
15201 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15202
15203         * *-ia64.*: Ongoing IA64 work.
15204
15205 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15206
15207         * trace.[ch]:
15208         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15209
15210 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15211
15212         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15213
15214 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15215
15216         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15217
15218         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15219         of a call is callable by a near call.
15220
15221 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15222
15223         * mini-ia64.c: Ongoing IA64 work.
15224
15225 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15226
15227         * genmdesc.c: Make the generated array non-static.
15228
15229         * inssel-long.brg: Fix LSHR_IMM rule.
15230
15231         * *-ia64.*: Ongoing IA64 work.
15232
15233         * *-ia64.*: Ongoing IA64 work.
15234
15235 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15236
15237         * *-ia64.*: Ongoing IA64 work.
15238
15239         * *-ia64.*: Ongoing IA64 work.
15240         
15241         * mini-ia64.c: Ongoing IA64 work.
15242
15243         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15244
15245 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15246
15247         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15248         
15249         * objects.cs basic-long.cs: Move some tests to objects.cs.
15250
15251 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15252
15253         * *-ia64.*: Ongoing IA64 work.
15254
15255         * iltests.il: Add a new test.
15256
15257         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15258         newobj. Fixes #75042.
15259
15260 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15261
15262         * *-ia64.*: Ongoing IA64 work.
15263         
15264         * *-ia64.*: Ongoing IA64 work.
15265         
15266         * *-ia64.*: Ongoing IA64 work.
15267
15268         * basic.cs objects.cs: Move tests accessing static variables as well.
15269
15270         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
15271
15272 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
15273
15274         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
15275
15276         * driver.c: Always print failed tests.
15277
15278         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
15279         frame pointer.
15280
15281         * *ia64*: Ongoing IA64 work.
15282
15283 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15284
15285         * basic.cs: Add tests for add.ovf. Fix warnings.
15286
15287 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15288
15289         * driver.c (mono_main): Avoid crash if no argument is passed to
15290         --break;  Do not use g_error, but f_printf.   And fix all other
15291         ocurrences of the same crash.
15292
15293 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15296         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15297         Fixes #74742.
15298
15299 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15300
15301         * *-ia64.*: Add beginnings of IA64 backend.
15302
15303         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15304
15305 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15306
15307         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15308         Fixes #74925.
15309
15310         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15311
15312         * mini-amd64.c: Fix a warning.
15313
15314 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15315
15316         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15317         in float_neg. Fixes #74897.
15318
15319         * mini-amd64.c (emit_call): Fix another near call bug.
15320
15321 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15322
15323         * declsec.c: Keep the appdomain information in the structure. Added a 
15324         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15325         value gets overwritten).
15326         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15327         an MonoAppDomain member to MonoSecurityFrame.
15328         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15329         used in the stack walk. Now use a MonoArray which grow (double) when
15330         it gets full.
15331
15332 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15333
15334         * mini.c: Re-enabled runtime cleanup, since running threads should
15335         now properly stop when exiting.
15336
15337 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15338
15339         * mini-codegen.c: New file contaning the arch-independent local
15340         register allocator. Not used by any architectures yet.
15341
15342         * mini.h linear-scan.c: Merge some changes from the 
15343         mini-xp-local-regalloc branch.
15344
15345 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15346
15347         * mini-amd64.c (emit_call): Fix calls to native functions when the
15348         runtime is compiled as a shared library. Fixes #74756.
15349
15350         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15351         on a literal field. Fixes #74751.
15352
15353 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15354
15355         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15356
15357 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15358
15359         * objects.cs: Add missing null casting test.
15360
15361 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15362
15363         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15364         in wrapper methods. Also rename 'address' variable to 'offset'.
15365
15366 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15367
15368         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15369         warnings.
15370         
15371         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15372
15373         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15374         work on windows.
15375
15376 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15377
15378         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15379
15380 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15381
15382         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15383         just the last bytes.
15384
15385 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15386
15387         * aot.c (mono_compile_assembly): Fix warning.
15388
15389         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15390         by the _MSC_VER stuff.
15391
15392 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15393
15394         * inssel-long.brg: Fix #74588.
15395
15396         * cpu-amd64.md: Fix #74591.
15397
15398         * iltests.il: Add new regression tests.
15399
15400 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15401
15402         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15403         valuetype.
15404
15405 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15406
15407         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15408
15409         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15410         from Bill Middleton <flashdict@gmail.com>.
15411
15412 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15413
15414         * arrays.cs: Add new regression test. Fix warnings.
15415
15416 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15417
15418         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15419         and leakage in CKFINITE.
15420
15421         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15422         this to a null op since it is called on amd64 too.
15423
15424         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15425
15426         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15427         body since this is not used on amd64.
15428         
15429         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15430
15431         * mini-amd64.c: Remove obsolete fixmes.
15432
15433         * mini.c (print_method_from_ip): Fix debugging support.
15434
15435 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15436
15437         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15438         so that expressions that don't give much gain are not reduced.
15439         * ssapre.h: Likewise.
15440
15441 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15442
15443         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15444
15445         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15446
15447         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15448
15449 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15450
15451         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15452
15453         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15454
15455 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15456
15457         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15458         stack touching.
15459
15460         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15461
15462         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15463
15464         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15465
15466         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15467         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15468
15469         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15470
15471         * mini-x86.c: Fix up stack overflow handling.   
15472
15473         * exceptions.cs: Add new regression test.
15474
15475 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15476
15477         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15478         mono_jit_thread_attach.
15479
15480         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15481
15482 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15483
15484         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15485         avoid calling constructors using callvirt.
15486
15487         * inssel.brg: Fix #74073.
15488
15489 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15490
15491         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15492         compilation with non-GCC compilers.
15493         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15494         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15495
15496 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15497
15498         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15499         klass->interface_offsets (will likely fix bug#74073).
15500
15501 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15502
15503         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15504
15505 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15506
15507         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15508         to amd64_div_reg_size ().
15509         
15510         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15511
15512 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15513
15514         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15515
15516 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15517
15518         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15519
15520 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15521
15522         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15523         
15524         * mini.c (mono_precompile_assembly): Load and precompile referenced
15525         assemblies as well. Fixes #74015.
15526
15527 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15528
15529         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15530
15531 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15532
15533         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15534         a lot of checks and (anyway) permissions cannot work until corlib is 
15535         loaded.
15536
15537 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15538
15539         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15540
15541 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15542
15543         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15544         calls (fixes bug#72824).
15545
15546 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15547
15548         * mini.c: fix tail recursion elimination (see test in bug#73936).
15549
15550 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15551
15552         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15553         some fp functions in sse2 mode.
15554
15555 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15556
15557         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15558
15559 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15560
15561         * mini.h mini.c: Add mono_get_jit_tls_key ().
15562
15563         * mini-x86.c: Enable fast TLS support on windows.
15564
15565 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15566
15567         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15568         * mini.c: Check for p/invoke method when generating code. If a
15569         p/invoke method, or it's class, isn't decorated with [Suppress
15570         UnmanagedCodeSecurity] then generate code to call System.Security.
15571         UnmanagedDemand (only if the security manager is active).
15572
15573 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15574
15575         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15576         last change as it seems to cause strange crashes.
15577         
15578 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15579
15580         * *.c: handle unsafe function pointers where needed.
15581
15582 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15583
15584         * mini.c (mono_jit_free_method): Remove the fixme too.
15585
15586 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15587
15588         * mini.c: As discussed, make the code actually free the delegate
15589         thunk now, to enable the debugging of delegate problems, use
15590         MONO_DEBUG=1 when running Mono. 
15591
15592         This takes also care of parts of the leaks as seen by Joe.
15593
15594 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15597         thread_tls_offset calculation.
15598
15599 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15600
15601         * declsec.c: Reworked linkdemand checks for icall. The previous code
15602         was using the declaration code (untrusted) and didn't work as expected
15603         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15604         specific case.
15605
15606 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15607
15608         * iltests.il: Add new localloc test.
15609
15610         * mini-amd64.c: Handle large stack allocations the same way as on
15611         windows if stack overflow handling is working.
15612         
15613         * mini-amd64.c: Allocate the signal stack using mmap.
15614
15615         * mini.c (sigsegv_signal_handler): Fix reading of context.
15616
15617         * mini-exceptions.c: Fix up stack overflow handling.
15618
15619         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15620
15621         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15622
15623         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15624
15625         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15626
15627         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15628         tramp_init functions as they are no longer needed.
15629
15630 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15631
15632         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15633         
15634         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15635
15636         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15637         
15638         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15639         support that now.
15640
15641         * mini-ops.h: Add OP_LMUL_IMM.
15642
15643         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15644         long mul/div opcodes as intrinsic.
15645
15646         * mini-amd64.c (emit_call): Handle the case when the callee might be
15647         an AOT method.
15648
15649 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15650
15651         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15652         extra safe.
15653         
15654         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15655
15656         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15657
15658 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15659
15660         * mini.c (mono_codegen): Don't leak here, to help people running
15661         monogrind.
15662
15663 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15664
15665         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15666         conversions in sse2 mode.
15667
15668         * basic-float.cs: Add regression test.
15669         
15670         * mini-amd64.c: Reenable sse2.
15671
15672 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15673
15674         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15675
15676 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15677
15678         * driver.c: Copyright text should include 2005.
15679         
15680 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15681
15682         * cpu-amd64.md (load_membase): Fix more max lengths.
15683
15684 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15685
15686         * cpu-amd64.md (load_membase): Fix max length.
15687
15688         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15689
15690         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15691
15692         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15693         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15694
15695         * basic-float.cs: Add rounding regression test.
15696
15697         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15698
15699 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15700
15701         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15702         structures in registers for pinvoke wrappers.
15703
15704 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15705
15706         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15707
15708 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15709
15710         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15711         wrapper to mono_jit_thread_attach.
15712
15713         * mini.c (mini_jit_thread_attach): New jit icall.
15714
15715         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15716         native->managed wrappers.
15717
15718         * exceptions.cs: Add new regression test.
15719
15720         * mini.c (optimize_branches): Check regions in the cbranch to throw
15721         block case as well. Fixes #73242.
15722
15723 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15724
15725         * mini.c: thread safety fixes.
15726
15727 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15728
15729         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15730         patching stuff, since delegates use jump trampolines so there is
15731         no caller.
15732
15733         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15734         jump trampolines.
15735         
15736         * tramp-amd64.c: Fix build.
15737
15738         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15739         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15740
15741         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15742         Rename this to mono_arch....
15743         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15744
15745         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15746
15747         * mini-amd64.c (emit_call): If both the caller and the callee is
15748         guaranteed to have 32 bit addresses, emit a normal call.
15749
15750         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15751
15752         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15753         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15754         method_ptr inside delegates.
15755
15756 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15757
15758         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15759         invalidated. Fixes #73001.
15760
15761         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15762
15763         * mini-x86.c: Only use stdcall for pinvokes on windows.
15764
15765 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15766
15767         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15768         * mini-x86.c: remove unreliable __thread var offset detection,
15769         use the correct accessors and enable by default.
15770
15771 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15772
15773         * mini.c (mono_jit_free_method): Fix memory leak.
15774
15775 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15776
15777         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15778
15779 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15780
15781         * cpu-amd64.md: Fix lengths of atomic opcodes.
15782
15783 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15784
15785         * driver.c: try to not imply using ICU is any good.
15786
15787 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15788
15789         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15790         functions as inline ops.
15791
15792         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15793         some Interlocked functions as inline ops.
15794
15795         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15796
15797         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15798
15799         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15800
15801         * mini.c: Add support for OP_NOT_TAKEN.
15802
15803         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15804         structures in registers for pinvoke wrappers.
15805
15806         * mini-amd64.c: Fix warnings.
15807
15808 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15809
15810         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15811
15812         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15813
15814         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15815         address instead of loading the address from it.
15816
15817         * mini-x86.c: Add support for returning small structs in registers
15818         on Win32. Fixes part of #70864.
15819         
15820 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15821
15822         * trace.c (get_token): Improve error checking.
15823
15824 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15827
15828 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15829  
15830         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15831         it can be reused for MonoClass.
15832         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15833         _LINKDEMAND.
15834
15835 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15836
15837         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15838         instead of a MonoReflectionMethod. The method information wasn't used
15839         when displaying SecurityException details (but will be now).
15840
15841 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15842
15843         * Makefile.am : windows build fix.
15844
15845 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * iltests.il: Add new regression test.
15848
15849         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15850         #72522.
15851
15852 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15853  
15854         * mini.c: Moved linkdemand check into helper function check_linkdemand
15855         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15856         LDFTN, LDVIRTFTN).
15857
15858 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15859
15860         * declsec.c: Added statistics counter for different kinds of 
15861         LinkDemands.
15862         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15863         (and commented) declaration.
15864         * mini.c: Added statistics counter for security Demand code 
15865         generation. Added display of security statistics.
15866
15867 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15868
15869         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15870         Fix compilation errors under gcc-2.95.
15871
15872 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15873
15874         * mini.c, driver.c: Use the new jit trampoline hashtable
15875
15876 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15877
15878         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15879
15880 2005-02-11  Martin Baulig  <martin@ximian.com>
15881
15882         * debug-mini.c (mono_debug_close_method): Free the line number array.
15883
15884 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15885
15886         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15887         icalls.
15888
15889         * mini.h: Bump AOT file format version. 
15890
15891 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15892
15893         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15894         APTC and P/Invoke.
15895         * declsec.h: Added macros to get/set lazyly initialized security 
15896         informations about assemblies. Added new enum for different type of
15897         possible LinkDemand violation. Added function to check LinkDemands.
15898         * mini.h: Added a field to MonoCompile to hold any security violation
15899         detected when JITting a method (so it can be thrown later).
15900         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15901         and CEE_CALLVIRT. Added code to throw exception at the end of
15902         mini_method_compile (note: the exception is unhandled right now).
15903
15904 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15905
15906         * mini.c, jit-icalls.c: use the managed implementation of
15907         memset for initobj and memset, to avoid managed <-> unmanaged
15908         transitions.
15909
15910 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15911
15912         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15913         optimization if it would need a GOT var.
15914
15915         * basic.cs: Add tests for constant propagation and switch statements.
15916
15917         * ssa.c: Fix out-of-range constant propagation and switch statements.
15918
15919 2005-02-09    <vargaz@freemail.hu>
15920
15921         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15922
15923 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15926
15927 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15928
15929         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15930
15931 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15932
15933         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15934         arithmetic operations.
15935
15936 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15937
15938         * mini-ppc.c: add a workaround for broken user code that
15939         DllImports vararg functions with non-vararg signatures.
15940
15941 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15942
15943         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15944         meaningfull error message for assemblies written in Managed C++.
15945
15946         * tramp-amd64.c mini-amd64.h: Add support for 
15947         create_trampoline_from_token ().
15948
15949         * aot.c mini-x86.c abcremoval.c: Applied patch from
15950         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15951
15952 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15955         which takes a MonoImage/token as parameter instead of a MonoMethod.
15956
15957         * aot.c: Use the new trampoline for initializing vtables.
15958
15959         * aot.c: Add support for ldfld/stfld_remote wrappers.
15960
15961         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15962         rules for compare <MEM>, IMM.
15963
15964         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15965
15966         * aot.c: Handle inherited finalizers correctly.
15967
15968 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15969
15970         * inssel.brg (stmt): Add a missing _setup_... ().
15971
15972         * aot.c: Save some parts of the class state to the AOT file and use it
15973         to recompute that state when a class is initialized.
15974
15975         * mini.c: Install AOT hooks into the runtime.
15976
15977         * mini.h: Bump AOT file format version.
15978         
15979         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15980         Fixes #72148.
15981
15982         * iltests.il: Add new test.
15983
15984 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15985
15986         * mini.c: fix typo.
15987
15988 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15989
15990         * mini.c: setup the statistical profiler in the thread attach
15991         callback to cope with the new single thread code.
15992
15993 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini-ppc.c: ensure we have enough room for the profiler
15996         calls (fixed bug#72084).
15997
15998 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15999
16000         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
16001         it.
16002
16003 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16004
16005         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
16006
16007 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16008
16009         * ssapre.c: Fixed an issue with down safety (this allows IronPython
16010         to succesfully execute parrotbench).
16011         * ssapre.h: Likewise.
16012
16013 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16014
16015         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
16016         variable for stores to method arguments (fixes a SSAPRE issue).
16017
16018 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16019
16020         * mini.c: handle value types in dup, fixes gen-112.cs.
16021
16022 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
16023
16024         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
16025         sequence for calls in dynamic methods to avoid thunks.
16026
16027 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16028
16029         * mini.c: correctly remove dynamic methods from the hashtable.
16030
16031 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16032
16033         * driver.c: Disabled SSAPRE until fix the bug that appears
16034         in IronPython's parrotbench.
16035
16036 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
16039
16040         * mini.c (mono_method_to_ir): Revert the previous change.
16041         
16042         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
16043         when AOT compiling.
16044
16045         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
16046         mono_jit_info_table_find () etc. when running under valgrind.
16047
16048         * inssel.brg: Fix warnings.
16049
16050         * mini-exceptions.c: Fix warnings.
16051
16052 2005-01-31  Martin Baulig  <martin@ximian.com>
16053
16054         * driver.c (compile_all_methods_thread_main): Don't try to compile
16055         generic methods or anything which has type parameters.
16056
16057 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16058
16059         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16060
16061         * TestDriver.cs: Add --verbose flags.
16062
16063         * graph.c ssa.c: Fix 64 bit warnings.
16064         
16065         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16066         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16067         Fix 64 bit warnings.
16068
16069         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16070         variable not spotted by gcc.
16071         
16072         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16073         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16074         X86_COMPARE_MEMBASE opcodes.
16075
16076         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16077
16078 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16079
16080         * *: MonoMethod->signature might be NULL now. You *MUST* use
16081         mono_method_signature.
16082
16083 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16084
16085         * driver.c (compile_all_methods_thread_main): Compile the methods
16086         without invoking cctors.
16087
16088 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16089
16090         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16091         * basic-calls.cs: test for the above.
16092
16093 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16094
16095         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16096         MonoJitInfo changes.
16097
16098 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16099
16100         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16101         eagerly if it contains dynamic methods.
16102         
16103         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16104
16105         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16106         trace, it is now computed by an icall from trace_ips.
16107         
16108         * mini-exceptions.c: Fix a warning.
16109
16110 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16111
16112         * mini-exceptions.c: don't bother getting stack trace info if
16113         it's not going to be used.
16114
16115 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16116
16117         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16118         ssapre-mini-ops.h.
16119
16120 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16121
16122         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16123
16124         * aot.c: Avoid calling mono_method_get_header () if not needed.
16125
16126         * mini.h: Bump AOT file format version.
16127         
16128         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16129
16130         * mini.c (mono_print_tree): Print more info for calls.
16131
16132 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16133
16134         * declsec.h: Remove warning by adding missing include for marshal.h
16135
16136 2005-01-26  Martin Baulig  <martin@ximian.com>
16137
16138         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16139         `ip' twice.
16140
16141 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16142
16143         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16144         flags.
16145
16146         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16147
16148         * aot.c (mono_compile_assembly): Fix a warning.
16149
16150 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16151
16152         * declsec.c: Look for security attributes on the original MonoMethod 
16153         (and not the wrapped one). This fix permissions on icalls.
16154
16155 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16156
16157         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16158
16159         * mini.c (mono_allocate_stack_slots): Add a fixme.
16160
16161         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16162
16163 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16164
16165         * inssel.brg: optimize casts of sealed types (more
16166         optimizations waiting for fixes in remoting).
16167
16168 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16169
16170         * inssel.brg (stmt): Add another dummy rule.
16171
16172         * driver.c: Fix warnings.
16173
16174         * driver.c (mono_main): If running under valgrind, instruct glib to use
16175         the system allocation functions so valgrind can track the memory
16176         allocated by the g_... functions.
16177
16178         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16179
16180         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16181
16182         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16183
16184         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16185         variables in try regions.
16186
16187         * mini.c (mini_method_compile): Don't disable optimizations on large
16188         methods when AOT compiling.
16189
16190         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16191         allocate stack slots. Not yet used.
16192
16193 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16194
16195         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16196
16197 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16198
16199         * mini-ppc.c: make the branch info relative as the code
16200         buffer can be reallocated.
16201
16202 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16203
16204         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16205         * driver.c: Removed the AOT/security restriction. Now initialize the
16206         security manager (in metadata) if --security is used.
16207         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16208         rather than the pointer to declarative security, when AOT is used.
16209
16210 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16211
16212         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16213         basic blocks, reduced intrinsic exception throwing code size.
16214
16215 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16216
16217         * driver.c (mini_usage): Reorder the usage screen.
16218
16219 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16220
16221         * mini.c (mono_resolve_patch_target): Fix warning.
16222
16223 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16226         previous patch.
16227
16228         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16229
16230         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16231         breaks the amd64 build.
16232
16233         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16234         register allocation. Fixes #71454.
16235
16236         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16237
16238         * arrays.cs: Add new regression test.   
16239
16240 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16241
16242         * ssapre.c: Turned usage of snprintf to GString.
16243         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16244         (I left it on by mistake in my previous commit).
16245
16246 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16247
16248         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16249         on cond branch optimization (fixes bug# 71515).
16250
16251 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16252
16253         * abcremoval.c: Fixed bug 71062.
16254         * abcremoval.h: Likewise.
16255
16256 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16257
16258         * mini.c: Added a new functionality to optimize_branches, the removal
16259         of useless basic blocks, and fixed some problem in the removal of
16260         critical edges; some utility functions added for both purposes.
16261         * ssapre.c: Added complex expression support, and fixed bug 70637.
16262         * ssapre.h: Likewise.
16263         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
16264         enabled in SSAPRE.
16265         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16266         * driver.c: Re-enabled SSAPRE.
16267
16268 2005-01-19  Martin Baulig  <martin@ximian.com>
16269
16270         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
16271         the result of mono_get_method_constrained().
16272
16273 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
16274
16275         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
16276         manager.
16277
16278 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
16279
16280         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
16281         be detected.  Fixes #59296.
16282
16283 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16284
16285         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16286         which can happen. Fixes #71361.
16287
16288 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16289
16290         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16291         manager.
16292
16293 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16296         appdomain-unload.exe to fail.
16297         
16298         * mini.c: Fix some memory leaks.
16299
16300 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16301
16302         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16303         Fixed bug and sped up some codepaths.
16304
16305 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16306
16307         * mini.c: Fix some memory leaks.
16308
16309         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16310         conversion.
16311
16312         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16313
16314         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16315         #71320.
16316
16317         * iltests.il: Add regression test for #71320.
16318
16319 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16320
16321         * mini.c (mono_codegen): Fix installation of profiler hooks.
16322
16323         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16324
16325 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16326
16327         * mini.h, mini.c, cfold.c: optimize access to enum
16328         readonly fields, too. Eval conditional branches if possible
16329         to perform unreachable code removal in more cases.
16330
16331 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16332
16333         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16334
16335         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16336         code manager.
16337
16338         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16339         WinXP DEP. Fixes #71244.
16340
16341 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16342
16343         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16344
16345 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16346
16347         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16348
16349 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16352         changes.
16353
16354         * mini.h: Bump AOT version.
16355
16356         * mini.h (MonoCompile): Change exvar to a hash table.
16357
16358         * mini.c: Allocate a separate exvar for each handler block.
16359
16360         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16361
16362         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16363         ex var with the pending exception and only throw if the two are equal.
16364         Fixes #68552.
16365         
16366         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16367
16368         * mini-x86.c: Fix warnings.
16369
16370         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16371         used by all the ports now.
16372
16373         * aot.c: Add write-symbols and save-temps options.
16374
16375 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16376
16377         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16378
16379 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16380
16381         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16382         operations.
16383
16384         * tramp-s390.c: Check vtable slot belongs to the domain.
16385
16386         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16387         as per other platforms.
16388
16389         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16390
16391 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16392
16393         * driver.c: we don't run the Main() code in a subthread anymore.
16394
16395 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16396
16397         * mini.c: added experimental rtc support in the statistical
16398         profiler: if the user has the permission, more accurate statistics
16399         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16400         The MONO_RTC value must be restricted to what the linux rtc allows:
16401         power of two from 64 to 8192 Hz.
16402
16403 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16404
16405         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16406
16407 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16408
16409         * mini-ppc.c: better icache flush for smp.
16410
16411 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16412
16413         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16414
16415         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16416         amd64 port, not yet used.
16417
16418 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16419
16420         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16421         a struct type.
16422
16423 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16424
16425         * driver.c: Added --security option to activate the security manager.
16426         Right now this will allow code generation for declarative demands and
16427         is disabled when AOT is specified.
16428         * mini.c: Add code generation for declarative security demands.
16429         * mini.h: Add mono_use_security_manager as an extern gboolean.
16430
16431 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16432
16433         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16434         emitting more dense assembly code.
16435
16436         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16437         exception throwing stuff.
16438
16439 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16440
16441         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16442         dead code.
16443
16444         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16445         left in by mistake.
16446
16447         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16448         fixed.
16449
16450         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16451
16452         * tramp-*.c: Only patch vtable slots if the object is in the current
16453         domain. Fixes appdomain-unload.exe.
16454
16455         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16456         
16457         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16458         x86 branch.
16459
16460 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16461
16462         * mini.c (reverse_branch_op): New helper function.
16463
16464         * mini.c (optimize_branches): Run the new optimization only on 
16465         platforms which support it. Also reverse all kinds of branches.
16466
16467         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16468
16469         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16470         a throw statement.
16471
16472         * mini.c (optimize_branches): Reverse not-equals branches if the false
16473         bblock is a throw. This happens a lot of time with argument checking in
16474         corlib.
16475
16476         * mini.c (mono_codegen): Add support for placing basic blocks after
16477         the function epilogue.
16478
16479         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16480         function epilogue.
16481         
16482 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16483
16484         * mini.c (setup_stat_profiler): Only set this up if the platform
16485         supports ITIMER_PROF.
16486
16487 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16488
16489         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16490         previous patch.
16491
16492         * inssel.brg: Fix a warning.
16493
16494 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16495
16496         * mini.c: added support for statistical profiler 
16497         (run with: --profile=default:stat).
16498
16499 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16500
16501         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16502
16503         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16504
16505         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16506         related to global registers from the amd64 port.
16507
16508 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16509
16510         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16511
16512         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16513         with global registers.
16514         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16515
16516         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16517
16518 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * debug-mini.c (encode_value): Fix off-by-one.
16521
16522         * aot.c (encode_value): Likewise.
16523
16524         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16525
16526 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16527
16528         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16529         AOT.
16530
16531         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16532         
16533         * aot.c (emit_method_info): Increase size of temp buffer.
16534
16535         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16536         the AOT case.
16537
16538 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16539
16540         * aot.c (emit_method_info): Fix build.
16541         
16542         * aot.c: Further rework of the AOT file format to reduce the size of
16543         the method info data.
16544
16545         * mini.h: Bump AOT file format version.
16546
16547 2004-12-27  Martin Baulig  <martin@ximian.com>
16548
16549         * mini.c (mini_get_method): New static method; call
16550         mono_get_method_full() and mono_get_inflated_method().
16551         (mono_method_to_ir): Use mini_get_method() instead of
16552         mono_get_method_full(). 
16553
16554 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16555
16556         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16557
16558 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16559
16560         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16561
16562         * inssel-amd64.brg: Add some optimization rules.
16563
16564 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16565
16566         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16567         standard not GC'd stuff is fine.
16568
16569 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * aot.c: Rework the AOT file format to get rid of most of the global
16572         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16573
16574         * mini.h: Bump AOT file format version.
16575         
16576 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16577
16578         * mini.h: Bump AOT file format version.
16579
16580         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16581         address is inside a GOT.
16582
16583         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16584
16585         * cpu-pentium.md: Increase the maximum size of some instructions which
16586         might involve a got access.
16587         
16588         * mini.c (get_method_from_ip): Another debug helper function.
16589
16590         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16591         when got var accesses are created during the decompose phase.
16592
16593         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16594
16595         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16596         argument mini_compile_method and to MonoCompile, and use this to
16597         determine whenever a given method is compiled for AOT. This allows the
16598         other methods compiled during AOT compilation to be free of AOT stuff,
16599         so the backends does not need to add special support for them by
16600         creating a fake GOT etc.
16601
16602         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16603         longer needed.
16604
16605 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16606
16607         * mini.c (mono_method_to_ir): It turns out that some of the
16608         x-appdomain wrappers are lax with types, so just ignore this for
16609         all wrappers.
16610
16611         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16612         at the vtable->klass. If it is non-shared code we can just use the
16613         vtable.
16614
16615 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16616
16617         * mini-ppc.c: access MonoDomain from tls, too.
16618
16619 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16620
16621         * declsec.c: Removed unused variable (and related warning ;-)
16622
16623 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16624
16625         * iltests.il: New test for LDELEMA on an array of ref types.
16626
16627         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16628         all ldelema's on reftypes.
16629         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16630         it was the wrong place to put it.
16631
16632         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16633         register to pop to make this cleaner, at the request of Paolo.
16634
16635 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16636
16637         * mini-ops.h (OP_GETHASHCODE): New op.
16638
16639         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16640
16641         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16642         operation.
16643
16644         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16645         by 25%.
16646         
16647         * mini-x86.c (mono_arch_output_basic_block): Rather than
16648
16649         add ebp, 4
16650
16651         Emit
16652
16653         pop edx
16654
16655         The first is 3 bytes while the second is 1. This saves 36 kb on
16656         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16657         see a small boost because of icache locality.
16658
16659         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16660
16661 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16662
16663         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16664         started code sharing with the generic code.
16665
16666 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16667
16668         * mini-ppc.c, cpu-g4.md: added code for direct access to
16669         tls data slots.
16670
16671 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16674          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16675         to OP_TLS_GET.
16676
16677 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16678
16679         * declsec.c|h: Added functions to cache the declarative stack modifiers
16680         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16681         structure.
16682         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16683         created. Register internal calls for System.Security.SecurityFrame::
16684         _GetSecurityFrame and _GetSecurityStack.
16685         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16686         the definitions for the new stack walk/callback mechanism.
16687         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16688         first security frame for LinkDemands and InheritanceDemands) and
16689         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16690         from lupus.
16691         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16692         walk initialization (lupus).
16693
16694 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16695
16696         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16697         idiom.
16698         (handle_loaded_temps): Do not create a temporary variable for
16699         things that we know are temps. They will never be modified.
16700         (mono_spill_call): Set MONO_INST_IS_TEMP
16701         (mono_emulate_opcode): ditto
16702         (emit_tree): ditto
16703         (mono_method_to_ir.CEE_DUP): ditto
16704
16705 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16706
16707         * mini.c (type_to_eval_stack_type): Make this handle the void type
16708         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16709         (emit_tree): use ip_in_bb to special case some common idioms
16710         Update all callers to pass in the IP.
16711         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16712
16713         This gives us a nice 2% speedup in mcs bootstrap.
16714
16715         * mini-x86.c (peephole_pass): Peephole pass to make
16716         mov  [foo], eax
16717         push [foo]
16718
16719         into
16720
16721         mov [foo], eax
16722         push eax
16723
16724         * mini.c (ip_in_bb): new method.
16725         (mono_method_to_ir): use this method rather than doing the hash
16726         lookup ourselves.
16727
16728         * linear-scan.c (mono_linear_scan): When expiring actives, you
16729         don't need to keep around variables that expire on this
16730         instruction. This makes it so that:
16731              a = b + 1
16732         will turn into:
16733              store (ebx add (ebx, 1))
16734         which will become
16735              add ebx, 1
16736
16737 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16738
16739         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16740         combination to avoid doing two copies. Fix up problems with previous
16741         patch.
16742
16743         * mini.c: Fix 64 bit warnings.
16744
16745         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16746
16747 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16748
16749         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16750         changes from the x86 code.
16751
16752         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16753
16754 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16757         throwing code to reduce its size, unify the AOT and non-aot code and 
16758         get rid of relocations in the AOT case.
16759
16760         * mini-x86.h mini.c exceptions-x86.c 
16761         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16762         raise corlib exceptions which doesn't require relocations in the 
16763         caller.
16764
16765         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16766
16767 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16768
16769         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16770         needed.
16771
16772         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16773         in the AOT case.
16774
16775 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16776
16777         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16778         with add function when used from Inc/dec atomic 
16779         functions. Re-enabled optimization on x86.
16780         * mini-ops.h: renamed atomic_add functions to
16781         allow _add to match the Interlocked::Add and
16782         _add_next to match Interlocked::Inc/Dec.
16783
16784 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16785
16786         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16787         linking of BBs to the end BB, and enabled SSAPRE also with
16788         consprop and copyprop (which was prevented by that bug).
16789
16790 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16791
16792         * mini-x86.c: disabling the Interlocked optimizing code. 
16793
16794 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16797         file version check.
16798         
16799 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16800
16801         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16802         interlocked optimization due lack of support on x86, rewrote 
16803         exchange to take into account that base may be in eax.
16804         
16805         xsp works again; activated Interlocked optimizing code.
16806         
16807 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16808
16809         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16810
16811 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16812
16813         * mini-ops.h: Add new opcodes.
16814
16815         * mini.h: Add new patch types. Add got_var to MonoCompile.
16816
16817         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16818         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16819         make it work with all kinds of patchable code.
16820
16821         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16822         address of the GOT, and referencing entries in the GOT.
16823
16824         * mini.c: Add code to load the GOT address if needed by an opcode.
16825
16826         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16827         independent AOT code on the x86 using an elf-style Global Offset Table.
16828
16829 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16830
16831         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16832
16833 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16834
16835         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16836         when running xsp.
16837
16838 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16839
16840         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16841         of Interlocked:Increment/Decrement/Add as inline ops.
16842         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16843
16844 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16845
16846         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16847         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16848
16849 2004-12-12  Duncan Mak  <duncan@ximian.com>
16850
16851         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16852         again. `patch_info->table_size' is no longer valid after Zoltan's
16853         commit #37636.
16854
16855 2004-12-12  Martin Baulig  <martin@ximian.com>
16856
16857         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16858         if we are the "real" method, ie. not an inlined method inside it.
16859
16860 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16861
16862         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16863         before we look in the special fields table. This fixes
16864         ../tests/thread-static-init.cs.
16865
16866 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16867
16868         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16869         for Array get_Rank and get_Length. Fixes bug #70465.
16870
16871 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16872
16873         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16874         separate structure to reduce the size of MonoJumpInfo.
16875
16876 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16877
16878         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16879
16880 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16881
16882         * mini.c (mini_get_inst_for_method): Changed to allow ports
16883         to return a MonoInst instead of opcode 
16884         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16885         
16886         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16887         Allow ports to return a created MonoInst instead of op-code, will enable
16888         new optimizations.
16889         (renamed mini_get_opcode_for_method to better reflected the functionality)
16890
16891 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16892
16893         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16894
16895 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16896
16897         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16898         Fixes #69985.
16899
16900 2004-12-08  Martin Baulig  <martin@ximian.com>
16901
16902         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16903         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16904
16905 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16906
16907         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16908         correctly.
16909
16910         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16911         arithmetic.
16912
16913 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16914
16915         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16916
16917 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16918
16919         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16920         bug introduced by the previous patch.
16921
16922 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16923
16924         * mini-ppc.c, objectc.cs: handle large structs passed by value
16925         (fixes bug #69972).
16926
16927 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16928
16929         * mini-ppc.c: OP_ARGLIST implementation from
16930         Geoff Norton  <gnorton@customerdna.com>.
16931
16932 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16933
16934         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16935         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16936
16937 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16938
16939         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16940
16941 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16942
16943         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16944         support.
16945
16946 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16947
16948         * mini-sparc.c: Zero out localled-ed memory.
16949
16950         * iltests.il: Add tests for zeroing out localloc-ed memory.
16951
16952 2004-12-04  Martin Baulig  <martin@ximian.com>
16953
16954         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16955         mono_method_get_signature_full().       
16956
16957 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16958
16959         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16960         and some utility functions (always for SSAPRE), integrated SSAPRE.
16961         * mini.h: Likewise.
16962         * driver.c: Added ssapre option.
16963         * ssa.c: Small fix on OP_ARG handling.
16964         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16965         * Makefile.am: Likewise.
16966
16967 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16968
16969         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16970         now in the xp code.
16971
16972         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16973         icall.
16974
16975 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16976
16977         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16978         
16979         * cpu-s390.md : Increase instruction length of oparglist.
16980
16981         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16982
16983 2004-11-30  Martin Baulig  <martin@ximian.com>
16984
16985         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16986         virtual generic methods.  We call a special helper_compile_generic_method()
16987         icall to retrieve the method from the vtable, inflate and compile
16988         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16989
16990         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16991
16992 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16993
16994         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16995
16996 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16997
16998         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16999         Fixes #69929.
17000
17001 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
17002
17003         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
17004         platforms with PIC aot.
17005
17006 2004-11-28  Martin Baulig  <martin@ximian.com>
17007
17008         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
17009         Fixes gen-112.cs.
17010
17011 2004-11-28  Martin Baulig  <martin@ximian.com>
17012
17013         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
17014         the result of mono_type_get_underlying_type() to check whether
17015         we're byref.
17016
17017 2004-11-26  Martin Baulig  <martin@ximian.com>
17018
17019         * mini.c
17020         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
17021         in the g_assert().
17022
17023 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
17024
17025         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
17026         the same way as the other arguments so they won't get clobbered.
17027
17028         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
17029         calls through R11 since it is clobbered by the trampoline code.
17030
17031 2004-11-26  Raja R Harinath  <rharinath@novell.com>
17032
17033         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
17034         pick up in-tree mscorlib.dll.
17035
17036 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17037
17038         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
17039
17040         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
17041         runtime data/code are now stored in a table similar to the GOT in ELF. 
17042         This allows the code itself to be position independent.
17043
17044         * aot.c: Fix loading of referenced assemblies after the lazy assembly
17045         loading changes.
17046
17047         * aot.c: Attach ELF type (object/function) directives to all global
17048         symbols.
17049
17050         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17051
17052         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17053
17054         * mini-amd64.h: Turn on PIC AOT code.
17055
17056         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17057         returning the offset within an OP_AOTCONST instruction where the GOT
17058         offset needs to be added.
17059
17060         * mini.h: Bump AOT file format version.
17061
17062 2004-11-25  Martin Baulig  <martin@ximian.com>
17063
17064         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17065         uninflated generic methods.
17066
17067 2004-11-25  Martin Baulig  <martin@ximian.com>
17068
17069         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17070
17071 2004-11-24  Martin Baulig  <martin@ximian.com>
17072
17073         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17074         original klass (this only applies for generic instances).
17075
17076 2004-11-24  Martin Baulig  <martin@ximian.com>
17077
17078         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17079         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17080         that array).
17081
17082 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17083
17084         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17085         localloc. Fixes #69678.
17086
17087         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17088         
17089 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17092         used SSE registers on pinvoke calls. Fixes #69774.
17093
17094 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17095
17096         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17097         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17098
17099 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17100
17101         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17102         Refer directly to the mcs/ tree.
17103
17104 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17105
17106         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17107         Check if a trampoline for a synchronized method is required. 
17108
17109 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17110
17111         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17112         with localloc if needed. Throe arithmetric exception in
17113         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17114         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17115
17116 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17117
17118         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17119         types before switching on type.  Fixes #69622.
17120
17121 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17122
17123         * Makefile.am (check-local): New.  Integrate into 'make check'.
17124         (MCS,RUNTIME): Define using in-tree mono and mcs.
17125         (ILASM): New.
17126         (%.exe): Use $(ILASM).
17127
17128 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17129
17130         * mini-ppc.c: adjust initial prolog size (bug #69691).
17131
17132 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17133
17134         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17135         #69664.
17136
17137 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17138
17139         * Makefile.am (clean-local): Rename from 'clean'.
17140
17141 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17142
17143         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17144         to mono_arch_is_int_overflow. 
17145         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17146         SIGFPE events.
17147
17148 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17149
17150         * declsec.c|h: New files to support declarative security attributes.
17151         Added function to check if a method has (applicable) security.
17152         * mini.c|h: Add check for declarative security attributes in
17153         mono_method_check_inlining.
17154         * Makefile.am: Added declsec.c and declsec.h to the build.
17155
17156 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17157
17158         * mini.c, mini.h: update to keep dynamic code info per-domain.
17159
17160 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17161
17162         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17163         (mini_init): Get rid of it from here too.
17164
17165 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17166
17167         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17168         implemented OP_RETHROW (patch by Geoff Norton
17169         <gnorton@customerdna.com>).
17170
17171 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17172
17173         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17174         between appdomains.  Fixes appdomain-unload on PPC.
17175
17176 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17177
17178         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17179         mini-exceptions.c: handle the new wrapper types.
17180         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17181         token value as a MonoClass* when compiling a wrapper.
17182         mono_jit_create_remoting_trampoline now takes an additional
17183         MonoRemotingTarget parameter.
17184         
17185 2004-11-10  Martin Baulig  <martin@localhost>
17186
17187         * mini.c (mono_method_to_ir): Use `generic_container->context'
17188         rather than creating a new one.
17189
17190 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17191
17192         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17193
17194         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17195
17196 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17197
17198         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17199         the experimental aot cache stuff.
17200
17201 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17202
17203         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17204         mini-exceptions.c: update to exception clause structure changes.
17205
17206 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17207
17208         * exceptions-x86.c (throw_exception): Fix warnings.
17209
17210         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17211         for OP_RETHROW.
17212
17213 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17214
17215         * exceptions-sparc.c (get_throw_exception): Really fix this.
17216
17217 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17218
17219         * tramp-*.c: we no longer support icalls without wrappers, so
17220         a bit of code can be removed here
17221
17222 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17225         patch.
17226
17227         * cpu-sparc.md: Add op_rethrow.
17228
17229         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17230
17231         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17232
17233         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17234         * mini-ops.h: Add OP_RETHROW.
17235
17236         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17237
17238         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17239
17240 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17241         
17242         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17243         Makes the output much easier to read
17244
17245 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17246
17247         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17248         prevents another huge leak when compiling with ssa. Secondly, the
17249         performance of doing this rather than freeing the lists is much
17250         better. GList does a lock every time you allocate a list link,
17251         so that it can use a memory pool. So, it is better to just use
17252         a memory pool of our own.
17253         
17254         * ssa.c, linear-scan.c: replace g_list_remove_link with
17255         g_list_delete.  The remove one does not free the GList, so we were
17256         leaking memory. On -O=all --compile-all with corlib, this cut down
17257         3 MB of allocations.
17258
17259 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17262
17263         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
17264
17265         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
17266         into a new function mono_create_jit_trampoline ().
17267
17268 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17269
17270         * trace.c (get_spec): Allow tracing of classes without a namespace.
17271
17272 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
17273
17274         * mini.c: Fix pointer overwrite in mini_method_compile.
17275
17276 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
17277
17278         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
17279         The darwin ABI needs some special handling for 1 and 2 byte structs
17280         Lets use lbz/lhz instead of lwz everywhere.
17281         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
17282         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
17283         Use stb/sth for the former, and put the latter always on stack instead of in
17284         argument registers.
17285
17286 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17287
17288         * trace.c (is_filenamechar): Add '_'.
17289
17290 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17291
17292         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17293
17294         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17295
17296 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17297
17298         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17299         depends on libmonogc. Fixes #68805.
17300
17301 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17302
17303         * mini.c (mono_jit_free_method): Provide extra information for
17304         this error.  Currently this leaks, but will be turned into a
17305         developer option in the future.
17306
17307 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17308
17309         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17310
17311 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17314         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17315         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17316
17317 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17318
17319         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17320         trampolines for AOT code.
17321
17322 2004-10-22    <vargaz@freemail.hu>
17323
17324         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17325         constructed types. Fixes #68136.
17326
17327 2004-10-21  Martin Baulig  <martin@ximian.com>
17328
17329         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17330         if it returns true, unwind the stack to the call instruction.
17331
17332 2004-10-21    <vargaz@freemail.hu>
17333
17334         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17335
17336         * mini.h: Bump AOT version number.
17337
17338         * objects.cs: Add another test for unbox trampolines.
17339
17340         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17341         valuetype methods.
17342
17343 2004-10-20    <vargaz@freemail.hu>
17344
17345         * driver.c: Add SHARED to the set of optimizations tested.
17346
17347         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17348
17349         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17350         used by CEE_NEWARR.
17351
17352         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17353
17354 2004-10-20  Martin Baulig  <martin@ximian.com>
17355
17356         * mini-exceptions.c (mono_handle_exception): Call
17357         mono_debugger_handle_exception() to tell the debugger about
17358         catch/finally clauses.
17359
17360 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17361
17362         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17363
17364         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17365         #68447.
17366
17367 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17368
17369         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17370         methods as their native size, fixed bug #57543, #57545.
17371         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17372         This saves a temporary register and mullw call down into 1 (minor perf
17373         increase for cases like sum = sum * 5;  This use to translate into:
17374             li r11,5
17375             mullw r28,r28,r11
17376         It now translates to
17377             mulli r28,r28,5
17378
17379 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17380
17381         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17382         #68388.
17383
17384 2004-10-11  Martin Baulig  <martin@ximian.com>
17385
17386         * mini.c (mono_method_to_ir): If we're a generic method, get the
17387         MonoGenericContainer from our MonoMethodNormal and create a
17388         MonoGenericContext from it.
17389
17390 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17393
17394         * basic-long.cs: Add test for checked i8->i2 cast.
17395
17396 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17397
17398         * inssel-ppc.brg: added a couple of speedup rules.
17399
17400 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17401
17402         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17403         to speed up rebuilds.
17404
17405 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17406
17407         * mini-s390.c: Minor fix to OP_OR_IMM.
17408
17409 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17410
17411         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17412         better. Fixes appdomain-unload.exe on sparc.
17413
17414 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17415
17416         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17417         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17418         see bug 67324.
17419
17420 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17421
17422         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17423
17424 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17425
17426         * mini.c: Always generate a field read/write wrapper for members
17427         of the class MarshalByRefObject since the actual instance could
17428         be a CBO.
17429
17430 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17431
17432         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17433
17434 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17435
17436         * driver.c mini.h trace.c: Move the setting of the main assembly into
17437         a separate function called mono_trace_set_assembly () and call it after
17438         actually loading the main assembly. Fixes #66872.
17439
17440 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17441
17442         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17443         using the code manager.
17444
17445 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17446
17447         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17448
17449 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17450
17451         * cpu-amd64.md: Fix bug in previous patch.
17452         
17453         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17454         #66650.
17455
17456 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17457
17458         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17459         mini-exceptions.c: updates for changed stack walk interface.
17460
17461 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17462
17463         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17464
17465 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17466
17467         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17468
17469 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17470
17471         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17472         since assemblies can't be unloaded.
17473         
17474 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17475
17476         * cpu-amd64.md: Fix more instruction lengths.
17477
17478         * cpu-amd64.md: Fix lengths of some instructions.
17479
17480 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17481
17482         * inssel.brg: Make the array ldelema check aot friendly.
17483
17484 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17485
17486         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17487
17488         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17489
17490 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17491
17492         * mini-x86.c: Fix build.
17493
17494         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17495         mono_type_get_underlying_type () helper function to simplify code.
17496         
17497 2004-09-09  Martin Baulig  <martin@ximian.com>
17498
17499         * mini-amd64.c: Don't access `type->data.klass' directly, call
17500         mono_class_from_mono_type() instead since the type may be a
17501         generic instance.
17502
17503 2004-09-09  Martin Baulig  <martin@ximian.com>
17504
17505         * mini-amd64.c (get_call_info): Fix support for generic instances.
17506         (add_valuetype): Use mono_class_from_mono_type() to get the class
17507         since we can be a generic instance.
17508
17509 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17510
17511         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17512
17513 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17514
17515         * liveness.c: reset spill costs on each scan: bug 62107
17516
17517 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17518
17519         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17520         unnecessary line that doesn't compile
17521
17522 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17523
17524         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17525         trampolines, make them call an error function so people can fix their
17526         code.
17527
17528 2004-09-06  Martin Baulig  <martin@ximian.com>
17529
17530         * mini.c (mono_method_to_ir): When initializing locals, handle a
17531         generic instances like a valuetype if it's a valuetype and like a
17532         class if it's a class.
17533
17534 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17535
17536         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17537         stack. Fixes #64674.
17538
17539         * exceptions.cs: Add test for unwinding of call arguments.
17540
17541 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17542
17543         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17544         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17545         set the carry/borrow flag). The sparc and s390 implementations
17546         can now use optimized versions (and simplify the code). ppc bugfixes.
17547
17548 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17549
17550         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17551
17552 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17553
17554         * inssel-amd64.brg: Remove leftover 32 bit rule.
17555
17556         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17557
17558 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17559
17560         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17561         mono_arch_find_jit_info functions into a new function. Fix a memory
17562         leak.
17563
17564         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17565         refactored code.
17566         
17567 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17568
17569         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17570         as well.
17571         
17572         * exceptions.cs: Add array size tests.
17573
17574         * mini.c: Allocate a separate icall wrapper for each arity of 
17575         mono_array_new_va. Fixes #59509.
17576
17577         * exceptions.cs: Add testcase for 64578.
17578
17579         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17580
17581         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17582         
17583 2004-09-02  Martin Baulig  <martin@ximian.com>
17584
17585         * mini.c (mono_method_to_ir): When initializing the locals, call
17586         handle_initobj() on the generic instance itself, not its
17587         underlying type.
17588
17589 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17590
17591         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17592         MonoJitInfo for dynamic methods.
17593
17594         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17595
17596         * mini.c: Add support for freeing JIT data for dynamic methods.
17597         
17598 2004-09-01  Martin Baulig  <martin@ximian.com>
17599
17600         * mini-x86.c (is_regsize_var): Added support for generic
17601         instances.
17602         (mono_arch_emit_prolog): Make this compile again, use
17603         `x86_push_imm_template (code)'.
17604
17605 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17606
17607         * mini-x86.c: make all push_imm instructions that get
17608         patched always emit the long form
17609
17610 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17611
17612         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17613         in a per-domain hash.
17614
17615         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17616         types.
17617
17618 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17619
17620         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17621         work.
17622         
17623         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17624         work.
17625
17626         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17627         Beginnings of SSE2 support.
17628
17629         * exceptions.cs: Add more tests for checked int<->uint casts.
17630
17631 2004-08-28  Martin Baulig  <martin@ximian.com>
17632
17633         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17634         generic instances.
17635
17636         * mini.c
17637         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17638         Handle generic instances recursively.
17639
17640 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17641
17642         * iltests.il: test for conv.u8 on a constant
17643
17644 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17645
17646         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17647         LCONV_x4 (shrun_32 (membase)).
17648
17649 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17650
17651         * inssel-x86.brg: c&p rules for push/setret of long
17652
17653 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17654
17655         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17656         compare (regvar, base)
17657
17658         * inssel-x86.brg: more burg love
17659
17660         * inssel.brg: more cleanup
17661
17662         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17663
17664 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17665
17666         * basic-long.cs, basic-calls.cs: new tests for optimization.
17667
17668 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17669
17670         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17671         patch.
17672
17673 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17676         
17677 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17678
17679         * inssel.brg (mini_emit_memcpy): use 
17680         NO_UNALIGNED_ACCESS to disable memcpy optimization
17681
17682 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17683
17684         * mini-amd64.c: Handle generic types in various places.
17685
17686         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17687
17688 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17689
17690         * mini.c (handle_box): Fix warning.
17691
17692         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17693
17694         * mini-amd64.h: Enable the emit_state optimization.
17695
17696         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17697
17698         * mini-amd64.c: Add some new 64 bit peephole opts.
17699
17700         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17701
17702         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17703
17704         * mini-amd64.c: Register allocator fixes.
17705
17706         * mini.c: Add an optimization to emit_state to avoid allocation of new
17707         registers on some platforms.
17708
17709 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17710
17711         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17712
17713         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17714         allocation. Fixes #63085.
17715
17716         * basic-long.cs: Add new regression test.
17717
17718         * mini-amd64.c: Register allocator improvements.
17719
17720 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17721
17722         * mini-amd64.c (read_tls_offset_from_method): Add another code
17723         sequence.
17724
17725         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17726         instruction sequence for nullifying class init trampolines.
17727
17728         * objects.cs: Add new regalloc test.
17729
17730         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17731
17732 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17733
17734         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17735         
17736         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17737         arguments.
17738
17739         * driver.c: Fix profiling after TLS changes.
17740         
17741         * driver.c (mono_main): Set mono_stats.enabled if needed.
17742
17743         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17744         CEE_BOX.
17745
17746 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17747
17748         * mini-x86.c: use a 1 op rather than a 2 op tls access
17749         instruction -> faster.
17750
17751 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17752
17753         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17754         x86 backend.
17755
17756 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17757
17758         * exceptions-sparc.c (throw_exception): fix typo
17759
17760 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17761
17762         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17763         set tree->dreg correctly with tls. Allow any
17764         register to be used.
17765
17766         * mini-x86.c (read_tls_offset_from_method): add new code
17767         generation pattern seen with GCC.
17768
17769
17770 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17771
17772         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17773         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17774         exceptions-sparc.c: fix some performance issues in exception
17775         handling and setting of the stack trace for exceptions that were
17776         already thrown.
17777
17778 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17779
17780         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17781         x86 backend.
17782         
17783         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17784         registers.
17785
17786 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17787
17788         This patch inlines tls access, when possible.
17789         
17790         * mini.h: new arch functions for TLS intrinsics.
17791         All platforms updated with a stub.
17792
17793         * mini.c: use the new intrinsics
17794
17795         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17796         arch specific intrinsic for tls variables
17797
17798 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17801         under windows.
17802
17803 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17804
17805         * mini.c: thread local allocation
17806
17807 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17810
17811         * Makefile.am: Link against the static version of libmonogc.
17812         
17813         * Makefile.am: Link the static versions of the convenience libraries
17814         into the mono executable.
17815
17816         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17817
17818 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17821         on integer overflow.
17822
17823         * mini-amd64.c: Reorganize function call code.
17824
17825         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17826
17827 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17828
17829         * inssel-x86.brg: use xor eax,eax.
17830         
17831         * basic.cs: new tests
17832
17833 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17834
17835         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17836         in exception throwing code.
17837         
17838 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17839
17840         * inssel-x86.brg: use xor esi,esi.
17841
17842 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17845         can trace methods compiled during mini_init () too.
17846
17847         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17848         CEE_CONV_U4.
17849
17850 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17851
17852         * Makefile.am: static link on x86 (r=zoltan)
17853
17854 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17855
17856         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17857         code since it causes some programs to fail.
17858
17859 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17860
17861         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17862
17863 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17864
17865         * mini.c: ovfops_op_map - add STACK_OBJ case for
17866         CONV_I 
17867         * basic.cs: add test_0_pin_string as test
17868         case for above.
17869
17870 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17871
17872         * Makefile.am: build C# if srcdir != builddir
17873
17874 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17875
17876         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17877         fall-through blocks.
17878
17879 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17880
17881         * driver.c: enable loop by default again and include abcrem in -O=all.
17882
17883 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17884
17885         * iltests.il: Add some localloc tests.
17886
17887         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17888
17889         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17890         Fixes #62574.
17891
17892         * inssel-amd64.brg: Add some optimizations.
17893
17894         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17895         for gcc-3.4.
17896
17897         * Makefile.am: Statically link mono against libmono on AMD64.
17898         
17899         * mini-amd64.c inssel-amd64.brg: Optimizations.
17900
17901 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17904
17905         * tramp-amd64.c: Patch calling code in trampolines.
17906
17907 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * mini-amd64.c: pinvoke struct passing fixes.
17910
17911 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17912
17913         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17914         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17915
17916 2004-08-05  Duncan Mak  <duncan@ximian.com>
17917
17918         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17919         CEE_LDELEM_ANY.
17920
17921 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17922
17923         * mini-amd64.c (emit_move_return_value): Move return value for normal
17924         calls too.
17925
17926 2004-08-05  Martin Baulig  <martin@ximian.com>
17927
17928         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17929         `type->type'; just modify `type' itself when dealing with enums
17930         and generic instances.
17931         (check_call_signature): Make `simple_type' a `MonoType *'.
17932
17933 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * mini.c: Use OP_PADD to add offsets to addresses.
17936
17937         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17938
17939 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17940
17941         * mini-sparc.c (mono_arch_emit_epilog): fix check
17942         for folding last op into restore instruction
17943
17944 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17945
17946         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17947         helper methods using the code manager.
17948         
17949         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17950
17951         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17952
17953 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17954         
17955         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17956           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17957
17958         * mini-s390.c: fix tail processing
17959
17960 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17961
17962         * mini-ppc.c: mul.ovf.un exception name fix.
17963
17964 2004-08-03  Martin Baulig  <martin@ximian.com>
17965
17966         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17967         instances; before jumping to `handle_enum', also modify `ptype'.
17968
17969 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17970
17971         * cpu-sparc.md: fcall maximal length too small.
17972
17973 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17974
17975         * mini-amd64.c mini.h: Add initial support for passing/returning 
17976         structures to/from pinvoked methods.
17977
17978 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17979
17980         * mini-ppc.c: reg allocator fix.
17981
17982 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17983
17984         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17985
17986         * inssel.brg: Optimize memset on 64 bit machines.
17987
17988         * mini-amd64.c: Fix some vararg cases.
17989
17990 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17991
17992         * mini-s390.c: Corrected macro in emit_float_to_int
17993
17994         * s390-abi.cs: Tests to exercise the s390 ABI
17995
17996 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17999         caller saved regs.
18000
18001         * basic.cs: Add a test for add.ovf.un.
18002
18003 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
18004
18005         * mini-sparc.c: add case for OP_IDIV_UN
18006
18007 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
18010         
18011         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
18012
18013 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
18014
18015         * basic.cs: regression tests.
18016
18017         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
18018         regressions.
18019
18020 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * basic.cs: Add a new test.
18023
18024         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
18025         and AOT. Various fixes and optimizations.
18026
18027         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
18028
18029 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18030
18031         * mini-ppc.c: make sure temp regs are not used for global reg
18032         allocation.
18033
18034 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18035
18036         * cpu-sparc.md: conv_i8 fix for 64bits
18037
18038         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
18039
18040 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
18041         
18042         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
18043         add opcode for cmp BYTE PTR [eax], imm.
18044
18045         * inssel.brg: Make memcpy and memset takes bases.
18046
18047 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * *-amd64.*: More AMD64 work.
18050         
18051 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18052
18053         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18054         add a compare-not-equal opcode.
18055         
18056 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18057
18058         * mini.c: Use mono_init_from_assembly instead of mono_init.
18059         
18060 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18063
18064         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18065
18066         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18067
18068         * inssel.brg: 64 bit fixes.
18069
18070         * mini.h (MonoCallInst): Add some AMD64 specific data.
18071
18072         * mini.h: Add some OP_P opcodes.
18073
18074 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18075
18076         * basic.cs: tests for 61797 and 61740
18077
18078 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18079
18080         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18081         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18082
18083 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18084
18085         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18086
18087         * *-amd64*.*: Ongoing AMD64 work.
18088
18089 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18090
18091         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18092
18093         * *-amd64*: Ongoing AMD64 work.
18094
18095         * mini-arch.h: Add AMD64 support.
18096
18097         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18098
18099         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18100
18101         * mini-ops.h: Add new opcodes.
18102
18103         * Makefile.am: Add AMD64 support.
18104
18105         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18106         rules into the inssel-long*.brg files.
18107
18108         * *-amd64.*: Add beginnings of AMD64 backend.
18109
18110 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18111
18112         * mini.c (print_dfn): commenting out the code that prints
18113         the cil. With -O=deadce, this makes -v -v crash.
18114         
18115         * cpu-pentium.md: make checkthis have a length of 2
18116
18117 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18118
18119         * mini-sparc.h: fix implementations of __builtin
18120         functions for Sun compiler for V9.
18121
18122 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18123
18124         * mini.c: use the new stelem.ref wrapper
18125         * exceptions.cs, arrays.cs: new stelem.ref tests
18126
18127 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18128
18129         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18130         new XSP should work with these changes).
18131
18132 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18133         
18134         * inssel-{long32,x86,}.brg: trivial optimizations.
18135         
18136 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18137
18138         * mini.c: load value when emitting box operation in
18139         constrained calls.
18140
18141 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18142
18143         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18144         is one byte shorter than cmp DWORD PTR [eax], 0.
18145
18146 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18147
18148         * inssel-ppc.brg: arguments on the stack are always
18149         relative to the stack pointer (spotted by Neale Ferguson).
18150
18151 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18152
18153         * exceptions-x86.c: delay appending the method name to the trace until
18154         after mono_jit_info_table_find is called, as this gets the real
18155         MonoMethod.
18156
18157 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18158
18159         * aot.c: register roots
18160
18161 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18162
18163         * aot.c : I could just use PLATFORM_WIN32 flag.
18164
18165 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18166
18167         * aot.c : Reverting the previous fix. This time it broke linux build.
18168
18169 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18170
18171         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18172
18173 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18174
18175         * mini.c (handle_stack_args): Remove some more debugging code.
18176         
18177         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18178
18179         * driver.c mini.h aot.c: Allow additional options to be specified with
18180         --aot and pass them to mono_compile_assembly.
18181
18182         * aot.c: Add experimental code to AOT compile all loaded assemblies
18183         on demand and save the code into a cache in the filesystem.
18184
18185         * aot.c: Add support for more wrapper methods.
18186         
18187         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18188         58863.
18189
18190         * cpu-*.md: Remove removed opcodes.
18191
18192         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18193         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18194         related icalls to marshal.c.
18195
18196 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18197
18198         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18199
18200         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18201
18202         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18203
18204 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18205         * liveness.c: If liveness is recomputated we need to reset the information
18206         for each variable. This way, if the liveness range has been narrowed
18207         by optimizations that happened after the last computation, we can return
18208         a smaller range.
18209         
18210         For example, if you have
18211         
18212         {
18213                 int i = 0;
18214                 
18215                 // Tons of code that does not affect i
18216                 
18217                 i = foo ();
18218                 ...
18219         }
18220         
18221         i = 0 is dead code and will be removed by SSA. However, when
18222         linear scan gets to the code, i will still appear to be live
18223         throughout the entire block. This prevents good register allocation.
18224
18225 2004-07-06  Martin Baulig  <martin@ximian.com>
18226
18227         * debug-mini.c (mono_debug_init_method): Allow
18228         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18229         (mono_debug_add_icall_wrapper): New method.
18230
18231         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18232
18233 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18236         optimization.
18237
18238 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * aot.c (mono_aot_load_method): Fix loading of debug info.
18241
18242 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18243
18244         * aot.c: Add logging support.
18245
18246 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18247
18248         * mini.h: Add prototype for mono_print_method_from_ip.
18249
18250         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18251
18252         * inssel.brg: 64 bit fixes.
18253
18254         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18255         inssel-long32.brg.
18256
18257         * Makefile.am: Add SPARC64 support.
18258
18259 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * aot.c: Fix alignment problems on 32 bit platforms.
18262
18263 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18264
18265         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
18266         SPARC64.
18267
18268         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
18269         problems.
18270
18271         * mini.h: Bump AOT file version. Some 64 bit fixes.
18272
18273 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * inssel-sparc.brg: Add new rule to avoid register moves.
18276
18277         * inssel.brg: Add ldind_to_load_membase helper function.
18278
18279 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18280
18281         * mini.c: OffsetToStringData intrinsic.
18282         
18283 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18286
18287         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18288         regression tests.
18289
18290         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18291 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18292
18293         * mini.c: reinstated mono_compile_get_interface_var()
18294         on x86, too, since the change breaks the Gtk# build there as well.
18295
18296 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18297
18298         * driver.c: remove loop from the default optimizations: it seems to
18299         interact badly with some of the other options (see bug #60613).
18300
18301 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18304         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18305
18306 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18307
18308         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18309         vararg-using methods.
18310
18311 2004-06-21  Martin Baulig  <martin@ximian.com>
18312
18313         * mini/mini-exceptions.c
18314         (mono_handle_exception): Added `gpointer original_ip' argument.
18315         After calling mono_unhandled_exception(), call
18316         mono_debugger_unhandled_exception() and if that returns true,
18317         restore the context and return.
18318
18319 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18320
18321         * mini-ppc.c: prefer the use of relative branches so
18322         they won't need to be patched in aot code (patch from Patrick Beard).
18323
18324 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18325
18326         * aot.c: patch from Patrick Beard to make the output assembly
18327         more correct for the MacOSX assembler. Small tweak to
18328         generate sane images on Linux/PPC, too.
18329
18330 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18331
18332         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18333         case until bug #59509 is fixed (shows up in #60332).
18334
18335 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18336
18337         * mini.c: make sure the needed wrappers are compiled, too, with
18338         precomp.
18339
18340 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18341
18342         * driver.c: remove NPTL reference in --version output.
18343
18344 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18345
18346         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18347         generate valid assembly for the Mach-O assembler.
18348
18349 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18350
18351         * driver.c: don't include abcrem in the all optimization specifier
18352         since it slows down jit compilation too much for now.
18353
18354 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18355
18356         * mini.c: use BIGMUL only if both operands have the same signage.
18357         * iltests.il: Test for bug 60056. (errors related to signage in
18358         BIGMUL).
18359
18360         r=lupus.
18361
18362 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18363
18364         * mini.c, aot.c: memory leak fixes.
18365
18366 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18367
18368         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18369
18370 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18371
18372         * Makefile.am: remove the -static hack completely, it links in
18373         statically glib as well.
18374
18375 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18376
18377         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18378         * exceptions.cs: make it compile with new mcs/csc.
18379
18380 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18381         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18382         and added relevant test case.
18383
18384 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18385
18386         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18387         regressions in gtk-sharp.
18388
18389 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * exceptions.cs: New regression tests.
18392
18393         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18394
18395 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18396
18397         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18398
18399 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18402
18403         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18404
18405 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18406
18407         * mini.c (mono_jit_runtime_invoke): Init class in this
18408         method instead of trusting mono_jit_compile_method to
18409         do the work (because wrappers can be in object class)
18410
18411 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18412
18413         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18414
18415         * basic-long.cs: New regression test.
18416
18417 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18418
18419         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18420         and div/rem checks.
18421
18422 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18423
18424         * Makefile.am: fix miguel's change to build mono statically against
18425         libmono (track build dependencies).
18426
18427 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18428
18429         * cfold.c: Some glib versions do not have G_MININT32.
18430
18431 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18432
18433         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18434         with precision of tan, atan, sin and cos, and implemented related
18435         regressions tests (fixes bug 54467, but one new problem appeared and
18436         is not fixed yet).
18437
18438 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18441
18442         * exceptions.cs: Add test for constant folding && division by zero.
18443
18444         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18445         since driver.c is in libmono too, so the optimization was useless.
18446
18447         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18448         variable to driver.c so the compiler can emit more efficient code to
18449         access them.
18450
18451 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18452
18453         * Makefile.am: don't distribute generated inssel.[ch] files.
18454
18455 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18456
18457         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18458         into the default appdomain. Fixes #58707.
18459
18460         * jit-icalls.c: Remove the broken approximation for truncl, doing
18461         no conversion is better.
18462
18463         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18464         Fixes #58863.
18465
18466 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18467
18468         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18469         of the mcrxr instruction which is not available on some processors
18470         even if it's documented to be. Implement add and sub overflow correctly
18471         (still not complete for long unsigned). Speed up icalls a bit.
18472
18473 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18474
18475         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18476         we run .cctor in the current domain instead of target_domain.
18477         
18478         Fixes bug #58558, .cctor not being called in -O=shared.
18479
18480 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18481
18482         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18483
18484 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18485
18486         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18487         which can be done with an imm8, do it that way.
18488         (mono_arch_output_basic_block): ditto for a jmp
18489         (mono_arch_emit_prolog): Computate maximum offset of a label.
18490
18491 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18492
18493         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18494         now tries to allocate prefered physical reg's for virtual
18495         regs. This reduces the number of emited spills/loads with
18496         20-30% on our core assemblies.
18497
18498 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18499
18500         * jit-icalls.c: truncl() is not needed and trunc() is
18501         the correct thing to do anyway (bug #58287).
18502
18503 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18506         if available.
18507
18508 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18509
18510         * driver.c: enable loop optimizations by default.
18511
18512 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18513
18514         * mini-x86.c: fix calc of max loop size when aligning loops start.
18515
18516 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18517
18518         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18519         the stack.
18520
18521 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18524         should set carry.
18525
18526         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18527
18528         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18529         
18530         * mini.c (inline_method): Allways inline some wrappers even if the cost
18531         is too large. Fixes #58785.
18532
18533         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18534         
18535 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18538         (crichton@gimp.org). Beginning of support for sparc/linux.
18539
18540         * mini-sparc.c: Optimize retrieval of LMF address.
18541
18542 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18543
18544         * exceptions-ppc.c:  handle alloca in methods with clauses.
18545
18546 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18547
18548         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18549
18550 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18551
18552         * mini.c: Delegate most of the abort signal work to 
18553           mono_thread_request_interruption, which also handles Stop and Suspend
18554           states.
18555
18556 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18559         supports the save/restore lmf opcodes.
18560
18561 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18562
18563         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18564         by gcc-3.4 as well.
18565
18566         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18567
18568 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18571         methods which contain array accesses.
18572
18573         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18574         boundaries. Fixes #58537.
18575
18576         * iltests.il: Add regression test for #58537.
18577
18578 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18579
18580         * mini-x86.c (mono_arch_local_regalloc): Last part of
18581         fix for bug #58633 (releasing register to early).
18582
18583 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18584
18585         * basic-long.cs: Add new regression test.
18586
18587 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18588
18589         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18590         register too early on the chain.
18591
18592 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18593
18594         * mini.c (create_helper_signature): Use a helper function to reduce
18595         the code which needs to be written. Also set the calling convention of
18596         icalls on windows. Fixes #57840.
18597
18598 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18599
18600         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18601         exceptions-ppc.c: added helper function to get the instruction address
18602         from a signal handler context.
18603
18604 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18605
18606         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18607         from gonzalo.
18608
18609 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18610
18611         * helpers.c: Add new env variable to pass args to objdump.
18612         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18613
18614 2004-05-17  Radek Doulik  <rodo@ximian.com>
18615
18616         * Makefile.am (common_sources): added abcremoval.h so it get
18617         disted and daily mono packages on go-mono.com will build again
18618
18619 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18620
18621         * abcremoval.c: Fixed coding style, added copyright header.
18622
18623         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18624
18625         * mini.h: Added prototype for abc removal main function.
18626
18627         * build_relations_propagation_table.pl: Added copyright header.
18628
18629 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18630
18631         * basic-long.cs: reg test for complex ceq_long bug.
18632
18633 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18634
18635         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18636         reg in long and clob case (bug #58343). Fixed/added comments.
18637
18638 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18639
18640         * mini.c (mono_jit_runtime_invoke): Follow new convention
18641         of calling the invoke method with an function pointer.
18642
18643 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18644
18645         * ChangeLog: Fix author of memory leak patch.
18646
18647 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18648
18649         * Makefile.am: fix make dist as well...
18650
18651
18652 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18653
18654         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18655         on archs where pointers are 4 bytes long.
18656
18657         * Makefile.am: Added abcremoval.c source file.
18658
18659         * abcremoval.c: Added abcremoval.c.
18660
18661         * abcremoval.h: Added abcremoval.h.
18662
18663         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18664
18665         * inssel.brg: Enabled bounds check removal.
18666
18667         * mini.c: Added support for abcrem optimization.
18668
18669         * mini.h: Added abcrem optimization label.
18670
18671         * driver.c: Added support for abcrem optimization.
18672
18673         * propagated_relations_table.def: Added propagated_relations_table.def.
18674
18675 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18676
18677         * mini.c, cfold.c: fix style.
18678
18679 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18680
18681         * mini.c: handle issue with the low-level implementation of
18682         some long opcodes (bug #54209).
18683
18684 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18685
18686         * basic.cs: test for my new cmov stuff.
18687
18688 2004-05-13      Patrik Torstensson
18689
18690         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18691         opt and added peephole documentation.
18692
18693 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18694
18695         * tramp-ppc.c: rewrote the generic trampoline code.
18696
18697 2004-05-11      Patrik Torstensson
18698
18699         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18700
18701 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18702
18703         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18704
18705         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18706         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18707
18708         * mini.c: Add new icalls for AsAny marshalling.
18709
18710 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18711
18712         * tramp-ppc.c, mini-ppc.c: more cleanups.
18713
18714 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18715
18716         * mini.c: no warnings.
18717
18718 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18719
18720         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18721
18722 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18723
18724         * mini.c: In the thread abort signal handler, if the thread is in the
18725         process of being stoped, don't throw the Abort exception, just stop the
18726         thread.
18727
18728 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18729
18730         * tramp-ppc.c: removed old code.
18731
18732 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18733
18734         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18735         do some simple speed optimizations on ppc.
18736
18737 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18738
18739         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18740         and large offsets in load/store.
18741
18742 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18743
18744         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18745         it causes regressions.
18746
18747 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18750         support.
18751
18752 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18753
18754         * jit-icalls.c: remove warnings.
18755         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18756         speedups for unsafe code.
18757
18758 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18759
18760         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18761
18762 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * basic-calls.cs: Add new regression test.
18765
18766         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18767         more portable.
18768
18769         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18770
18771         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18772         is no longer used.
18773
18774 2004-05-06      Patrik Torstensson
18775
18776         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18777         long reg allocation in any reg (not only eax:edx) and implemented 
18778         long shl/shr ops in asm instead of helpers.
18779
18780 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * mini-sparc.h: Fix warnings.
18783
18784         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18785         stack.
18786
18787         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18788         separate statement for clarity.
18789
18790         * mini-sparc.c: Update status.
18791
18792 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18795         here.
18796
18797 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18798
18799         * inssel-ppc.brg: another small pre-release workaround:
18800         we don't do overflow detection for long_sub_un.
18801
18802 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18803
18804         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18805         (also works around a weird ppc bug: 57957).
18806
18807 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18808
18809         * tramp-ppc.c: trampoline fixes.
18810
18811 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18812
18813         * mini-ppc.c: fixed typos.
18814
18815 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18816
18817         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18818         at the top of the stack. Fixed typos. Use a frame registers
18819         for all the methods with exception clauses.
18820
18821 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18822
18823         * exceptions-ppc.c: restore fp registers.
18824
18825 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18826
18827         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18828         order from the stack top (moved the stack room to save the
18829         return value for trace after the param area). Fixed corruption
18830         in restoring registers on unwind.
18831
18832 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18833
18834         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18835
18836 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18837
18838         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18839         and prolog/epilog for methods that use it. Allow
18840         enough param area room for varargs methods. Fix miguel's
18841         breakage in exception handling.
18842
18843 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18844
18845         * Makefile.am: run genmdesc only on current arch.
18846
18847 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18848
18849         * exceptions-x86.c:
18850         * mini-x86.h: fix the build on windows.
18851
18852 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * 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.
18855
18856         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18857
18858         * mini-exceptions.c: New file.
18859         
18860         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18861         Move some parts of the x86 exception handling code to an 
18862         arch-independent file so it can be shared with other ports.
18863
18864 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18865
18866         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18867
18868 2004-04-26  David Waite  <mass@akuma.org>
18869
18870         * driver.c: remove comma from end of enumeration declaration
18871
18872 2004-04-26  Jackson Harper  <jackson@ximian.com>
18873
18874         * driver.c: parse config file before loading first assembly. This
18875         allows the user gac to be enabled/disabled. 
18876         
18877 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18878
18879         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18880         simpler mechanism: we do not care what is encoded initially
18881         (branch absolute or relative), we care about the code and its
18882         target.  I kept the old code for reference for now.
18883
18884         The new code tries first to determine if the jump is anywhere in
18885         the -/+32 absolute meg range, if it succeeds, it encodes using the
18886         absolute branch;  If not, it tried to find something in the
18887         relative range, if not, it uses the handle_thunk code. 
18888
18889 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18890
18891         * exceptions-ppc.c: use the correct ip register on macosx.
18892
18893 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18894
18895         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18896
18897 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18898
18899         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18900         Raise exception on integer divide by zero by hand since the hw
18901         doesn't support it. Handle NaNs in FP compares.
18902
18903 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18904
18905         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18906         code reducing duplication between the platforms and enabled
18907         signal exception handling (on linux for now).
18908
18909 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18910
18911         * exceptions-ppc.c: more macosx support.
18912
18913 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18914
18915         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18916
18917 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18918
18919         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18920
18921 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18922
18923         * iltests.il: more tests.
18924
18925 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18926
18927         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18928         vars as well.
18929
18930 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18931
18932         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18933
18934 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * liveness.c: Mark variables as volatile in all basic blocks reachable
18937         from exception clauses.
18938
18939 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18942         inlining.
18943
18944 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18945
18946         * iltests.il, basic.cs: more tests for regalloc.
18947
18948 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18949
18950         * iltests.il: Some tests for register allocation modifications
18951         I have locally.
18952
18953 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18954
18955         * exceptions.cs: Add regression test for bug #56782.
18956
18957         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18958         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18959         the beauty of fixing the same thing in 5 different files...
18960
18961 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18962
18963         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18964         methods.
18965
18966 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * mini.c: Add support for STRWLPARRAY marshalling convention.
18969
18970 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18971
18972         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18973         to init the context to setup the regs pointer).
18974
18975 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18976
18977         * exceptions-ppc.c: more exceptions work.
18978
18979 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18980
18981         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18982         not allowed.
18983
18984 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18985
18986         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18987         can use the memory directly.
18988
18989         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18990
18991         add x86_add_membase, x86_sub_membase, x86_mul_membase
18992
18993 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18994
18995         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18996         GENERAL_REGS they were also hardcoded for all PPC ports.
18997
18998         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18999
19000         Remove hard-coded limit for floating point registers, use
19001         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
19002
19003         Notice that in MacOS X calling conventions you can fit a lot more
19004         floating point values in registers, so I should update the PInvoke
19005         test to excercise the passing of floating point values on the
19006         stack (currently broken).
19007         
19008 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
19009
19010         * tramp-ppc.c (create_trampoline_code): Added
19011         JUMP_TRAMPOLINE_SIZE. 
19012         (ppc_magic_trampoline): Follow the pattern from
19013         x86_magic_trampoline: if code is set to zero, return. 
19014         (create_trampoline_code): Always pass MonoMethod to the jump
19015         trampoline, before it was passing a null.
19016         (mono_arch_create_jump_trampoline): Implement the jump stub, could
19017         share the code with mono_arch_create_jit_trampoline. 
19018
19019         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
19020         implemented.
19021         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
19022         implemented.  
19023
19024         * cpu-g4.md: Added length for jmp instruction, the worst case
19025         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
19026         for save_lmf).
19027
19028 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19029
19030         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
19031
19032 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
19033
19034         * mini.c: Only set bblock->real_offset when adding a new bblock, and
19035         before each IL instruction.
19036
19037         * mini.c (CEE_BOX): Fix warnings.
19038
19039 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19040
19041         * mini.c: removed a few unused vars and extra whitespace.
19042
19043 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
19044
19045         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
19046         checks.
19047         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19048         index.
19049         (OP_GETCHR): use the above
19050         (CEE_LDELEMA): use the above.
19051
19052         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19053         version of the generic impl.
19054         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19055         (CEE_LDELEMA): use the above.
19056
19057 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19058
19059         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19060         Fixes #56317.
19061
19062         * iltests.il: Added new regression test for #56317.
19063
19064 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19067         under NetBSD. Fixes #56450.
19068
19069         * liveness.c (update_gen_kill_set): Fix previous patch.
19070
19071 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19072
19073         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19074
19075 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19076
19077         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19078         ldsfld and ldsflda.
19079
19080         * inssel-sparc.brg: Add more optimizations.
19081
19082         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19083
19084 2004-04-01  Martin Baulig  <martin@ximian.com>
19085
19086         * mini.c (handle_box): New static function; moved the
19087         implementation of CEE_BOX here.
19088         (mono_method_to_ir): Added `constrained_call' variable.
19089         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19090         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19091         mono_method_get_constrained() to get the method.
19092
19093 2004-04-01  Martin Baulig  <martin@ximian.com>
19094
19095         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19096         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19097         (mono_method_to_ir): We don't need these macros anymore since
19098         mono_class_get_full() already takes care of it. 
19099
19100 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19101
19102         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19103         use @function (as doesn't accept #function here) and check the return
19104         value of system and stop if fails.
19105
19106 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19107
19108         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19109
19110 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19113
19114         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19115
19116         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19117         #56223.
19118
19119         * basic-long.cs: Add test for negation of Int64.MinValue.
19120
19121 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19122
19123         * mini-sparc.c: Update status.
19124
19125         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19126
19127         * exceptions-sparc.c: Fix return value in filters.
19128
19129         * inssel-sparc.brg: Fix register allocation in some rules.
19130
19131 2004-03-28  Martin Baulig  <martin@ximian.com>
19132
19133         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19134         if neccessary.  
19135
19136 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19137
19138         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19139         
19140         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19141         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19142         remove unused conv_u4 opcode.
19143
19144         * mini-x86.c: Remove valgrind workaround since it slows down things
19145         even when mono is not run under valgrind.
19146
19147 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * mini-sparc.c: Update status.
19150
19151         * inssel-sparc.brg: Add some optimizations.
19152
19153         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19154         future delay slot filling. Add support for varargs, tail calls and JMP.
19155
19156         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19157         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19158
19159         * inssel.brg: Fix register allocation in OP_ARGLIST.
19160
19161         * inssel.brg: Fix warnings.
19162
19163 2004-03-25  Martin Baulig  <martin@ximian.com>
19164
19165         * mini.c (inflate_generic_field): Removed.
19166         (mini_get_method): Removed, use mono_get_method_full(),
19167         (mini_get_class): Removed, use mono_class_get_full().
19168         (mono_method_to_ir): Pass our generic context to
19169         mono_field_from_token().        
19170
19171 2004-03-25  Martin Baulig  <martin@ximian.com>
19172
19173         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19174         of a `MonoMethod *'.
19175         (mini_get_method): Take a `MonoGenericContext *' instead
19176         of a `MonoMethod *'.
19177         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19178         a new local variable called `generic_context' which holds the
19179         current `MonoGenericContext *'; use it to lookup things.
19180
19181 2004-03-24  Martin Baulig  <martin@ximian.com>
19182
19183         * mini.c (mini_get_class): New static method; if we're inside a
19184         generic instance, inflate the class if neccessary.
19185         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19186
19187 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * iltests.il: New regression test for #55976.
19190
19191         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19192         #55976.
19193
19194 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19197         output.
19198
19199 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19200
19201         * liveness.c: Consider SSA stores as well as loads when making vars
19202         volatile.
19203
19204         * exceptions.cs: New regression tests for register allocation.
19205         
19206 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19207
19208         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19209         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19210           domain lock only to protect puntual access to data structures.
19211           Added access lock for sighash, jit_icall_hash_name, 
19212           jit_icall_hash_addr and domain->code_mp.
19213
19214 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19215
19216         * driver.c: Print SIGSEGV handling method.
19217
19218         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19219
19220         * mini.c (setup_jit_tls_data): Handle case when this is called
19221         multiple times for a thread.
19222
19223         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19224         is different from fbxx_un. Fixes #54303. Also use constants instead of
19225         magic numbers in a lot of places.
19226
19227 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19228
19229         * exceptions.cs: Fix cctor test when --regression is used.
19230
19231 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19232
19233         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19234         for Linux/ppc.
19235
19236 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19237
19238         * inssel-ppc.brg: fixed register assignments for some rules.
19239
19240 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19241
19242         * exceptions.cs: Add test for exceptions in static constructors.
19243
19244         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19245         static constructors outside the domain lock. Fixes #55720.
19246
19247 2004-03-17  Martin Baulig  <martin@ximian.com>
19248
19249         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19250         (inflate_generic_field): Take the `MonoMethod *' instead of the
19251         `MonoClass *' and added support for generic method.
19252         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19253         have a `field->parent->gen_params', only inflate the field if it's
19254         an open constructed type.
19255
19256 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19257
19258         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19259         exception object instead of the preconstructed ones.
19260
19261 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19262
19263         * mini.c: reverted changed to sigsegv_signal_handler commited
19264         accidentally in the previous patch.
19265
19266 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19267
19268         * mini.c:
19269         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
19270         running --aot with an old assembly.
19271
19272 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19273
19274         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
19275         point values.
19276
19277         * mini-sparc.c: Add support for v9 branches with prediction.
19278
19279 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
19280
19281         * mini.c (mini_init): #warning is GNUC only
19282
19283         * mini-sparc.h: implement __builtin_frame_address
19284         and __builtin_return_address for Sun C compiler
19285
19286 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19289
19290 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19291
19292         * basic-calls.cs: Add test for unaligned byref long argument passing.
19293
19294         * mini-ops.h: Add sparcv9 compare and branch instructions.
19295
19296         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19297         v9 instructions if we have a v9 cpu.
19298
19299         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19300         registers for global allocation.
19301
19302         * exceptions-sparc.c: Fixes.
19303         
19304 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * liveness.c (mono_analyze_liveness): Optimized version.
19307
19308         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19309
19310         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19311         sparc work.
19312
19313         * basic-float.cs basic-calls.cs: New regression tests.
19314
19315 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19318         sigaltstack implementation.
19319
19320         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19321         
19322         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19323         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19324
19325 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * mini.c: Fix warnings.
19328         
19329         * mini.c (mono_resolve_patch_target): New function which contains the
19330         arch independent part of the patching process.
19331
19332         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19333         patching code to a separate function.
19334
19335 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19336
19337         * mini.c (add_signal_handler): ifdef out on Windows
19338
19339 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19342         cpu-sparc.md: Add exception handling support + other fixes.
19343
19344         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19345         typed GC detection in --version.
19346
19347         * basic.cs exceptions.cs: New regression tests.
19348
19349         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19350         the arch specific code can store data during a compilation.
19351
19352         * mini-ops.h: Add OP_SETFRET.
19353
19354         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19355         function, register a separate icall for each arity, so the icalls can
19356         get a wrapper.
19357         
19358         * mini.c (mono_print_tree): Print negative offsets in a more readable
19359         form.
19360         
19361         * mini.c: Make signal handling work on sparc.
19362         
19363         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19364
19365         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19366
19367         * jit-icalls.c: Emulate truncl by aintl on solaris.
19368
19369         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19370
19371 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19374
19375 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19376
19377         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19378         a MarshalByRef type, inline a method that performs the check, taking into
19379         account that the object can be a proxy. Also implemented tow new opcodes:
19380         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19381         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19382         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19383
19384 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19385
19386         * mini-ppc.c: if a relative branch displacement is too big
19387         but it points to and area reachable with an absolute branch, 
19388         avoid the thunks.
19389
19390 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19391
19392         * mini.c: optimize small copies in cpblk.
19393
19394 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * basic-calls.cs basic-float.cs: New regression tests.
19397
19398         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19399         negative offsets from %fp. Implement localloc. Fix local register 
19400         allocation. Fix the case when the this argument needs to be saved to
19401         the stack. Implement some missing opcodes.
19402
19403 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * mini.c (mini_method_compile): Reenable global regalloc in methods
19406         with exception handlers.
19407
19408         * linear-scan.c (mono_varlist_sort): Fix warning.
19409
19410         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19411
19412         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19413         regalloc costs.
19414
19415         * liveness.c: Make all variables uses in exception clauses volatile, to
19416         prevent them from being allocated to registers. Fixes #42136.
19417
19418 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19421         causes regressions.
19422
19423         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19424         argument to mono_arch_regalloc_cost.
19425
19426         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19427         precisely.
19428
19429 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19430
19431         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19432         Make the cost of allocating a variable to a register arch dependent.
19433
19434         * basic-calls.cs: Fix compilation of tests.
19435         
19436         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19437         helper function to cut back on the number of #ifdefs needed.
19438
19439         * mini-ppc.c: Fix compilation.
19440
19441         * basic-calls.cs: New regression tests.
19442
19443         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19444
19445         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19446         of l0 since that is callee saved.
19447
19448         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19449         to virtual calls.
19450
19451         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19452         of delay instruction.
19453
19454         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19455
19456         * mini.h (MonoCallInst): Add 'virtual' flag.
19457
19458         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19459
19460 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * *.cs: New regression tests.
19463
19464         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19465         work.
19466
19467         * mini.c (mono_runtime_install_handlers): Fix build.
19468
19469         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19470         'signal_stack_size' members.
19471
19472         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19473         alternate signal stack.
19474
19475         * exceptions-x86.c: Add stack overflow handling.
19476
19477         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19478         functions to arch independent code.
19479
19480         * mini.c (mono_print_tree): Print more detailed info for load_membase
19481         opcodes.
19482         
19483 2004-02-23  Martin Baulig  <martin@ximian.com>
19484
19485         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19486
19487 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19488
19489         * mini-x86.c: fixed reg allocation for div/rem.
19490
19491 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19492
19493         * driver.c (mono_main): Report some configuratio options on --version.
19494
19495 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19496
19497         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19498         low in the address space. Correctly flush memory in thunks where we
19499         output native code.
19500
19501 2004-02-20  Martin Baulig  <martin@ximian.com>
19502
19503         * mini.c (mini_get_method): New static method; inflate all generic
19504         methods and methods in open generic instances.
19505         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19506         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19507
19508 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19511
19512         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19513
19514 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19515
19516         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19517
19518         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19519         it compile using Sun's compiler.
19520
19521 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * 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.
19524
19525         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19526
19527 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19528
19529         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19530         code.
19531         * mini-ppc.c: handle calls outside of the allowed range with thunks
19532         allocated using the code manager.
19533         * tramp-ppc.c: use the code manager to hold generated native code.
19534         Fixed the magic trampoline to just patch vtable entries.
19535
19536 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19539         independent file.
19540
19541 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19544         PPC.
19545
19546         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19547         if we have a working __thread implementation.
19548
19549         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19550         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19551
19552 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19553
19554         * mini-x86.c: Fix compilation under gcc 2.
19555         
19556 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19559         contains a call to the wrapped function.
19560
19561         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19562         OP_<CALL>_IMM opcodes, and use them under X86.
19563         
19564         * mini.c (mono_jit_find_compiled_method): Fix warning.
19565
19566         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19567
19568         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19569
19570         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19571         functionality to mini.c.
19572
19573         * mini.c (mono_create_jump_trampoline): New function to create a jump
19574         trampoline. Return a compiled method instead of a trampoline if it
19575         exists. Add a cache for jump trampolines.
19576
19577         * mini.c (mono_jit_find_compiled_method): New function to return a
19578         compiled method if it exists.
19579
19580         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19581         mono_arch_create_jit_trampoline.
19582
19583         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19584         a jump trampoline. Fixes #52092.
19585         
19586 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19589         which is not up-to-date. Add check_corlib_version () instead.
19590
19591         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19592         have to call it.
19593         
19594         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19595         since newer valgrind versions do not need it.
19596
19597         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19598         compile a method with a given set of optimizations.
19599
19600         * mini.c: Compile icall wrappers on-demand instead of at startup.
19601
19602         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19603         wrapper for an icall.
19604
19605 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19606
19607         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19608         #54063.
19609
19610         * iltests.il: Add test for non-empty stack before switch instruction.
19611
19612 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * mini.c: Add support for new stringbuilder marshalling conventions.
19615
19616         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19617
19618 2004-02-01  Martin Baulig  <martin@ximian.com>
19619
19620         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19621         in `ginst->mtype_argv'.
19622
19623 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19624
19625         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19626         facilitate grepping.
19627
19628 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19629
19630         * mini.c: fixed buglet in initobj generic implementation for references.
19631
19632 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19633
19634         * Makefile.am: make the version script conditional.
19635         * jit-icalls.c: handle missing truncl().
19636
19637 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * exceptions.cs: Add more tests for double->int conversion.
19640
19641         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19642         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19643
19644 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19645
19646         * driver.c: make --verbose --version emit an error
19647         if the loaded corlib doesn't match the runtime version.
19648
19649 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19650
19651         * mini-ppc.h: export ppc_patch().
19652         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19653         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19654         on par or better than on MacOSX.
19655
19656 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19659         mono_lookup_pinvoke_call.
19660
19661         * mini-x86.c: Under windows, the default pinvoke calling convention is
19662         stdcall. Fixes #52834.
19663
19664         * mini.c (optimize_branches): Add an upper bound to the number of
19665         iterations to prevent infinite loops on strange loops. Fixes #53003.
19666
19667 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19670         and ISINST. Fixes #52093.
19671
19672         * objects.cs (test_0_vector_array_cast): New tests.
19673         
19674 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19677         checking in Array.Set ().
19678
19679         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19680         #52590.
19681
19682         * object.cs (test_0_multi_array_cast): New regression test.
19683
19684 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19685
19686         * exceptions-ppc.c: fix build on Linux/PPC.
19687
19688 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19691         running under valgrind.
19692         (x86_magic_trampoline): Fix build bustage.
19693
19694         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19695         negative values as well. This is needed for the encoding of the line number
19696         info, since sometimes the line numbers are not in increasing order.
19697
19698 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * cpu-pentium.md (localloc): Increase the size of the localloc 
19701         instruction since it is a loop under Win32.
19702
19703         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19704         allocation.
19705
19706 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19709         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19710         Max Horn (max@quendi.de). Fix file names in comments.
19711
19712 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19713
19714         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19715         avoid stack overflow.
19716         (replace_usage): Avoid uninitialized variable warnings.
19717
19718         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19719         and taking the address of valuetype variables.
19720
19721 2004-01-03  Patrik Torstensson
19722
19723         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19724         for other purposes than FP later on.
19725
19726 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19729         of tail calls.
19730
19731 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19732
19733         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19734
19735 2003-12-30  Patrik Torstensson <p@rxc.se>
19736
19737         * mini-x86.h: Decreased number of availiable fp regs.
19738         Solves corner cases with FP spilling.
19739
19740 2003-12-23  Patrik Torstensson <p@rxc.se>
19741
19742         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19743         for floating point stack tracking / spilling on x86. 
19744         Fixes bug #49012.
19745         
19746         * basic-float.cs: added float mul overflow test.
19747
19748 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19751
19752 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19753
19754         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19755         supports for cond branches that overflow the immediate
19756         overflow offset. mcs can compile simple programs.
19757
19758 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19759
19760         * exceptions-ppc.c: exception handling support wip:
19761         finally handlers get run on exception.
19762
19763 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19766         profiling.
19767
19768 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19771         initial support for stack walking and unwinding.
19772
19773 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * driver.c (mono_main): Make corlib-out-of-sync message more 
19776         descriptive. Also remove verify_corlib call.
19777
19778 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19779
19780         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19781         not overlap with other call's arguments, too.
19782
19783 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19784
19785         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19786         move to arch-specific code the choice of arch-specific
19787         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19788         * mini.c: ensure emulation calls will not interleave
19789         with other calls.
19790
19791 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19792
19793         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19794         the magic trampoline stack frame is dropped before executing
19795         the new method.
19796
19797 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19798
19799         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19800         and integer to fp conversions. Added support for overflowing
19801         arguments on the stack. Reserve a couple more registers as temps.
19802         Added support for aot compilation (as output still needs to be
19803         tweaked, though).
19804
19805 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19806
19807         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19808         Don't overwrite return register in some corner cases.
19809
19810 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19811
19812         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19813         static constructors when AOT compiling.
19814
19815         * driver.c (mono_main): Call mono_check_corlib_version.
19816
19817 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19818
19819         * cpu-g4.md, basic.cs: fixed div target register.
19820
19821 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19822
19823         * mini-ppc.c, basic.cs: shl_imm fix with test.
19824
19825 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19826
19827         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19828         structures by value. Misc fixes.
19829         * objects.cs: more tests.
19830
19831 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19832
19833         * mini-ppc.c: lconv.ovf.i implemented.
19834
19835 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19836
19837         * mini.c:
19838         (mini_init): don't error out if someone already called g_thread_init.
19839
19840 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19841
19842         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19843         to be any type per the spec. Fix abnormal memory usage when
19844         the same object is repeatedly thrown.
19845
19846 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19847
19848         * mini.c: check for overruns in IL code.
19849
19850 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * TODO: Add/remove some todo entries.
19853
19854 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * driver.c (mono_main): Call mono_verify_corlib.
19857
19858 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19859
19860         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19861         This has been moved to mini.c
19862         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19863         type being casted is marshalbyref it could be a proxy, so instead of
19864         emitting the type check code, emit a call to a runtime method that will
19865         perform the check by calling CanCastTo if needed.
19866
19867 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19870         methods with large stack frames under Win32.
19871
19872 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * Makefile.am: Distribute regression tests.
19875
19876         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19877         at the end instead of inserting each variable into the sorted list.
19878
19879         * linear-scan.c (mono_varlist_sort): New helper function.
19880         
19881 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19882
19883         * mini.c: ensure arguments and locals are within bounds.
19884
19885 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19886
19887         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19888         related fixes.
19889
19890 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini.c (mono_cprop_copy_values): Fix crash.
19893
19894         * aot.c: Set verbosity back to 0.
19895         
19896 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19897
19898         * regalloc.c: complete memory leak fix by Laurent Morichetti
19899         (l_m@pacbell.net).
19900
19901 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * driver.c (main_thread_handler): Revert the previous patch.
19904
19905         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19906         under valgrind.
19907
19908         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19909         memory from the memory pool.
19910
19911         * driver.c (main_thread_handler): Turn on all optimizations when
19912         --aot is used.
19913
19914         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19915         an array for better performance.
19916
19917         * regalloc.c (mono_regstate_assign): Fix memory leak.
19918
19919         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19920         serialize the debug info.
19921
19922         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19923         debug info from the serialized representation.
19924
19925         * aot.c: Save debug info into the generated file and load it when 
19926         loading a method.
19927
19928         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19929
19930 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19931
19932         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19933         More FP-related fixes.
19934
19935 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19936
19937         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19938         and register allocation buglet. Hello world now runs.
19939
19940 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19941
19942         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19943         * tramp-ppc.c: fixed class init trampoline.
19944         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19945
19946 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19947
19948         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19949         mini.c: more ppc changes/fixes.
19950
19951 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19952
19953         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19954         Also optimize the case when the arguments are the same in the caller 
19955         and in the callee.
19956
19957         * iltests.il: Add tests for tail calls with valuetype arguments.
19958
19959 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19960
19961         * mini-ppc.c: fixes for struct return type.
19962
19963 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19964
19965         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19966         mono_spillvar_offset() to arch-specific code.
19967
19968 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19969
19970         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19971
19972 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * exceptions-x86.c: Fix stack space leaks.
19975         
19976         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19977         registers from the lmf if the method has save_lmf set.
19978
19979 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19980
19981         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19982         of icall wrappers into InvokeInDomain, since these are now per-domain.
19983
19984 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19985
19986         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19987         make some opcode emulation and intrinsic ops enabled/disabled 
19988         according to the architecture. More fixes.
19989
19990 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19991
19992         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19993
19994 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19995
19996         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19997         arch-specific handling for 'this' and struct return type to
19998         arch-specific code.
19999
20000 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20001
20002         * aot.c: prevent divide by zero error when reporting (it happened with
20003         Accessibility.dll).
20004
20005 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini.h (inst_switch): Remove unused macro.
20008
20009 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20010
20011         * aot.c:
20012         (load_aot_module): free 'info->methods' and 'info' properly. No more
20013         "free(): invalid pointer blah" messages when you have an old aot
20014         compiled assembly.
20015
20016 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
20017
20018         * jit-icalls.c, mini.c: Added support for context static fields.
20019
20020 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * mini.c (mono_method_blittable): Methods which set LastError are not 
20023         blittable either. Fixes #51108.
20024         
20025 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20026
20027         * mini.c: flush icache.
20028         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
20029
20030 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
20033
20034 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
20037         safe on IA32.
20038
20039         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
20040         vararg calls.
20041
20042         * inssel.brg (CEE_MKREFANY): Fix AOT case.
20043
20044 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20047         instruction when the result is discarded.
20048
20049         * iltests.il (test_0_div_regalloc): New regression test.
20050
20051         * arrays.cs: Fix compilation error.
20052
20053 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20054
20055         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20056         float rules to inssel-x86.brg: sane architectures with FP registers
20057         don't need to implement these rules.
20058
20059 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20060
20061         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20062
20063 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20064
20065         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20066         implementation of 32 bit systems.
20067
20068 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20069
20070         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20071         (Jeroen Zwartepoorte).
20072
20073 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20074
20075         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20076         the caller and the callee matches.
20077         
20078         * mini.c (mono_method_to_ir): Add comment.
20079
20080         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20081         signbit is missing on some platforms.
20082
20083 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20086
20087         * mini.c (setup_jit_tls_data): Call the new function.
20088         
20089         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20090
20091         * mini-x86.c: Add experimental support for fast access to the lmf
20092         structure under NPTL/Linux 2.6.x.
20093
20094 2003-11-06  Martin Baulig  <martin@ximian.com>
20095
20096         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20097         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20098         the debugger.
20099
20100 2003-11-02  Martin Baulig  <martin@ximian.com>
20101
20102         * mini.c (inflate_generic_field): New static method.
20103         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20104         generic instance and the field is declared in a generic type, call
20105         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20106
20107 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.h mini.c (mono_method_same_domain): New function to return
20110         whenever the caller and the callee are in the same domain.
20111
20112         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20113
20114 2003-10-30  Martin Baulig  <martin@ximian.com>
20115
20116         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20117         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20118         method parameters.
20119         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20120         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20121
20122 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20125         propagation.
20126
20127         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20128         object here, so it is in the correct appdomain etc.
20129
20130 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20133         already done.
20134         (mono_method_to_ir): Avoid freeing the type created returned from
20135         mono_type_create_from_typespec, since it is put into an internal cache
20136         by the function. Fixes pointer.exe.
20137
20138         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20139         trampolines for icalls and pinvokes as well. Fixes #33569.
20140
20141 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * mini.c: Update after appdomain changes.
20144
20145         * mini.c (mono_jit_compile_method_inner): Allways compile native
20146         method wrappers in the root domain, since there can only be one
20147         instance of them, whose address is stored in method->info.
20148
20149 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20150
20151         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20152         environment variable. Instead detect automatically whenever running
20153         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20154         valgrind.h.
20155
20156 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20157
20158         * trace.c, trace.h: New files that implement the new trace option
20159         parsing. 
20160
20161         * driver.c: Document new --trace options.
20162
20163         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20164         mini-x86.c: Apply:
20165
20166         -       if (mono_jit_trace_calls)
20167         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20168
20169         * mini.h: prototypes.
20170         
20171 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20174
20175         * mini.c inssel.brg: Implement typedefbyref opcodes.
20176
20177         * mini.c (mono_jit_compile_method): Remove unused local variable.
20178
20179         * mini.c (mono_jit_compile_method_inner): Ditto.
20180         
20181 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20182
20183         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20184         
20185         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20186
20187 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * mini.c (mono_no_aot): Remove unused global variable.
20190
20191         * mini.c: Thread safety fixes.
20192
20193 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20194
20195         * mini.c (mono_create_class_init_trampoline): Add a lock around
20196         class_init_hash_addr.
20197
20198         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20199         #30073.
20200
20201         * mini.c: Decompose the NEWARR instruction before decomposing its
20202         arguments. Fixes #30073.
20203
20204 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20205
20206         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20207         convention.
20208
20209 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20210
20211         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20212
20213         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20214
20215         * driver.c: Add support for compiling icall wrappers to --compile.
20216
20217 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20218
20219         * inssel.brg: The empty value in class->interface_offsets is -1, not
20220         0. Fixes #49287.
20221
20222 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20223
20224         * objects.cs: New test for 'is' operator on an array of interfaces.
20225
20226 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20227
20228         * tramp-ppc.c: update trampoline code to support jumps
20229         and class initialization.
20230
20231 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20234
20235         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20236
20237         * inssel.brg (OP_UNBOX): Remove unused rule.
20238
20239         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20240         region instead of one for each method. Fixes #47813.
20241
20242 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20243
20244         * exceptions.cs (test_0_nested_finally): New regression test for
20245         nested exception handlers.
20246
20247         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20248
20249         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20250
20251         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20252         inlining.
20253
20254         * mini.c (mono_method_check_inlining): Make the inlining limit 
20255         configurable by an environment variable.
20256         
20257         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20258
20259         * mini.h: Bump AOT file version.
20260
20261         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20262         token, store the image along with the token, since the token might not 
20263         refer to the same image as the method containing the relocation, 
20264         because of inlining.
20265
20266 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
20267
20268         * mini.c (mono_precompile_assemblies): New function to compile
20269         all methods in all loaded assemblies.
20270
20271         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
20272
20273         * regalloc.h regalloc.c (MonoRegState): Change the type of 
20274         iassign and fassign to int*, since they can contain large negative
20275         values if the register is spilled. Also added some comments. Fixes
20276         #45817.
20277
20278         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
20279         under Win32. Fixes #42964.
20280
20281 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20282
20283         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20284
20285         * aot.c: Added support for AOT compiling methods which contain calls
20286         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20287         handled.
20288         
20289         * driver.c (compile_all_methods): Run the compilation in a thread
20290         managed by mono. Fixes #44023.
20291
20292         * mini.c (mono_codegen): Print full method name in verbose output.
20293
20294         * mini-x86.c (mono_arch_patch_code): Fix warning.
20295         
20296         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20297         jumps, since the method we are jumping to might be domain-specific.
20298
20299         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20300
20301 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20302
20303         * inssel.brg: string chars are unsigned.
20304
20305 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20306
20307         * TODO: New todo item.
20308
20309         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20310         which calls mono_runtime_class_init and patches the call site to
20311         avoid further calls.
20312         (mono_arch_create_class_init_trampoline): New arch specific function 
20313         to create a class init trampoline.
20314         (create_trampoline_code): Generalized so it can create
20315         class init trampolines as well.
20316
20317         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20318         (mono_create_class_init_trampoline): New function to create and cache
20319         class init trampolines.
20320         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20321         vtable given the address of a class init trampoline. Used by the
20322         patching process.
20323         (mono_codegen): Generate a call to a trampoline instead of
20324         mono_runtime_class_init in LDSFLD[A].
20325         (mono_codegen): Add relocations for the new trampoline.
20326         
20327         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20328         MONO_PATCH_INFO_CLASS_INIT.
20329
20330         * mini.h: Bump AOT version number.
20331
20332         * aot.c: Create a copy of the loaded code instead of using the original
20333         so methods which call each other will be close in memory, improving
20334         cache behaviour.
20335         
20336         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20337         patch since it breaks the regression tests.
20338         
20339         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20340         for the register saving instruction sequence since the 
20341         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20342
20343 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * TODO: Fix todo item && remove another.
20346
20347 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20348
20349         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20350         previous checkin.
20351
20352         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20353         function of the module.
20354
20355         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20356         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20357         --no-aot command line option.
20358
20359 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20360
20361         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20362         by Bernie Solomon (bernard@ugsolutions.com).
20363
20364         * inssel.brg: Refactor the interface offset table related code into
20365         its separate functions and add support for the AOT case.
20366
20367 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20370         
20371         * aot.c: Added mono_aot_verbose variable and made all debugging
20372         output depend on the value of this variable.
20373
20374         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20375         method_label and info_label.
20376
20377         * mini.h mini-x86.c aot.c: Added a new relocation type 
20378         MONO_PATCH_INFO_IID for klass->interface_id.
20379
20380         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20381         the MonoJitInfo structure.
20382
20383         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20384         a non-root appdomain in shared mode.
20385
20386 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20387
20388         * aot.c: make aot loader less verbose. Remove free of unused variable.
20389
20390 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20391
20392         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20393
20394         * .cvsignore: Added *.dll.
20395
20396         * mini.c (mono_print_tree_nl): New function callable while debugging.
20397
20398         * mini.c (mono_print_code): Export this.
20399
20400         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20401         patched code.
20402
20403 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * mini.h (MonoCompile): Added 'jit_info' field.
20406
20407         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20408         the cfg structure, since it is needed by the AOT compiler.
20409
20410         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20411
20412         * aot.c: A major rewrite. Changes include:
20413         - save exception tables for methods which have them.
20414         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20415         to g_module_symbol.
20416         - reworked the file format so it is now much smaller and needs
20417         fewer relocation entries.
20418         
20419 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * aot.c (load_aot_module): Fix build bustage on platforms without
20422         Boehm GC.
20423
20424 2003-09-04  Martin Baulig  <martin@ximian.com>
20425
20426         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20427
20428 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * TODO: Some new optimization ideas.
20431
20432         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20433
20434         * aot.c: Save the optimization flags used to compile the code into
20435         the AOT module.
20436
20437         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20438         support emitting domain specific code.
20439         
20440         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20441         no longer domain neutral. It can be made domain neutral by compiling 
20442         with --optimize=shared.
20443
20444         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20445         between appdomains.
20446
20447         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20448         loading of AOT code.
20449
20450         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20451         
20452         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20453         if there is no domain neutrality information.
20454
20455 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20456
20457         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20458         format version into the generated library.
20459
20460         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20461         callee method into the caller since one of them could be shared.
20462
20463         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20464         system exceptions from AOT code now works.
20465
20466         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20467         method if it is domain neutral and the callee is not.
20468
20469         * graph.c (cfg_emit_one_loop_level): Fix warning.
20470
20471 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20472
20473         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20474         last checkin.
20475
20476 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20479         is needed  by code which is executed before mono_runtime_init ().
20480         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20481         
20482         * mini.c (mono_thread_abort): Fix warning.
20483         (mono_jit_compile_method): Call static constructor in the AOT case too.
20484
20485         * aot.c (mono_compile_assembly): Fix warning.
20486
20487 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20488
20489         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20490
20491 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20492
20493         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20494
20495         * cpu-pentium.md: Fix the length of call opcodes so they include the
20496         ESP restoring instruction. Fixes #47968.
20497
20498 2003-08-28  Martin Baulig  <martin@ximian.com>
20499
20500         * mini-x86.c (mono_arch_call_opcode): Added support for
20501         MONO_TYPE_GENERICINST.
20502
20503         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20504
20505 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20506
20507         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20508         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20509
20510         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20511         metadata_section.
20512
20513 2003-08-26  Martin Baulig  <martin@ximian.com>
20514
20515         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20516         when reporting an error, set this to the actual error location.
20517         (mono_method_to_ir): Report the correct error location if
20518         get_basic_blocks() returned an error.
20519
20520 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20521
20522         * mini.c (mono_type_blittable): OBJECT is not blittable.
20523         (mono_method_blittable): Methods which have marshalling descriptors
20524         are not blittable either. Fixes #47842.
20525
20526 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * driver.c mini.c: Use an environment variable instead of a global 
20529         variable. Also fix the build.
20530
20531         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20532         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20533         reporting this. 
20534
20535         * driver.c mini.c: Added --with-valgrind option to turn off some
20536         code which prevents mono from running under valgrind.
20537
20538         * mini.c (mono_emit_call_args): Fixed warning.
20539
20540         * mini.c (mono_emulate_opcode): Fixed warning.
20541
20542 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20543
20544         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20545         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20546         regalloc.c, regalloc.h: specify available registers in arch-specific
20547         code and support floats in the regallocator (patch by Laurent Morichetti 
20548         <l_m@pacbell.net>)
20549
20550 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20551
20552         * mini.c: mono_thread_current() can be called only after
20553         mono_runtime_init(): rearrange code to not call it early on.
20554
20555 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20556
20557         * mini.c: allocate jump tables in the code mempools.
20558
20559 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20560
20561         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20562         freed.
20563
20564 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20565
20566         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20567         12 to 16.  This fixes bug #47453.
20568
20569
20570 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20571
20572         * mini-ppc.c: fixed indexed load and unsigned compares.
20573
20574 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20575
20576         * mini.c: reenabled installation of handler for
20577           thread abort signal.
20578
20579 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20580
20581         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20582         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20583         until it's fixed and actually useful.
20584
20585 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20586
20587         * inssel-long32.brg: couple more opcodes implemented.
20588
20589 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20590         
20591         * mini-sparc.c: Even more opcodes implemeted.
20592
20593 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20594
20595         * mini-sparc.c: More opcodes implemented.
20596
20597 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20598
20599         * mini-sparc.c: More opcodes implemented.
20600
20601 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20602
20603         * inssel-sparc.brg: Add some needed rules.  Direct
20604         copy from PPC.
20605         * Makefile.am: Use inssel-sparc.brg
20606         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20607         an assert happy for now.
20608
20609 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20610
20611         * mini-sparc.c: Fixed compile errors.
20612         * exceptions-sparc.c: Same.  We now produce a mono binary 
20613         on sparc-linux.  Yea.
20614
20615 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20616
20617         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20618         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20619         They compile, but do not work.
20620
20621 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20622
20623         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20624         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20625         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20626         (ct@gentoo.org).
20627
20628 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20629
20630         * mini.c: more opcodes implemented and better support for generics.
20631
20632 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20633
20634         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20635         * mini.c, mini.h: first cut at generics support: some new instructions 
20636         added and changed the behaviour of some of the existing ones.
20637
20638 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20639
20640         * mini.c: Removed definition of metadata_shared mutex here.
20641
20642 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20643
20644         * mini-x86.c: make vararg calls work for instance methods.
20645
20646 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20647
20648         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20649         returns the arguments in a separte list, now.
20650
20651 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20652
20653         * aot.c, mini.c: updates for array type representation changes.
20654
20655 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20656
20657         * mini.c: register function to perform jit shutdown.
20658
20659 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20660
20661         * mini.c: use a faster allocator if possible.
20662
20663 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20664
20665         * aot.c: some cleanups and portability changes.
20666
20667 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20668
20669         * mini.c: use faster allocation for CEE_BOX if possible.
20670
20671 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20672
20673         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20674         Moved inlined mempcy code to its own function so that is can be
20675         reused. Added an inline memset function as well (optimized initobj).
20676         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20677
20678 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20679
20680         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20681
20682 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20683
20684         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20685         arch code can setup the cpu for CLR execution, if needed.
20686         We use it on x86 to set the precision of FP operations.
20687
20688 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20689
20690         * mini.c: disable some optimizations if we can guess they'll cost too
20691         much for a given method.
20692
20693 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20696         
20697 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20698         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20699         info collection support.
20700
20701 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20702
20703         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20704         is now implemented in the profiling API. Get rid of a couple of
20705         unnecessary global variables.
20706
20707 2003-06-15  Nick Drochak <ndrochak@gol.com>
20708
20709         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20710         * cpu-g4.md: add op_bigmul and op_bigmul_un
20711         * cpu_pentium.md: add op_bigmul_un
20712         * inssel-long32.brg: add rule for unsigned bigmul
20713         * mini-ops.h: define OP_BIGMUL_UN
20714         * mini-x86.c: THE BUG: handle (un)signed properly
20715         * mini.c: choose unsigned opcode if needed.
20716         This set of patches fixes bug #44291
20717
20718 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20719
20720         * mini.c (optimize_branches): improved to handle all kinds of
20721         conditional branches.
20722
20723 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20724
20725         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20726         don't raise exceptions.
20727
20728 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20729
20730         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20731         to arch-specific files.
20732
20733 2003-06-09  Martin Baulig  <martin@ximian.com>
20734
20735         * Makefile.am (libs): Added $(LIBGC_LIBS).
20736
20737 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20738
20739         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20740         and OP_ATAN (fixes bug#44293).
20741
20742 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20743
20744         * Makefile.am, mini-x86.c: rename cpu description array to
20745         pentium_desc, since some compilers define the 'pentium' preprocessor
20746         symbol.
20747
20748 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20749
20750         * mini.c (mini_select_instructions): add explicit branch if the
20751         following block is not the false target of a conditional branch -
20752         we need this with any optimization that reorder or remove bblocks
20753
20754         * mini.c (optimize_branches): bug fixes
20755
20756 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20757
20758         * mini.c (mono_method_to_ir): inline static readonly fields
20759
20760         * ssa.c (fold_tree): start cfold support for long (very simple
20761         cases only)
20762
20763         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20764
20765 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20766
20767         * inssel.brg: fixed memcpy (bug #44219).
20768
20769 2003-06-05  Dick Porter  <dick@ximian.com>
20770
20771         * driver.c: Set the glib log levels to not abort if g_message
20772         recurses.
20773
20774         g_set_prgname() has to happen before mini_init() so that the
20775         process handle gets the info.
20776         
20777 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20778
20779         * driver.c: add intrins to the default optimizations to get wider
20780         exposure.
20781
20782 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20783
20784         * mini.h: some large basic blocks will overflow a 16-bit
20785         integers for symbolic registers.
20786
20787 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20788
20789         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20790         (mono_arch_output_basic_block): fix bug 43499 
20791
20792 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20793
20794         * mini.c: kill duplicated definition of mono_debug_format.
20795
20796 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20797
20798         * mini-x86.c, arrays.cs: fixed register allocation bug.
20799
20800 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20801
20802         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20803
20804         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20805
20806 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20807
20808         * mini.c:
20809         (print_method_from_ip): also print source location information if
20810         available.
20811
20812 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20813
20814         * mini.c (mono_find_block_region): bug fix in region code
20815         (mini_method_compile): enable removing unreachable code again, but
20816         only in methods without exception clauses.
20817
20818 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20819
20820         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20821         Implemented arglist opcode and handling of TypedReference type.
20822         Fixed x86 call convention when a structure is returned.
20823         Minimal support for calling static vararg methods.
20824
20825 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20826
20827         * mini.c (mini_method_compile):  always remove unreachable code,
20828         because the code in them may be inconsistent  (access to dead
20829         variables for example).
20830
20831 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20832
20833         * driver.c, debug-mini.c: warning fixes.
20834
20835 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20836
20837         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20838
20839 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20840
20841         * mini.c: thread-static fields are registered in mono_class_vtable(),
20842         so ensure the function is called before checking for them.
20843
20844 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20845
20846         * mini.c (optimize_branches): fix for bug 43586
20847
20848         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20849         overflow (fixes Bug #43639)
20850
20851 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20852
20853         * mini.c, objects.cs: allow the use of stobj for primitive types.
20854
20855 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20856
20857         * mini.c: be less strict about argument checking until we support
20858         running the verifier.
20859
20860 2003-05-27  Nick Drochak <ndrochak@gol.com>
20861
20862         * basic-long.cs: tests for (ulong)int * (ulong)int also
20863         * mini.c: use the same trick for (ulong)int * (ulong)int
20864
20865 2003-05-27  Nick Drochak <ndrochak@gol.com>
20866
20867         * basic-long.cs: add regression test for (long)int * (long)int
20868         * cpu-pentium.md: add op_bigmul specification
20869         * inssel-long32.brg: add OP_BIGMUL rule
20870         * mini-ops.h: add OP_BIGMUL
20871         * mini-x86.c: register allocator: handle case where src1 needs to be
20872         in EAX.
20873         * mini.c: substitute special BIGMUL opcode in the tree for 
20874         (long)int * (long)int
20875
20876 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20877
20878         * jit-icalls.c: call the type ctor on field access if needed.
20879
20880 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20881
20882         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20883         to a method (including results of ldelema, bug#43207).
20884
20885 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20886
20887         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20888         colors to show exception handler blocks.
20889
20890         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20891         (fix for pinvoke7.cs).
20892
20893 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20894
20895         * mini.h, mini.c: ensure correct initialization order for types that
20896         require it. Prepare for lazy compilation of jit icall wrappers.
20897         Provide a name for opcode emulation to reduce unneeded mallocing.
20898
20899 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20900
20901         * mini-x86.c: better register restoring code and profiling
20902         support for tail calls.
20903
20904 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20905
20906         * mini.h, driver.c: prepare for leaf methods optimization.
20907
20908 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20909
20910         * mini.c: get targets of branches before converting a method.
20911
20912 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20913
20914         * mini.c (optimize_branches): added some experimental code (disbaled) 
20915
20916 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20917
20918         * mini.c (optimize_branches): fix branch to branch optimization 
20919
20920         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20921
20922         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20923
20924         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20925
20926         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20927         if needed.
20928
20929 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20930
20931         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20932         enable use of interface variables again.
20933
20934         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20935         I1 to registers because there is no simply way to sign extend 8bit
20936         quantities in caller saved registers on x86.
20937
20938         * inssel-float.brg: set costs of some rules to 2 so
20939         that monobure always select the arch. specific ones if supplied,
20940         regardless of the order we pass the files to monoburg.
20941
20942 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20943
20944         * mini.c, mini-x86.c: since the magic trampoline for jumps
20945         can't patch the code directly, we do it as soon as the
20946         method gets compiled.
20947
20948 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20949
20950         * mini-x86.c, mini.h: introduce a new patching method
20951         to support CEE_JMP and tail calls.
20952         * mini.c: obey tail.call. Don't precompile methods target
20953         of CEE_JMP.
20954         * tramp-x86.c: new trampoline code to handle methods
20955         reached through a jump.
20956
20957 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20958
20959         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20960         bit values to registers
20961
20962 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20963
20964         * mini.c (mono_compile_get_interface_var): share interface
20965         variables if possible.
20966
20967 2003-05-16  Martin Baulig  <martin@ximian.com>
20968
20969         * debug-mini.c (mono_init_debugger): New function to initialize
20970         the debugger.  This is not in the debugger since it needs to
20971         access some of mini's internals.
20972
20973 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20974
20975         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20976
20977 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20978
20979         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20980         for value type handling.
20981
20982 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20983
20984         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20985         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20986
20987 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20988
20989         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20990           the constructor through a proxy.
20991
20992 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20993
20994         * jit-icalls.c, inssel.brg: fixes to array element address
20995         calculations.
20996
20997 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20998
20999         * mini-x86.c (is_regsize_var): allocate pointer to registers
21000
21001 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21002
21003         * driver.c: fixed typo, added intrins to the set of optimizations
21004         tested with regressions.
21005
21006 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21007
21008         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
21009         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
21010         test case.
21011
21012 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
21013
21014         * inssel.brg: remove some common pop instructions without side effects
21015
21016 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21017
21018         * inssel-x86.brg: fixed thinko in int to double conversions.
21019
21020 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21021
21022         * mini.c, jit-icalls.c: added runtime thread-static variable support.
21023
21024 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21025
21026         * inssel-long32.brg: two more missing instructions.
21027
21028 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21029
21030         * mini.c (mono_emit_call_args): set the cil_code for all arguments
21031         if not already set.
21032
21033 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
21036         correctly.
21037
21038         * basic-float.cs: Added tests for negative zero.
21039
21040 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21041
21042         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
21043         a couple of missing operations for long casts, with test cases.
21044
21045 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21046
21047         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21048
21049 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21050
21051         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21052         code size estimation.
21053
21054 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21055
21056         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21057         abstract methods (fix bug 42542)
21058
21059         * aot.c: add ability to handle array types
21060         
21061 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * mini.c: Call the _specific versions of the object allocation
21064         functions if possible.
21065
21066 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21067
21068         * driver.c: call setlocale ().
21069
21070 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21071
21072         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21073         windows build.
21074
21075 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21076
21077         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21078
21079         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21080         wrappers (fix bug 42122)
21081
21082 2003-05-04  Martin Baulig  <martin@ximian.com>
21083
21084         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21085
21086         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21087         s/mini_set_defaults/mono_set_defaults/g.
21088
21089 2003-05-04  Martin Baulig  <martin@ximian.com>
21090
21091         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21092
21093 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21094
21095         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21096         (reported by Don Roberts).
21097
21098 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21099
21100         * mini.c: temporarily work around two bugs for this release.
21101
21102 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21103
21104         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21105         that contains -export-dynamic and it makes using the ld script
21106         useless.
21107         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21108
21109 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21110
21111         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21112         specific cpu.
21113
21114 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21115
21116         * mini.c: make sure leave calls all the needed finally blocks,
21117         even when the target jumps out of multiple exception clauses.
21118
21119 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21120
21121         * ldscript, Makefile.am: add linker script to reduce the number of
21122         exported symbols (should also fix the issues with libwine defining
21123         some of the same symbols in io-layer).
21124
21125 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21126
21127         * driver.c (mini_main): Avoid assertion when no file name is given on 
21128         the command line.
21129
21130 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21131
21132         * driver.c: added --version/-V command line option.
21133         Added the inline optimization in the regression tests.
21134
21135 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21136
21137         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21138         to the type in the method signature (fixes bug#42134).
21139
21140 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21141
21142         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21143
21144 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21145
21146         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21147
21148 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21149
21150         * driver.c: fixed bug #42100.
21151
21152 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21153
21154         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21155
21156 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21157
21158         * mini.c: moved most of the code required to do inlining to its own
21159         function so it can be reused. Inline also ctors if appropriate.
21160
21161 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21162
21163         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21164         the runtime can call mono API functions.
21165
21166 2003-04-27  Martin Baulig  <martin@ximian.com>
21167
21168         * debug-mini.c (mono_debug_init_method): Added
21169         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21170         send a notification to the debugger.
21171
21172         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21173         running in the Mono Debugger, just pass the breakpoint number to
21174         mono_debug_init_method().
21175
21176         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21177
21178 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21179
21180         * mini.c: allow some more unsafe compares.
21181
21182 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21183
21184         * mini-x86.c, Makefile.am: make distcheck works (partially from
21185         a patch by Richard Lee <r.h.lee@attbi.com>).
21186         * regset.c, regset.h: removed, they are unused.
21187
21188 2003-04-25  Dick Porter  <dick@ximian.com>
21189
21190         * driver.c: Usage reports the name as 'mono' not 'mini'
21191         * exceptions-x86.c: Build and run on freebsd
21192
21193 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21194
21195         * Makefile.am: install the program with the 'mono' name and
21196         the library as libmono instead of mini and libmini.
21197
21198 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21199
21200         * driver.c: provide the APIs for the embedding interface of the old jit.
21201
21202 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21203
21204         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21205
21206 2003-04-23  Martin Baulig  <martin@ximian.com>
21207
21208         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21209
21210         * driver.c: Added `--debug' command line argument to enable
21211         debugging support.
21212
21213 2003-04-23  Martin Baulig  <martin@ximian.com>
21214
21215         * debug.[ch]: Removed.  The code is now in
21216         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21217
21218         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21219         last six months.
21220
21221 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21222
21223         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21224
21225 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21226
21227         * mini.c:
21228         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21229         mono_domain_finalize.
21230         (mini_method_compile): use mono_method_profile* if the the option is
21231         enabled.
21232
21233 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21234
21235         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21236         methods with their wrapper.
21237
21238         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21239         methods with their wrapper.
21240
21241         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21242         their wrapper.
21243
21244         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21245         wrapper.
21246
21247         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21248         methods.
21249
21250 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21251
21252         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21253
21254 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21255
21256         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21257         of the mempool. This is slightly faster and uses less memory
21258
21259 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21260
21261         * mini.c: avoid O(n) allocation for variables.
21262
21263 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21264
21265         * mini.c: handle items on the stack after inlining methods.
21266
21267 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21268
21269         * mini.c: make the method->opcode optimization dependent
21270         on MONO_OPT_INSTRINS and do it lazily.
21271
21272 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21273
21274         * driver.c: print overall results at the end of regression run.
21275
21276 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21277
21278         * inssel.brg: don't overwrite symbolic registers.
21279
21280 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21281
21282         * inssel-x86.brg: fix conversion from long to float.
21283
21284 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21285
21286         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21287
21288 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21289
21290         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21291
21292         * driver.c: Added --print-vtable option as in the old JIT.
21293
21294 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21295
21296         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21297
21298 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21299
21300         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21301
21302 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21303
21304         * mini.c regalloc.c regalloc.h: Fix memory leak.
21305
21306 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21307
21308         * aot.c (mono_aot_get_method): register all used strings
21309
21310 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21311
21312         * mini.c: always intern strings references with ldstr at compile time.
21313
21314 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21315
21316         * Makefile.am: add BUILT_SOURCES.
21317
21318 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21319
21320         * driver.c: give a better error message when the assembly to execute
21321         doesn't have an entry point.
21322
21323 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21324
21325         * Makefile.am: added hack for automake
21326
21327         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21328         correct sematics.
21329
21330         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21331
21332 22003-04-07  Martin Baulig  <martin@ximian.com>
21333
21334         * Makefile.am: Added Makefile.am.
21335
21336         * debugger-main.c: Removed, this is now in the debugger where it
21337         belongs.
21338
21339         * mini.pc.in: Call this package `mini' for the moment.
21340
21341
21342
21343
21344
21345
21346
21347
21348
21349
21350
21351
21352
21353
21354