Renamed 'MonoDebuggerInfo.dummy' into 'runtime_info' and set an "attach ok" flag...
[mono.git] / mono / mini / ChangeLog
1 2009-06-18  Martin Baulig  <martin@ximian.com>
2
3         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
5
6         * debug-debugger.c
7         (mini_debugger_set_attach_ok): New function; sets the attach-ok
8         flag in `MONO_DEBUGGER__info.runtime_info'.
9
10         * driver.c
11         (mono_main): Call mini_debugger_set_attach_ok() if generics
12         sharing is disabled.
13
14 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
15
16         * aot-compiler.c (add_wrappers): Fix a warning.
17
18         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
19         the ppc load/store macro changes.
20
21 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
22
23         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
24
25         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
26         not just the got symbol.
27
28         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
29         on ppc.
30
31         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
32         ppc.
33         
34         * aot-compiler.c: Remove some fixmes.
35
36         * driver.c (mono_main): Print a helpful message when cross-compiling.
37
38         * mini.c (mini_init): Disable signal handlers when cross-compiling.
39
40         * method-to-ir.c (initialize_array_data): Do the optimization if the
41         target byte order is little endian, instead of the host byte order.
42
43         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
44         wrappers into the mscorlib image, Emit a unique plt symbol for each
45         image, emit symbols for plt entries.
46
47         * image-writer.c (img_writer_emit_symbol_size): New function to emit
48         a .size directive.
49         
50 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
51
52         * aot-compiler.c (add_wrappers): Avoid calling 
53         mono_marshal_get_type_info () since it can assert for some types.
54
55         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
56         ldtoken are used inside wrappers.
57
58         * helpers.c: Add support for prefixing tools with the arch name.
59
60         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
61         quantities when using ilp32.
62
63         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
64         spill slots. Use sizeof(mgreg_t) for the spill slot size.
65
66         * image-writer.c: Use .long on ilp32.
67
68         * aot-compiler.c: Use 32 bit loads on ilp32.
69         
70 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
71
72         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
73
74         * mini-ops.h: Use TARGET_POWERPC define for consistency.
75
76         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
77
78         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
79         second got slot of every aot image.
80         
81         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
82         aot on platforms with function pointers.
83
84         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
85         support for aot/full aot on ppc/ppc64.
86         
87         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
88         arguments which are needed on ppc.
89
90         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
91         argument.
92
93         * mini-trampolines.c aot-runtime.c: Update after the above changes.
94         
95         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
96
97         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
98
99         * aot-compiler.c (emit_got_info): Fix reading unused memory.
100
101         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
102
103 2009-06-17  Geoff Norton  <gnorton@novell.com>
104
105         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
106
107 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
108
109         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
110         to control whenever the dwarf writer is in xdebug or aot mode.
111         (emit_class_dwarf_info): Use a separate abbrev for structures without
112         children.
113
114         * aot-compiler.c: Pass the appending parameter to 
115         mono_dwarf_writer_create ().
116
117         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
118         falls through to its next bblock. Fixes #513931.
119
120         * iltests.il: Add a test.
121
122         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
123         infor even if emit_line is FALSE, as the apple linker seems to require it.
124
125         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
126
127         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
128         gcc does.
129         (emit_fde): Ditto.
130
131 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
132
133         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
134         mips build.
135
136 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
137
138         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
139         'has_call_handler' fields.
140
141         * method-to-ir.c (mono_method_to_ir): Set them if needed.
142
143         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
144         first bblock if not needed. Fixes #512790.
145         
146 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
147
148         * aot-compiler.c (mono_compile_assembly): Fix a warning.
149         
150         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
151         wrappers.
152
153         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
154         remoting-invoke-with-check wrappers, which are not needed when running with
155         full-aot, since it doesn't support remoting.
156         
157 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
158
159         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
160
161         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
162         method info, it is not used anymore.
163
164         * mini.h: Bump AOT file format version.
165         
166         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
167         word smaller.
168
169         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
170         change above.
171         
172         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
173
174         * mini.h: Bump AOT file format version.
175         
176 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
177
178         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
179         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
180         iphone.
181
182         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
183         of CKFINITE and FBGE for VFP.
184
185 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
186
187         * aot-compiler.c: Don't align code to 16 bytes on arm.
188         
189         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
190         before the methods they belong to.
191
192         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
193         the full-aot case if possible, since the trampoline will be called right 
194         away.
195
196         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
197         trampolines to 1024 after the change above.
198
199         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
200         trampoline to save 8 bytes per trampoline.
201
202         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
203         change above.
204
205 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
206
207         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
208
209 2009-06-08  Martin Baulig  <martin@ximian.com>
210
211         * debug-mini.c
212         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
213         (_mono_debugger_throw_exception): Don't make this static.
214         (_mono_debugger_unhandled_exception): Likewise.
215         (mono_debugger_handle_exception): Moved to mini-exceptions.c
216
217         * debug-mini.c
218         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
219         (_mono_debugger_throw_exception): Add function prototype.
220         (_mono_debugger_unhandled_exception): Likewise.
221
222         * mini-exceptions.c
223         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
224         arg; return the first exception handler if the exception is caught
225         and we're running inside the debugger.
226         (mono_debugger_handle_exception): Moved here from debug-mini.c;
227         improve exception handle inside runtime-invoke, check whether the
228         exception is actually caught in the method being invoked and not
229         by the runtime-invoke-wrapper.
230
231 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
232
233         * image-writer.c: Improve support for the osx assembler.
234
235         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
236         support them.
237
238 2009-06-08  Martin Baulig  <martin@ximian.com>
239
240         * debug-mini.c
241         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
242         (_mono_debugger_throw_exception): Don't make this static.
243         (_mono_debugger_unhandled_exception): Likewise.
244         (mono_debugger_handle_exception): Moved to mini-exceptions.c
245
246         * debug-mini.c
247         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
248         (_mono_debugger_throw_exception): Add function prototype.
249         (_mono_debugger_unhandled_exception): Likewise.
250
251         * mini-exceptions.c
252         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
253         arg; return the first exception handler if the exception is caught
254         and we're running inside the debugger.
255         (mono_debugger_handle_exception): Moved here from debug-mini.c;
256         improve exception handle inside runtime-invoke, check whether the
257         exception is actually caught in the method being invoked and not
258         by the runtime-invoke-wrapper.
259
260 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
261
262         * image-writer.c (append_subsection): Don't align subsections of the
263         debug_line section as a workaround.
264
265         * dwarfwriter.c: Emit line number info in the AOT case as well.
266
267 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
268
269         This patch is contributed under the terms of the MIT/X11 license
270
271        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
272        code_len <= code_size
273
274 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
275
276         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
277
278 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
279
280         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
281         invoke wrappers, we now use trampolines instead.
282
283 2009-06-04  Mark Probst  <mark.probst@gmail.com>
284
285         * mini-darwin.c: The exception thread must not be registered with
286         the GC.
287
288 2009-06-04  Mark Probst  <mark.probst@gmail.com>
289
290         * mini-gc.c: Disable the code because it makes SGen crash.
291
292 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
293
294         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
295         instead of asserting.
296
297 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
298
299         * aot-compiler.c (mono_compile_assembly): Move the creation of the
300         output file after the code has been compiled.
301
302 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
303
304         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
305
306 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
307
308         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
309         entries distinction to simplify the code.
310
311         * mini.h: Bump AOT file format version.
312         
313 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
314
315         * objects.cs: Fix the signature of one of the tests.
316
317         * mini.c (mini_create_ftnptr): New helper function, moved here from
318         object.c.
319         (mini_get_addr_from_ftnptr): Ditto.
320         (mini_init): Install the new helpers.
321
322 2009-05-28  Martin Baulig  <martin@ximian.com>
323
324         Correctly initialize the debugger when embedding Mono.
325
326         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
327         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
328         see documentation in mini_debug_running_inside_mdb().
329
330         * debug-debugger.c
331         (mini_debug_running_inside_mdb): New function to check whether
332         we're running inside mdb.
333
334         * mini.c (mini_init): Call mini_debugger_init() if we're running
335         inside the debugger.
336
337         * driver.c (mono_main): Moved the call to mini_debugger_init()
338         into mini_init() to make this work when embedding Mono.
339
340         * debug-debugger.c (mini_debugger_init): Warn about duplicate
341         calls to mini_debugger_init().
342
343         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
344         mono_debugger_main() -> mini_debugger_main() and put them inside a
345         `MONO_DEBUGGER_SUPPORTED' conditional.
346
347 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
348
349         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
350         this is no longer in use.
351         * mini.h: Same.
352
353 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
354
355         * mini-sparc.c (add_outarg_load): Fix the sparc build.
356
357         * aot-compiler.c (emit_method_code): Always write out C style symbols for
358         methods.
359
360 2009-05-27  Martin Baulig  <martin@ximian.com>
361
362 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
363
364         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
365         long_conv_to_r_un to 64 bits.
366
367         * cpu-x86.md: Increase the instruction size due to the changes.
368
369         * iltests.il.in: Add regression test.
370
371         Fixes #467201.
372
373 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * objects.cs: Move the previous test from basic.cs to here.
376
377 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * basic.cs: Add regression test for #506915.
380
381 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
382
383         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
384         optimization we must check the bb of the first byte of stobj as
385         it's the only one set in cil_offset_to_bb.
386
387         Fixes #506915.  
388
389 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
390
391         * image-writer.c: Fix pointer directive on ppc64.
392
393 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
394
395         * image-writer.c (asm_writer_emit_section_change): Avoid using
396         .bss subsections on ppc too.
397
398 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
399
400         * image-writer.c: Fix the definition of TARGET_ASM_....
401         
402         * image-writer.c: Fix the emission of assembler directives in the last
403         change.
404
405         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
406         exception throwing code to accomodate ppc64.
407
408         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
409         size to work on ppc64 too.
410
411         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
412         too.
413
414         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
415         the assembler dialect instead of using platform specific defines.
416
417 2009-05-22  Geoff Norton  <gnorton@novell.com>
418
419         * mini-arm.c (get_call_info): If a structure is split between the stack
420         and argument registers, we should not advance the stack pointer by the entire
421         native size, but just by the amount that spilled.
422
423 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini-arm.c (get_call_info): Handle structures with alignment requirements
426         correctly.
427
428 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
429
430         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
431         wrappers normally.
432         
433         * aot-compiler.c (add_extra_method): Fix up the collection of extra
434         methods so wrapper don't get added twice.
435         (add_generic_instances): Don't add methods of arrays.
436
437         * generics.cs: Mark one test as !FULLAOT.
438
439 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
440
441         * mini-x86.c (emit_move_return_value): Remove unused vars.
442
443 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
444
445         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
446         decomposing 8 bytes structs into a LCALL.
447
448         * mini-x86.c (emit_move_return_value): We no longer push the vtype
449         pointer for where to store the returned regs.
450
451         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
452         state the concern.
453
454         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
455
456 2009-05-20  Miguel de Icaza  <miguel@novell.com>
457
458         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
459         without getenv.
460
461 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
462
463         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
464
465         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
466         generics.
467
468 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
469
470         * local-propagation.c (mono_local_cprop): Avoid local propagation
471         across paired add/sub if the first instruction dest reg is it's
472         source reg. For example:
473
474         int_add_imm R12 <- R12 [1] clobbers: 1
475         int_sub_imm R42 <- R12 [1] clobbers: 1
476
477         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
478         maintain the math identify.
479
480         Fixes #505375.
481
482 2009-05-20  Andreia Gaita  <avidigal@novell.com>
483
484         * Makefile.am: avoid going on the network just to get the revision,
485         use git log instead
486
487 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
488
489         Fixed estimate for short branches on amd64 (they were off mark, and
490         enabling call prolog-epilog instrumentations caused assertions).
491         * mini.h (struct MonoBasicBlock): added max_length field to hold the
492         estimate for the maximum length of this basic block.
493         * mini-amd64.c:
494         - mono_arch_emit_prolog: compute max_length for each basic block
495           (instead of max_offset), and inflate size estimate also for entry bb
496           in case of code instrumentation.
497         - mono_arch_output_basic_block: get rid of "cpos" (the current
498           estimated "position" in the code), and always use "offset" instead,
499           which is accurate; at the beginning of the function quickly recompute
500           max_offset for all the remaining blocks, starting from the current
501           cfg->code_len (which is correct, and not estimated) and using the
502           estimated block lengths computed previously.
503
504 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
505
506         * exceptions-ppc.c: Remove the caching from the trampoline creation 
507         functions, it is already done in the caller.
508
509         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
510
511         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
512         MONO_ARCH_GSHARED_SUPPORTED define.
513
514         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
515
516         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
517         function.
518
519 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
520
521         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
522         call to mono_marshal_get_rgctx_invoke ().
523
524         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
525         mono_marshal_get_static_rgctx_invoke (), all platforms which support
526         gshared use the static rgctx trampolines now.
527         
528         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
529         platform supports it.
530
531 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
532
533         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
534
535         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
536
537 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
538
539         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
540
541         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
542         for ppc.
543
544 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
545
546         Made it possible for mono_arch_instrument_epilog to preserve
547         argument registers, otherwise instrumenting the "epilogue" before
548         a tail call would clobber them.
549         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
550         if like mono_arch_instrument_epilog but with an additional parameter
551         that states if argument registers must be preserved.
552         * mini.c: implemented mono_arch_instrument_epilog as a call to
553         mono_arch_instrument_epilog_full without asking to preserve argument
554         registers (this makes the existing code work as usual).
555         * mini-amd64.c:
556         - mono_arch_instrument_epilog: add parameter to transform it into
557         mono_arch_instrument_epilog_full, and preserve argument registers
558         when required.
559         - mono_arch_output_basic_block, OP_TAILCALL case: call
560         mono_arch_instrument_epilog_full.
561         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
562         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
563         only transformed mono_arch_instrument_epilog into
564         mono_arch_instrument_epilog_full.
565
566 2009-05-15  Geoff Norton  <gnorton@novell.com>
567
568         * mini-darwin.c: This works on arm now.
569
570 2009-05-14  Geoff Norton  <gnorton@novell.com>
571
572         * jit.h, driver.c: Allow full-aot to be decided programatically by the
573         embedding api.
574
575 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
576
577         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
578         label names.
579
580         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
581         wrappers during full aot mode correctly.
582
583         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
584         methods correctly.
585
586         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
587         mono_metadata_type_hash ().
588
589 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
590
591         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
592         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
593         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
594         Removed MONO_INST_BRLABEL from the instruction flags, and the
595         remaining code that used it, because we do not support branches inside
596         basic blocks (and branch target labels) anymore.
597         * Makefile.am: As part of the above cleanup, remove reference to
598         BURG files which don't exist anymore.
599
600 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
601
602         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
603         osx.
604
605         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
606         to use mono_arch_throw_corlib_exception.
607
608         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
609         mono_arch_throw_corlib_exception for throwing corlib exceptions.
610
611         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
612         domain mempool.
613
614         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
615
616         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
617         for the got to make debugging easier and to avoid confusing it with the
618         system got.
619         
620         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
621         method so a breakpoint can be set when using gdb.
622
623 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
624
625         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
626         on mono_method_get_imt_slot ().
627
628         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
629         num_decodes variables.
630
631         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
632         change as it doesn't seem to work.
633         
634         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
635         wrappers.
636
637 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
638
639         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
640         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
641
642         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
643         builder when using full aot.
644
645         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
646         here, it is already handled.
647         
648         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
649         correctly for IMT.
650
651         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
652
653         * mini-arm.h: Enable IMT for full aot.
654         
655         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
656         arch doesn't support it.
657
658         * mini.c (mini_init): Don't disable IMT for full aot if the
659         architecture supports it.
660
661         * mini.h (MonoAotTrampoline): New enum containing the different types
662         of 'numerous' trampolines.
663         (MONO_AOT_FILE_VERSION): Bump this.
664
665         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
666         static rgctx trampolines. Add support for full-aot IMT thunks.
667
668         * mini-amd64.h: Enable IMT for full aot.
669
670         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
671         to exclude tests belonging to a category.
672
673         * generics.cs: Mark some tests with a !FULLAOT category.
674
675         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
676         generics tests.
677
678 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
679
680         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
681         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
682         (emit_plt): Fix a warning.
683
684 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
685
686         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
687         back into aot-compiler.c to a place where the other functions shared by
688         the runtime and aot compiler are.
689         
690         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
691         as done previously, instead of in MonoAotFileInfo, since pointers might have
692         alignment requirements.
693
694         * mini.h: Bump AOT file format version.
695
696 2009-05-10  Miguel de Icaza  <miguel@novell.com>
697
698         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
699         that is used at runtime from the aot-compiler.c, this makes it
700         work on setups that remove the AOT compiler from the output
701         image. 
702
703 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
704
705         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
706         PPC.
707
708         * mini-ppc.h: Enable static rgctx trampolines for ppc.
709
710         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
711
712         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
713         stuff to mono_arch_decompose_long_opts ().
714         (mono_decompose_opcode): Remove some dead code.
715
716 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
717
718         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
719         cmethod can be null for quite a some reasons.
720
721 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
722
723         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
724
725 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
726
727         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
728
729 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
730
731         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
732         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
733         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
734         calls returning structures by addr on amd64.
735
736         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
737
738         * iltests.il.in: Restructure the tail call tests a bit.
739         
740 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
741
742         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
743         for virtual methods too.
744
745 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
746
747         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
748         due to regression in verifying System.dll.
749
750 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
751
752         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
753         in dynamic methods.
754
755         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
756         instances.
757
758         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
759         g_str_hash () which can change.
760
761         * driver.c (mini_regression): Disable optimizations not supported by
762         the cpu. Fixes #500019.
763
764         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
765         build.
766
767 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
768
769         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
770         to the latest LLVM code.
771
772 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
773
774         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
775
776 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
777
778         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
779         x86/amd64.
780
781         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
782         no longer saving offsets, so just save the patch types along with the other
783         info.
784         * aot-runtime.c (load_patch_info): Update after the changes to 
785         encode_patch_list ().
786         (decode_got_entry): Removed, merged into load_patch_info ().
787         (is_shared_got_patch): Removed, call the same function from
788         aot-compiler.c.
789
790         * mini.h: Bump aot file format version.
791         
792         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
793         half-finished no-dlsym code.
794
795         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
796         option.
797
798         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
799         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
800
801 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
802
803         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
804         buffer length to work with AOT code.
805
806         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
807         ldfld/stfld opcodes.
808
809         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
810         as it is not used.
811
812         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
813
814         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
815
816         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
817         LLVM API.
818
819         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
820         if needed. Don't decompose long operations when using llvm.
821
822 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
823
824         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
825         PAGESIZE constant.
826
827         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
828
829 2009-05-03  Martin Baulig  <martin@ximian.com>
830
831         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
832         mono_debugger_insert_method_breakpoint() since the class init
833         handler we're inserting at the top of the method already gives us
834         a notification.
835
836 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
837
838         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
839         to mono_arch_decompose_long_opts () for x86 and arm.
840
841 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
842
843         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
844         TARGET_AMD64 here.
845
846 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
847
848         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
849         JIT code.
850
851 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
852
853         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
854         number of trampolines used in full-aot mode.
855
856         * aot-compiler.c: Add an ntrampolines option to set the number of 
857         trampolines emitted in full-aot mode.
858
859 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
860
861         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
862         a volatile load. Get rid of get_tempname (), llvm assigns names
863         automatically.
864
865         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
866         builder function.
867
868         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
869         a value.
870
871         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
872         level 1.
873
874         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
875         to the same register as a fixed sreg2. Fixes #497271.
876
877         * iltests.il.in: Add a new test.
878
879 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
880
881         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
882         stack, since pushes complicate exception handling.
883
884         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
885         the stack if they are passed using moves.
886
887         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
888
889         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
890         when using llvm.
891
892         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
893         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
894         of FMOVE if it is an R4.
895
896 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
897
898         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
899
900         * mini.h (LLVMCallInfo): New structure to store calling convention 
901         information for the LLVM back end similar to the CallInfo structures in 
902         the back-ends.
903
904         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
905         call information in a format usable by LLVM.
906         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
907
908         * method-to-ir.c (mono_emit_call_args): Emit calls using 
909         mono_llvm_emit_call () when compiling using LLVM.
910
911         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
912         comments to all functions. Fix memory leaks. Add a public init/cleanup
913         function.
914
915         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
916
917         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
918         mono_array_new_va () jit icall.
919         
920 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
921
922         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
923         multiple machine description files to be specified.
924         * mini-ops.h: fixes for cross-compilation.
925
926 2009-04-22  Miguel de Icaza  <miguel@novell.com>
927
928         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
929         some porting work.
930
931 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
932
933         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
934         to prevent asserts in various passes. Fixes #497220.
935
936 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
937
938         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
939         a racy assert.
940
941         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
942         table to avoid duplicates.
943
944         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
945         
946         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
947         option is used.
948
949 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
950
951         * mini.c (mini_method_verify): Fail fulltrust code if the exception
952         is for method or field access.
953
954 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
955
956         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
957         a Value to stdout.
958
959         * mini-llvm.c (mono_llvm_emit_method): Use it.
960         
961         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
962         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
963         on volatile values.
964
965         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
966         synchronized methods.
967
968         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
969
970         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
971
972         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
973         OP_LOADI8_MEM.
974
975         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
976         allowing some options to be set dynamically.
977
978 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
979
980         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
981         unconditional branch.
982
983         * mini.h (MonoTrampolineType): Add new trampoline type 
984         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
985         compiled code.
986
987         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
988         function.
989
990         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
991         creation function.
992
993         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
994         is enabled. Instead, use the llvm vcall trampoline.
995         
996         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
997
998         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
999         
1000         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1001         functions.
1002
1003         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1004         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1005
1006         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1007         OP_IA64_CSET opcode.
1008
1009         * mini.c: Fix a warning.
1010
1011         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1012         THROW to the appropriate llvm type.
1013
1014 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * mini.c (mini_method_compile): Add statistics for methods JITted
1017         with/without LLVM.
1018
1019 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1022         OP_IA64_CMP_<cond>_IMM opcodes.
1023
1024 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1027         corlib exceptions.
1028
1029         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1030         correctly.
1031
1032         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1033         GENERICINST.
1034
1035 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1036
1037         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1038
1039 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1042         support.
1043
1044         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1045         rgctx invoke trampolines for x86.
1046
1047         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1048         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1049         (mono_arch_get_vcall_slot): Simplify this.
1050
1051 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1054         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1055
1056 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1057
1058         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1059         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1060
1061         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1062
1063         * liveness.c (visit_bb): Remove a needless assert.
1064
1065 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1066
1067         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1068         full aot support to the arch specific code.
1069
1070         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1071
1072         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1073
1074         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1075         
1076         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1077         collect information about the delegate invoke impl trampolines.
1078
1079         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1080         to save trampolines during full-aot mode.
1081
1082         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1083         creation function which returns a trampoline which sets the rgctx
1084         argument.
1085         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1086         wrapper if possible.
1087         (mono_delegate_trampoline): Ditto.
1088
1089         * mini.c (mono_jit_runtime_invoke): Ditto.
1090
1091         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1092         
1093         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1094
1095         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1096         
1097 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1098
1099         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1100         just setting the opcode to OP_NOP.
1101
1102 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * mini.c (mini_method_compile): Put the last change inside an 
1105         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1106         
1107         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1108         and extend live ranges to cover the whole method when using xdb.
1109
1110         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1111         do it in the trampolines.
1112
1113         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1114         needed.
1115
1116         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1117         
1118         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1119         call code in full-aot mode since IMT is disabled there.
1120         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1121         new JIT no longer has that restriction.
1122
1123         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1124
1125         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1126         a more compact format.
1127         (mono_aot_wrapper_name): New function to return a unique name for a
1128         wrapper method, also used by the AOT runtime.
1129
1130         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1131         aot-compiler.c.
1132
1133         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1134         when a ICollection<T> etc is encountered.
1135         (add_generic_instances): Process method arguments/locals too.
1136         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1137         trampoline names.
1138
1139         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1140         
1141 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1142
1143         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1144
1145         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1146
1147         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
1148         representing the result of the decomposition. Nullify instructions
1149         instead of setting them to OP_NOP since nops can't have registers
1150         set.
1151
1152 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * aot-compiler.c (mono_compile_assembly): Split this huge function into
1155         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
1156         info. Strip 'mapping symbols' on ARM.
1157
1158         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
1159         
1160         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
1161         this with the native genmdesc.
1162
1163 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1164
1165         * aot-runtime.c:  Fixing the MSVC build.
1166
1167         Code is contributed under MIT/X11 license.
1168
1169 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1170
1171         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1172         JITted code depends on it.
1173
1174 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1175
1176         * aot-compiler.c: Use new MonoGenericParam accessors.
1177
1178 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1179
1180         Reduce memory usage and improve correctness wrt MonoGenericParam
1181         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1182         handing.  Avoid allocating MonoGenericParams, but use the ones in
1183         the container itself.
1184
1185 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1186
1187         * tasklets.c: Return exceptions in the out argument.
1188
1189 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1190
1191         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1192         opcode. Use pointer types in more places instead of casting them to 
1193         integers.
1194
1195         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1196         optimizations.
1197         (mono_llvm_optimize_method): New helper function to optimize a method.
1198
1199         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1200         widening code so it could be called from more places.
1201         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1202         code paths in the call opcodes.
1203
1204 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1205
1206         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1207
1208 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1209
1210         * dwarfwriter.c: Use _ to separate class name 
1211         components as gdb can't handle '.'. Represent reference variables
1212         as 'class <NAME>&'.
1213         
1214         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1215
1216         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1217         
1218         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1219
1220         * gc-test.cs: New file with GC stack marking tests.
1221         
1222         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1223         negative numbers for vfp.
1224
1225         * basic-float.cs: Add a test.
1226         
1227 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1228
1229         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1230
1231 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1232
1233         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1234         part of tasklet/continuation support.
1235
1236 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1239         amd64 opcodes inside an ifdef.
1240
1241         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1242         of complex types.
1243         
1244         * dwarfwriter.c (emit_type): Emit the class info for classes.
1245
1246 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1249
1250         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1251
1252         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1253
1254         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1255
1256 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1259
1260         * mini-llvm.c: Update comments.
1261
1262         * mini.h (COMPILE_LLVM): New macro.
1263
1264         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1265
1266         * ssa.c (mono_ssa_compute): Ditto.
1267         
1268         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1269         the unwind ops from a DWARF FDE.
1270
1271         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1272         methods by extracting the dwarf unwind ops from the unwind info generated
1273         by LLVM.
1274         
1275         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1276         calls.
1277
1278         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1279         addressing modes.
1280
1281 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * Makefile.am (llvm_sources): Enable this.
1284
1285         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1286         failing back to the JIT if something cannot be handled.
1287
1288         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1289         compiling with LLVM.
1290
1291         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1292         compiling with LLVM.
1293
1294         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1295         compiling with LLVM.
1296
1297         * mini-ops.h: Add a few opcodes needed by LLVM.
1298
1299         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1300         has no unwind info.
1301
1302         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1303         backend.
1304
1305         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1306
1307         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1308
1309 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1310
1311         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1312         ridiculously large methods.
1313
1314 2009-03-31  Martin Baulig  <martin@ximian.com>
1315
1316         * debug-debugger.c (debugger_remove_breakpoint): Call
1317         mono_debugger_remove_class_init_callback ().
1318
1319 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1322         right before emitting code, not at the start.
1323
1324         * mini.c (mono_postprocess_patches): Extract this into a separate function
1325         from mono_codegen ().
1326
1327         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1328         byref types correctly.
1329
1330 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1333         by the last change.
1334
1335 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1338         indirect calls, this avoids problems where get_vcall_slot () would get
1339         confused by the native code for the instruction preceeding the call.
1340         (mono_arch_get_vcall_slot): Simplify this.
1341         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1342
1343         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1344         register allocator now seems to depend on them instead of the data in
1345         cpu-<ARCH>.md.
1346
1347         * mini.c (mini_method_compile): Throw the correct type of exception if
1348         mono_method_get_header () fails because of a loading error.
1349
1350 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1351
1352         * mini.c (mini_method_compile): Clear the loader error if the method
1353         header cannot be decoded.
1354
1355         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1356         interface methods on proxies correctly.
1357
1358         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1359         this argument for vtype methods. Add precise liveness info for arguments.
1360
1361         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1362         LIVERANGE_START/END opcodes.
1363
1364         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1365         for arguments and values in registers.
1366
1367 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1370         return a valuetype. Fixes #487518.
1371
1372         * iltests.il: Add a test.
1373         
1374         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1375
1376         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1377         closed over a null reference correctly.
1378
1379 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1382
1383 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1384
1385         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1386         allocated to the same registers as fixed sregs.
1387
1388 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1389
1390         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1391         ATOMIC_CAS_IMM ops.
1392
1393         * method-to-ir.c: Handle more cases for
1394         Interlocked.CompareExchange.
1395
1396         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1397         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1398         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1399
1400 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * aot-runtime.c (decode_method_ref): Fix a warning.
1403
1404         * unwind.c (mono_unwind_frame): Ditto.  
1405
1406 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1409         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1410
1411         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1412         fix the handling of large values in the ALU_PC_G0_NC relocation.
1413
1414 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1417
1418 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1419
1420         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1421         ops.
1422
1423 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1424
1425         * method-to-ir.c: MINI_OP3 needs a comma.
1426
1427         * method-to-ir.c, mini.h, mini.c: Remove
1428         mono_init_op_sreg_counts ().
1429
1430 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1433         OP_JMP.
1434         
1435         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1436         assertion.
1437
1438         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1439
1440         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1441         code somewhat.
1442
1443 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1444
1445         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1446         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1447         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1448         operations.
1449
1450 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * driver.c: Change location of gc_wrapper.h.
1453
1454         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1455         inside finally clauses correctly. Fixes #485721.
1456
1457         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1458         after the change above.
1459
1460         * exceptions.cs: Add a test.
1461         
1462 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1463
1464         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1465
1466         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1467         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1468         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1469
1470         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1471         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1472
1473 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1474
1475         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1476         Simplify logic for ensure_method_is_allowed_to_call_method. 
1477         Handle wrappers on callers.
1478
1479 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1480
1481         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1482         them don't run yet.
1483
1484         * basic-simd.cs: Fix the names of some test methods.
1485
1486 2009-03-18  Geoff Norton  <gnorton@novell.com>
1487
1488         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1489
1490 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1493
1494 2009-03-17  Jb Evain  <jbevain@novell.com>
1495
1496         * driver.c: remove now uneeded call to mono_gc_base_init before
1497         mono_profiler_load.
1498
1499 2009-03-17  Jb Evain  <jbevain@novell.com>
1500
1501         * dwarfwriter.c (token_handler): handle more cases.
1502
1503 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1504
1505         * method-to-ir.c: Remove more dead code (that was required only
1506         because of method_is_safe). Fix compiler warnings.
1507
1508 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1509
1510         * method-to-ir.c: Remove unneeded/useless method_is_safe
1511         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1512
1513 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1514
1515         * mini.c (mini_method_compile): Print the method been compiled with
1516         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1517         for people not familiar with the runtime.
1518
1519 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1522         a managed object which is later put into a GList. Return its class instead.
1523
1524         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1525         stack slots when using sgen.
1526
1527 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1530
1531 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1534         > so it works on the first vreg as well.
1535
1536 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1539         trigger randomly.
1540
1541         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1542         
1543         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1544         implement GArray.
1545
1546 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1549         native->IL offset mapping.
1550
1551 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1554
1555         * basic.cs: Add a test.
1556
1557 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1558
1559         * mini-x86.c (mono_arch_output_basic_block): Use different
1560         registers in case the ones we want to overwrite are used by the
1561         other operand.  Fixes regression in #480807.
1562
1563 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1566
1567         * dwarfwriter.c (emit_line_number_info): The line number info for
1568         IL code was off by one. Fix that.
1569
1570         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1571         stack.
1572
1573 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1574
1575         Contributed under the terms of the MIT/X11 license by Steven
1576         Munroe <munroesj@us.ibm.com>.
1577
1578         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1579         Fixes #483462.
1580
1581 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1584         as well.
1585
1586 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1589         the delegate ctor handling code. Fixes #482638.
1590         
1591         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1592         #481458.
1593
1594         * iltests.il.in: Add a test.
1595         
1596         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1597         mini-posix.c.
1598
1599 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1600
1601         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1602         is shared generic code, return the trampoline, even if the method
1603         has already been compiled.  Fixes #479763.
1604
1605         * mini.c, mini.h: New function
1606         mono_jit_find_compiled_method_with_jit_info() which is the same as
1607         mono_jit_find_compiled_method() but also returns the jit info.
1608
1609 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1610
1611         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1612         for methods which actually have one.  For all other methods, make
1613         sure the this argument var is live the whole method.
1614
1615         * mini.c (mini_method_compile): Every shared method has a
1616         this/vtable/mrgctx info.  Fixes #480807.
1617
1618 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1619
1620         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1621         generic/imt thunks where some entries branch through the vtable,
1622         while other entries branch directly.
1623
1624 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1627
1628         * mini-windows.c: Ditto.
1629         
1630         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1631         ctors.
1632
1633 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1636         down an assert.
1637
1638 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1639
1640         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1641         #481403.
1642
1643 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1644
1645         * exceptions-x86.c: Include debug-mini.h - fixes build.
1646
1647 2009-03-04  Martin Baulig  <martin@ximian.com>
1648
1649         * debug-mini.c: Clean up the exception API and add documentation.
1650         (mono_debugger_handle_exception): New public method; this is
1651         called when throwing an exception or encountering an unhandled one.
1652         (mono_debugger_call_exception_handler): Formerly known as
1653         mono_debugger_handle_exception(); this is used to tell the
1654         debugger that we're about to invoke an exception handler.
1655
1656 2009-03-04  Martin Baulig  <martin@ximian.com>
1657
1658         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1659         ../metadata/mono-debug-debugger.c; save and reset exception state.
1660
1661 2009-03-02  Martin Baulig  <martin@ximian.com>
1662
1663         * debug-mini.c: Moved the debugger exception handling here from
1664         ../metadata/mono-debug-debugger.c.
1665
1666         * debug-mini.h
1667         (MonoDebuggerExceptionAction): New exception typedef.
1668
1669         * debug-mini.c
1670         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1671
1672         * exceptions-amd64.c
1673         (mono_amd64_throw_exception): Use the new debugger exception
1674         handling code.
1675
1676         * mini-exceptions.c
1677         (mono_handle_exception_internal): Don't call
1678         mono_debugger_unhandled_exception() here.
1679
1680 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * mini.c aot-compiler.c: Update after the changes to 
1683         mono_marshal_get_runtime_invoke ().
1684
1685         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1686         Virtual generic methods might not have method->slot set, work around
1687         that.
1688
1689         * generics.cs: Add a test.
1690
1691 2009-03-02  Geoff Norton  <gnorton@novell.com>
1692
1693         * mini.c:
1694         * driver.c: Allow signal chaining of SIGFPE as well.
1695
1696 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1699         this since it now receives the method not its generic context in the
1700         IMT reg.
1701
1702         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1703         generic/imt thunks where some entries branch through the vtable, while
1704         other entries branch directly.
1705
1706         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1707
1708         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1709         support for interface methods as well.
1710
1711         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1712         using the normal IMT thunks.
1713
1714         generics.cs: Add new tests.
1715         
1716         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1717         the generic inst to the generic imt thunks. This fixes AOT support, 
1718         improves consistency with the normal IMT thunks, and makes it easier to
1719         add support for interface generic virtual methods later.
1720
1721         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1722         
1723 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1724
1725         * driver.c (mono_set_signal_chaining): New public API function to enable
1726         signal chaining on POSIX platforms.
1727
1728         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1729         (si@lindenlab.com) to implement signal chaining. The original patch was
1730         contributed under the MIT X/11 license:
1731         https://bugzilla.novell.com/show_bug.cgi?id=318894
1732
1733 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1736         too until it can be made to run on amd64.
1737
1738 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1741         to  get_generic_context_from_code () + get_call_info () if possible.
1742
1743 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1746         suspend-on-sigsegv functionality.
1747
1748         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1749         to suspend when a native SIGSEGV is received. This is useful for debugging
1750         crashes which don't happen under gdb, since a live process contains more
1751         information than a core file.
1752
1753         * mini-exceptions.c (mono_print_thread_dump): Use 
1754         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1755
1756         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1757
1758         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1759         
1760         * basic-float.cs: Disable the tests which currently fail on amd64.
1761
1762         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1763         value to mono_arch_patch_callsite () to fix crashes.
1764         
1765         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1766
1767 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1770         nop code by patching the call address to point to the nullified class init
1771         trampoline, as the former does not seem to be safe on SMP machines.
1772
1773 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1774
1775         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1776         they were wrong.
1777
1778 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * basic-float.cs basic-calls.cs: Fix warnings.
1781
1782 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1783
1784         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1785         correct frame pointer in the LMF.  Should fix #478394.
1786
1787 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1790
1791         * image-writer.c: Make the binary writer less verbose.
1792
1793 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1796         are called from runtime invoke wrappers.
1797
1798 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * cpu-ppc.md (store_memindex): Increase the size of this.
1801
1802 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1803
1804         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1805
1806         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1807
1808         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1809         OP_LCONV_TO_R_UN.
1810
1811         Last fix for of #467201.
1812
1813
1814 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1815
1816         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1817
1818         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1819         and long_conv_to_r8_2:
1820
1821         Fixed part of #467201.
1822
1823 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1824
1825         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1826
1827         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1828         conversion to 32 bits.
1829
1830         * cpu-x86.md: Increase the size of int_conv_to_r4.
1831
1832         * basic-float.cs: Add a test for this.
1833
1834         Fixed part of #467201.
1835
1836 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1837
1838         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1839
1840         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1841         conversion to 64 bits.
1842
1843         * basic-float.cs: Add a test for this.
1844
1845         Fixed part of #467201.
1846
1847 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1848
1849         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1850
1851         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1852         This behavior is compatible with MS.
1853
1854         * iltest.il.in: Add a test for this.
1855
1856         Fixed part of #467201.
1857
1858 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1861
1862         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1863         change the precision of the value.
1864
1865         * cpu-x86.md: Define len for float_conv_to_r4.
1866
1867         * basic-float.cs: Add a test for this.
1868
1869         Fixed part of #467201.
1870
1871 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1872
1873         * mini.c: Adjust locking order to the new semantics where the loader lock
1874         comes first.
1875
1876 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * aot-runtime.c:
1879         * mini-amd64.c:
1880         * mini-arm.c:
1881         * mini-ia64.c:
1882         * mini-mips.c:
1883         * mini-ppc.c:
1884         * mini-sparc.c:
1885         * mini-trampolines.c:
1886         * mini-x86.c:
1887         * mini.c:
1888         * tramp-alpha.c:
1889         * tramp-amd64.c:
1890         * tramp-arm.c:
1891         * tramp-hppa.c:
1892         * tramp-ia64.c:
1893         * tramp-mips.c:
1894         * tramp-ppc.c:
1895         * tramp-s390.c:
1896         * tramp-s390x.c:
1897         * tramp-sparc.c:
1898         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1899
1900 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1903         as it is incorrect.
1904
1905 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1908         for cctors if needed.
1909
1910 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1911
1912         * mini-ppc.c: Fix build on Darwin.
1913
1914 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1917         version instead of 3 as valgrind doesn't like version 3.
1918
1919         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1920
1921         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1922         usable for hashing methods.
1923         (emit_extra_methods): Use the new hash to avoid putting every method in the
1924         same hash bucket.
1925
1926         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1927
1928         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1929         whenever a method ref could match a method.
1930         
1931         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1932         test to fail.
1933         
1934         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1935         methods refs.
1936
1937         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1938
1939         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1940         the encoding buffer.
1941
1942         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1943         mono_method_get_header () on inflated methods as an optimization.
1944
1945 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1946
1947         * ssa.c (fold_ins): Fix another crash if the instruction following the
1948         switch was optimized away.
1949
1950 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1951
1952         Contributed under the terms of the MIT/X11 license by Steven
1953         Munroe <munroesj@us.ibm.com>.
1954
1955         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1956
1957 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1958
1959         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1960         around the mono_domain_alloc calls, it is now done by the functions
1961         themselves.
1962
1963         * aot-compiler.c (compile_method): Only add wrappers referenced by
1964         the method if compiling with full AOT.
1965         (mono_compile_assembly): Error out if --aot=full is specified on
1966         a platform where it is not supported.
1967
1968         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1969         on ARM too.
1970
1971         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1972         AOT support.
1973
1974         * aot-runtime.c (load_named_code): Handle 
1975         mono_arm_throw_exception_by_token.
1976
1977         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1978
1979         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1980         unaligned.
1981
1982         * Makefile.am (fullaotcheck): Exit if a test fails.
1983
1984         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1985         on ARM.
1986         (mono_compile_assembly): Handle the assembler failing.
1987
1988         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1989         accepting subsections of .bss.
1990
1991         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1992         was optimized away.
1993
1994         * aot-compiler.c: Remove some unused includes.
1995         
1996         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1997         now in MonoImageWriter.
1998
1999         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2000         code sequence which matches a non-virtual call. Fixes #472654.
2001
2002 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2005         xdebug code.
2006         
2007         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2008         use the image/dwarf writers directly.
2009
2010         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2011         field.
2012
2013         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2014         MonoDwarfWriter.
2015
2016         * image-writer.h: Fix some typos.
2017
2018         * dwarfwriter.h dwarfwriter.c: New files.
2019         
2020         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2021         separate module.
2022
2023         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2024         argument to return unwind info.
2025
2026         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2027
2028         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2029         
2030         * aot-runtime.c (decode_method_ref): Add a case for 
2031         MONO_AOT_METHODREF_WRAPPER_NAME.
2032
2033         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2034         for AOT.
2035
2036         * aot-compiler.c (encode_method_ref): Use the new constants.
2037
2038         * aot-runtime.c (decode_method_ref): Ditto.
2039
2040         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2041         be compiled, not the icall itself.
2042
2043 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2044
2045         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2046         using decode_method_ref ().
2047
2048         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2049         convert it to an in32. Fixes #475859.
2050
2051         * arrays.cs: Add a test.
2052
2053 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2056         OP_LCONV_TO_U2.
2057
2058         * basic-long.cs: Add a test.
2059
2060 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2061
2062         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2063         remove the frame pointer in leaf methods which don't receive any
2064         arguments, don't throw exceptions and don't do dynamic stack
2065         allocations.
2066
2067 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2070         the fail_tramp changes. Hopefully fixes #475132.
2071
2072 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2073
2074         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2075         instead of mono_metadata_signature_dup_full.
2076
2077 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2080         for processing jump tables. Fixes #473787.
2081
2082 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2083
2084         * mini-generic-sharing.c: mini_method_get_context() just calls
2085         mono_method_get_context_general() now.
2086
2087         * mini.c, mini.h: Moved get_object_generic_inst(),
2088         construct_object_context_for_method() and
2089         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2090
2091 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2094         basic block fell through to its successor bblock without a branch. Fixes
2095         #474718.
2096
2097         * iltests.il.in: Add a test.
2098         
2099         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2100         (can_encode_patch): We can now handle arrays of generic parameters and
2101         array methods.
2102
2103         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2104
2105         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2106         the AOT file to avoid some #ifdefs in aot-runtime.c
2107
2108         * mini.h: Bump AOT file format version.
2109
2110 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * Makefile.am (fullaotcheck): Make this run the tests.
2113
2114         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2115
2116 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2117
2118         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2119         individually.  Fixes #473482.
2120
2121 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2124
2125 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2126
2127         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2128         (mono_compile_assembly): Hush compile warnings about
2129         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2130         code path.
2131
2132 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2135
2136         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2137
2138         * aot-compiler.c: Fix arm support.
2139
2140         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2141         img_writer_emit_unset_mode () function.
2142
2143         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2144         (mono_unwind_get_dwarf_pc_reg): Ditto.
2145
2146         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
2147         Move almost all platform specific code to a set of arch_ functions, 
2148         and document them to ease porting.
2149         
2150         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
2151
2152         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
2153
2154         * aot-compiler.c: Extract the image writing functionality into a separate
2155         module to reduce the size of this file.
2156
2157 2009-02-09  Geoff Norton  <gnorton@novell.com>
2158
2159         * mini-s390.c: Fix the signature of emit_sig_cookie.
2160
2161 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
2162
2163         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
2164
2165         * aot-runtime.c (is_shared_got_patch): Ditto.
2166
2167         * aot-runtime.c (load_named_code): Cope with the fact that 
2168         decode_got_entry () won't decode the patch fully if its corresponding got
2169         entry is already filled.
2170         
2171         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2172         Initialize *ji.
2173         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2174
2175         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2176         as the moving pointer instead of 'buf' for consistency with the rest of the
2177         codebase.
2178         (mono_arch_create_monitor_exit_trampoline): Ditto.
2179
2180         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2181         generic_class_init trampolines.
2182         (add_generic_class): Extract some code from add_generic_instances () into a
2183         separate function so it can be called from other places too.
2184         (compile_method): Call add_generic_class () for the classes of inflated methods
2185         referenced by the method.
2186         (can_encode_patch): Allow references to generic parameters.
2187
2188         * aot-runtime.c: Add support the patches required by the new trampolines.
2189         
2190         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2191         support.
2192
2193         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2194         full-aot support.
2195
2196         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2197         this from get_throw_pending_exception, make the signature full aot compatible.
2198
2199         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2200
2201         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2202
2203         * exceptions.cs: Add a test.
2204
2205 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2208         use the DWARF_DATA_ALIGN constant instead.
2209
2210         * exception-<ARCH>.c: Update after the above change.
2211
2212         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2213         dwarf unwinder.
2214
2215         * mini-arm.c: Enable the dwarf unwinder.
2216
2217         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2218         instead of mono_class_setup_vtable ().
2219
2220 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2223         dwarf unwinder.
2224
2225         * mini-x86.h: Enable the dwarf unwinder.
2226
2227 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2228
2229         Fix mcs/tests/test-7.cs
2230         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2231         2009-02-03.
2232
2233 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * mini.c (print_jit_stats): Remove some unused statistics.
2236
2237 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2240
2241 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2242
2243         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2244         the method we get from mono_object_get_virtual_method() because
2245         that function does it properly, now.
2246
2247 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2250         opcodes. Fixes #472775.
2251
2252 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2253
2254         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2255         fact that mono_find_jit_info() sometimes returns the context
2256         corresponding to the jit info in new_ctx.  Fixes #472600.
2257
2258 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2261         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2262         klass->enum_basetype directly.
2263
2264         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2265         enum subtypes.
2266
2267         * unwind.c: Avoid 0 sized arrays.
2268
2269 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2272         size on systems with 64k pages. Fixes #471389.
2273
2274 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2275
2276         Contributed under the terms of the MIT/X11 license by Steven
2277         Munroe <munroesj@us.ibm.com>.
2278
2279         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2280         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2281         necessary.
2282
2283 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2284
2285         Contributed under the terms of the MIT/X11 license by Steven
2286         Munroe <munroesj@us.ibm.com>.
2287
2288         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2289         comparison fix.
2290
2291         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2292         The trampoline can be longer on PPC64.
2293
2294 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2295
2296         Contributed under the terms of the MIT/X11 license by Steven
2297         Munroe <munroesj@us.ibm.com>.
2298
2299         * mini-ppc.c: Compiler warning fixes and trivial code
2300         simplifications.
2301
2302 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2303
2304         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2305         ins->dreg which could be a hardware register, not a vreg.
2306
2307         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2308         
2309         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2310         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2311
2312         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2313         
2314         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2315         ->dreg, that is not the vreg we are looking for.
2316
2317         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2318
2319         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2320         LIVERANGE_END.
2321
2322         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2323         strange crashes.
2324
2325 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2328
2329         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2330         the line diff is 0.
2331
2332         * aot-compiler.c: Add xdebug support on x86.
2333
2334         * unwind.c: Add x86 support.
2335         
2336         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2337         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2338
2339         * mini.c (mini_method_compile): Ditto.
2340         
2341         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2342         the variable index.
2343
2344         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2345         which mimic .push_section/.pop_section in GAS.
2346         
2347         * aot-compiler.c: Emit precise live range information for variables.
2348
2349         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2350
2351         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2352         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2353         them.
2354
2355         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2356         the live ranges of variables.
2357
2358         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2359         of the variable in terms of native offsets.
2360
2361 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2362
2363         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2364         
2365 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2366
2367         Contributed under the terms of the MIT/X11 license by Steven
2368         Munroe <munroesj@us.ibm.com>.
2369
2370         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2371         order (offset then base reg) for ppc_load_multiple_regs.
2372         (emit_save_saved_regs) Correct operand order for
2373         ppc_store_multiple_regs.
2374         (mono_arch_get_call_filter): Correct operand order for
2375         ppc_load_multiple_regs.
2376
2377         * mini-ppc.c (emit_memcpy): Fix operand order for
2378         ppc_load_reg_update and ppc_store_reg_update.
2379         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2380         (mono_arch_emit_epilog): Correct operand order for
2381         ppc_load_multiple_regs.
2382
2383         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2384         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2385
2386 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2387
2388         * cpu-ppc64.md: Fixed storer4_memindex length.
2389
2390 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2393         line number info.
2394         
2395         * aot-compiler.c (emit_line_number_info): Optimize this.
2396
2397 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2400         
2401         * aot-compiler.c: Add debug info for methods without debug info by
2402         emitting an IL file and having the line number info referencing that file.
2403
2404         * aot-compiler.c: Optimize the size of the generated line number info.
2405
2406         * aot-compiler.c: Emit line number info in xdebug mode.
2407
2408         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2409         million arguments.
2410
2411 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2414
2415         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2416         is used.
2417
2418 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2419
2420         * basic-calls.cs: Test for the weird crash found on arm.
2421         
2422 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2423
2424         * cpu-arm.md: Increase the size of storer8_membase_reg and
2425         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2426
2427         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2428         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2429         reg to LR otherwise we'll be loading/storing from just the offset.
2430
2431 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2432
2433         Question: if we are storing gint32's inside the "*native_offset",
2434         should we change the signature to "gint32 *native_offset" to
2435         ensure that we do not have type definition problems?
2436         
2437         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2438         an int * as this is what the other function expects, causes
2439         problems with Freescale's compiler that defined int32_t to be a
2440         long and makes int incompatible 
2441
2442 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2443
2444         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2445         filename conflict with bjam.
2446
2447 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2448
2449         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2450         as it might use decomposed ops.
2451
2452 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2455
2456         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2457         is defined.
2458
2459         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2460
2461         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2462         offsets.
2463
2464         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2465         way registers are stored in MonoContext on arm.
2466
2467         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2468         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2469
2470         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2471
2472         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2473
2474         * mini.c (mini_init): Register mono_isfinite.
2475
2476         * jit-icalls.c (mono_isfinite): New jit icall.
2477
2478         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2479         
2480         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2481         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2482         the parent frame.
2483
2484 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2487         separate frame and stack pointers, so we must use FP to find the register
2488         spill area.
2489         The FP reg is retrieved from the MonoContext::regs array.
2490
2491 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2492
2493         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2494         as FPA requires it.
2495
2496 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2497
2498         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2499         return R4 and R8 when not running under softfloat.
2500
2501         Fixes basic-calls.exe
2502
2503 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * mini-arm.c: Implement some overflow opcodes.
2506
2507 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2508
2509         * ssa.c: handle another alloca.h
2510
2511         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2512         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2513         MONO_ARCH_USE_SIGACTION. 
2514
2515         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2516         capability defines.
2517
2518         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2519
2520         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2521         PPC targets as sigaction does not exist on all platforms, define
2522         this on a per-platform basis.
2523
2524         Instead of erroring out if the platform is not defined, include
2525         mini-ppc-os.h, and expect that the OS specific setting provides
2526         the required information.   
2527
2528 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * aot-compiler.c: Fix --enable-minimal=aot.
2531
2532 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2535         previous change.
2536
2537 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2538
2539         * exceptions-arm.c: Fix warnings.
2540
2541         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2542         ARM.
2543
2544         * mini-x86.c: Fix --enable-minimal=jit build.
2545
2546         * mini.c: Really fix --enable-minimal=jit build.
2547         
2548         * mini.c (construct_object_context_for_method): Move this outside
2549         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2550
2551         "Backported" of r124984 from 2.0 branch.
2552         
2553         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2554
2555         "Backport" of r124977 + r124978 from 2.0 branch.
2556         
2557         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2558         to avoid calling mono_exception_from_token () from the throw trampoline.
2559         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2560         for throwing corlib exceptions, this fixes full-aot support for corlib
2561         exceptions.
2562
2563         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2564
2565 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2566
2567         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2568         part of the changes to split the code in mini into operating
2569         system specific files.
2570
2571         This patch was done by copying mini.c to the respective files to
2572         preserve SVN history.
2573
2574 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2577
2578 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2581         remoting-invoke-with-check wrappers of shared methods.
2582
2583         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2584
2585 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2586
2587         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2588         optimization if the top of stack is the last instruction in the
2589         bblock.  Otherwise it might have been used after its definition.
2590         Fixes #469742.
2591
2592 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2595         method as well when get_vcall_slot () fails to match a code sequence.
2596
2597         * mini-arm.c: Fix the android build, which doesn't have
2598         __aeabi_read_tp.
2599
2600 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2603         the s390x build.
2604
2605 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2606
2607         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2608
2609 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2610
2611         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2612         and put its id into jinfo->used_regs. This is only used on amd64,
2613         which is currently the only platform generating unwind info.
2614
2615         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2616         the dwarf unwinder. This is required to correctly handle async exceptions
2617         like thread abort and stack overflows, which can happen while a method
2618         is in the middle of its prolog or epilog.
2619         
2620         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2621         the unwind info belonging to an AOTed method.
2622
2623         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2624         into cfg->unwind_ops.
2625         
2626         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2627
2628         * mini.c (mini_init): Call mono_unwind_init ().
2629         (mini_cleanup): Call mono_unwind_cleanup ().
2630
2631         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2632         unwind info to be shared between methods.
2633
2634         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2635         saved in the LMF.
2636
2637         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2638         get_throw_pending_exception () to avoid initialization races.
2639
2640         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2641         mono_arch_exceptions_init () function.
2642
2643         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2644
2645 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * mini.c (mono_get_domain_intrinsic): New helper function.
2648         (mono_get_thread_intrinsic): Ditto.
2649
2650         * mini-arm.c mini-ia64.c: Use the new helper functions.
2651         
2652         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2653         the last constrained_call change, since it is needed in the non-AOT
2654         case as well.
2655
2656         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2657         
2658         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2659         mono_get_lmf_addr () on arm eabi linux.
2660
2661 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2664         code sequence which matches a non-virtual call.
2665
2666 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2667
2668         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2669         stack pointer (r1).
2670
2671 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2674         runtime-invoke wrappers, since they are also shared based on signature.
2675
2676 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2677
2678         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2679         info from the (correct) context.
2680
2681 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2684         
2685         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2686         using dwarf unwinding info. Not yet used.
2687
2688         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2689
2690 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2691
2692         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2693         descriptors.
2694
2695         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2696         special case and handle mono_arch_delegate_invoke_impl() returning
2697         function descriptors.
2698
2699         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2700         trampolines return function descriptors, too.
2701
2702 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2705         out_of_line optimization.
2706
2707 2009-01-21  Martin Baulig  <martin@ximian.com>
2708
2709         * mini.h
2710         (MonoCompile): Added `disable_deadce_vars' to disable removing
2711         unused variables.
2712
2713         * mini.c
2714         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2715         inside the debugger.
2716
2717         * liveness.c (mono_analyze_liveness): Don't remove any unused
2718         variables if `cfg->disable_deadce_vars' is set.
2719
2720 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2721
2722         * method-to-ir.c: Only apply exception constructor optimization if
2723         the the method actually belongs to an exception class.  Fixes
2724         #467456.
2725
2726 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2729         change inside a #ifdef __mono_ppc64__.
2730
2731         * aot-compiler.c (compile_method): Remove the previous limitation.
2732
2733         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2734         on type variables in AOTed code.
2735         
2736         * aot-compiler.c (compile_method): Skip generic methods having type 
2737         constraints on their generic parameters.
2738
2739         * aot-compiler.c (compile_method): Check for methods which cannot be
2740         encoded inside RGCTX_FETCH patches as well.
2741
2742         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2743         build.
2744
2745 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2746
2747         * method-to-ir.c: Force the vtable variable in shared generic code
2748         for the case that they might show up on a stack trace where they
2749         are needed.
2750
2751         * mini-exceptions.c: Save and use generic sharing info as well as
2752         IP in stack traces to resolve shared generic instantiations.
2753
2754 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2757         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2758
2759 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2760
2761         * method-to-ir.c: Do generic sharing for array constructors.
2762
2763 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2764
2765         * mini-exceptions.c (mono_print_thread_dump): Add information
2766         about the thread state using wapi_current_thread_desc.
2767
2768 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2769
2770         * basic-simd.cs: Tests for the new constructors. 
2771
2772 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2773
2774         * mini-ops.h: Added OP_EXPAND_*
2775
2776         * cpu-x86.md: Same.
2777
2778         * mini-x86.c (mono_arch_output_basic_block): Same.
2779         
2780         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2781
2782 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2783
2784         * iltests.il.in: Add a test for #467385.
2785
2786 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2787
2788         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2789         thread been cleaned up is not the same currently in execution.
2790
2791         Fixes appdomain-unload crashes on windows, osx and linux variants
2792         without the __thread keyword.
2793
2794 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2795
2796         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2797         (koush@koushikdutta.com). Implement this for android.
2798
2799         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2800         begins with a digit.
2801
2802         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2803         mono_marshal_get_write_barrier ().
2804
2805 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2808         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2809         that pass them on a register pair.
2810
2811         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2812         test was crashing due to that.
2813
2814 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2815
2816         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2817         trampoline code. Include ucontext.h only if available.
2818
2819 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2820
2821         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2822         and doesn't check whether it's sharable, like it was before
2823         removing the shared generics hash.  This brings IronPython
2824         performance back to what it was before that change.
2825
2826 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2827
2828         * method-to-ir.c: Handle delegate invocation optimization earlier,
2829         otherwise it would be handled (much more slowly) by the
2830         final/sealed optimization.
2831
2832 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2833
2834         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2835         domain is not set. Fixes #465864.
2836
2837 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2838
2839         * method-to-ir.c: Don't stop sharing of generic methods with catch
2840         clauses - we already handle those.
2841
2842 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2843
2844         * mini.c, mini.h: lookup_generic_method() is now
2845         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2846         making the shared_generics_hash obsolete.
2847
2848 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2849
2850         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2851         use the red zone.  Make room on the stack first and then use it,
2852         not the other way around.
2853
2854 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2855
2856         * mini.c (mini_init): Call mono_xdebug_init ().
2857
2858         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2859
2860 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2861
2862         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2863
2864         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2865         trampolines.
2866
2867         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2868         debug+unwind info for trampolines.
2869
2870         * mini.c (mono_create_unwind_op): New helper function.
2871
2872         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2873
2874 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2875
2876         * aot-compiler.c: Fix the build.
2877
2878 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * Makefile.am: Update dtrace-prelink.sh location.
2881
2882 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2883
2884         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2885         optimization. Fixes #464520.
2886
2887 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2888
2889         * mini-amd64.c : Adding code to save/restore non-volatile registers
2890            on Winx64.
2891
2892         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2893           registers on Winx64.
2894
2895         Contributed under MIT/X11 license.
2896
2897 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2900         __GNUC_MINOR__ which can break when the major version changes.
2901
2902 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2903
2904         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2905
2906 2009-01-07  Geoff Norton  <gnorton@novell.com>
2907
2908         * helpers.c:  Allow mono -v -v -v to work on darwin.
2909
2910 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2911
2912         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2913           pattern. 
2914
2915         Contributed under MIT/X11 license.
2916
2917 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2920         instead of directly accessing type->data.klass. Fixes #462016.
2921         (mono_allocate_stack_slots_full): Ditto.
2922
2923         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2924         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2925
2926         * aot-compiler.c (emit_plt): Fix ARM build.
2927
2928 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2931         
2932         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2933         change.
2934
2935         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2936         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2937         #463357.
2938
2939         * iltests.il.in: Add a regression test.
2940
2941 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2944
2945 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2946
2947         * basic-simd.cs: Add a regression test for #462457.
2948
2949 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2950
2951         * mini-ops.h: Add a definition of XPHI.
2952
2953         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2954
2955         * ssa.c (op_phi_to_move): Handle XPHI.
2956
2957         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2958
2959         Fixes #462457
2960
2961 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2964
2965 2008-12-31  Geoff Norton  <gnorton@novell.com>
2966
2967         * mini-ppc.c: The prolog size allocated can be too small for darwin
2968         ppc32 under certain circumstances.  Also fix a small logic bug.
2969
2970 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2973         while loading AOT methods.
2974
2975         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2976         since only the former is nulled out after a successful cast. This prevents
2977         crashes with rethrown exceptions when using --debug=casts.
2978
2979 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2980
2981         * mini.h: New macro for checking whether a method is final,
2982         i.e. whether the method or its class is marked final.
2983
2984         * method-to-ir.c: Use the new macro for all final-checks
2985         consistently.  Fixes the crash in the System.ServiceModel tests.
2986
2987 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2988
2989         * mini-exceptions.c (get_exception_catch_class): Corrected another
2990         overly strict assertion.
2991
2992 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2993
2994         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2995         Clobbering it is not allowed because the caller might use it as
2996         the vtable register in the interface call.
2997
2998 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2999
3000         * mini-exceptions.c (get_exception_catch_class): Corrected an
3001         overly strict assertion.
3002
3003 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3004         
3005         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3006
3007         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3008
3009         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3010
3011         * cpu-mips.md: correct lengths for certain long_ opcodes.
3012
3013         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3014
3015         * 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().
3016         
3017 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3018
3019         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3020         
3021 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3022         
3023         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3024         
3025 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3026
3027         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3028         next basic block.
3029         
3030 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3031
3032         * 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
3033
3034         * 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)
3035         
3036 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3037         
3038         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3039         
3040 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3043         gshared code. Fixes #458947.
3044
3045         * generics.cs: Add a test.
3046
3047 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3048         
3049         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3050         
3051         * mini-mips.c: first pass n32 code generation.
3052
3053         * mini-mips.h: datatypes and defines for n32 support.
3054
3055         * exceptions-mips.c: first pass n32 code generation.
3056         
3057         * tramp-mips.c: first pass n32 code generation.
3058         
3059         * cpu-mips.md: add long_ opcodes.
3060         
3061 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3062
3063         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3064
3065         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3066         
3067         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3068         
3069         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3070
3071         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3072
3073         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3074
3075         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3076
3077         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3078
3079         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3080
3081 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3084
3085 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3086
3087         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3088
3089 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3090
3091         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3092         descriptors for helper functions directly in front of the code.
3093
3094 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3095
3096         * method-to-ir.c: Removed an unnecessary assertion.
3097
3098 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * method-to-ir.c: Merge SGEN changes from the old JIT.
3101
3102 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * driver.c (compile_all_methods_thread_main): Handle failure of
3105         mono_get_method ().
3106
3107 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3108
3109         * mini-ppc.c: Merged with mini-ppc64.c.
3110
3111         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3112
3113         * Makefile.am: Use the same sources for PPC and PPC64.
3114
3115         * mini-ppc64.c: Removed.
3116
3117 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3118
3119         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3120         code to mono_bb_is_fall_through.
3121         
3122         * branch-opts.c (mono_remove_critical_edges): Same.
3123
3124 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3125
3126         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3127         expect that an OP_BR_REG will be there.
3128
3129 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3130
3131         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3132         for the many branch ops. The original check miss OP_BR_REG.
3133
3134         Fixes #457574.
3135         
3136 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3137
3138         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3139
3140 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3143         while holding the aot lock.
3144
3145 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3146
3147         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
3148         
3149 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3150
3151         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
3152           to release all runtime callable wrappers held by the runtime.
3153
3154         Contributed under MIT/X11 license.
3155
3156 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3157
3158         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
3159           for Winx64.
3160
3161         Contributed under MIT/X11 license.
3162
3163 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3164
3165         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
3166         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3167
3168 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3169
3170         * cpu-mips.md: fix ckfinite length
3171
3172         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3173         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3174         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3175         
3176 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3177
3178         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3179         
3180 2008-12-08  Geoff Norton  <gnorton@novell.com>
3181
3182         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3183         size by 8 bytes as well.
3184
3185 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3186
3187         * basic-simd.cs: Fix method names for Vector16b.
3188         
3189 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3190
3191         * basic-simd.cs: Fix method names for Vector16sb.
3192
3193 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3194
3195         * basic-simd.cs: Fix method names for Vector8us.
3196         
3197 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3198
3199         * basic-simd.cs: Fix method names for Vector8s.
3200         
3201 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * basic-simd.cs: Fix method names for Vector4ui.
3204
3205 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3206
3207         * basic-simd.cs: Fix method names for Vector2l.
3208
3209 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3210
3211         * basic-simd.cs: Fix method names for Vector2d.
3212
3213 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3214
3215         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3216         that are extension methods.
3217
3218 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3219
3220         * basic-simd.cs: Fix method names for Vector4f.
3221
3222 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3225         as such. Fixes #456669.
3226
3227 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3228
3229         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3230         
3231 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3232
3233         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3234         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3235         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3236         (mips_adjust_stackframe): handle FP spills
3237                 
3238         * mini-ops.h: add mips_mtc1_s2
3239         
3240         * cpu-mips.md: add mips_mtc1_s2
3241         
3242 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * unwind.c: New file, move the unwind info encoding functions here from
3245         aot-compiler.c, so they could be used at runtime too.
3246
3247 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3248
3249         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3250         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3251         
3252 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3253
3254         * mini-mips.c: cleanup warnings
3255         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3256         (mips_adjust_stackframe): handle case of taking the address of stack locals
3257         
3258 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * aot-compiler.c: Implement a few functions missing from the asm writer.
3261         (emit_method_code): Only write symbols for methods when using the bin
3262         writer, since the assembler can't deal with the characters in our method
3263         names.
3264
3265         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3266
3267         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3268         call.
3269
3270         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3271         a bit to also restore %rax.
3272
3273 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3274
3275         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3276
3277 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3278
3279         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3280         arguments.
3281
3282 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3283
3284         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3285
3286         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3287         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3288
3289         * exceptions-ppc64.c: Removed.
3290
3291         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3292
3293 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3294
3295         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3296         tramp-ppc64.c.
3297
3298         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3299
3300         * tramp-ppc64.c: Removed.
3301
3302 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3305         the TYPESPEC table.
3306
3307 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3308
3309         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3310
3311         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3312         mini-ppc.h instead of mini-ppc64.h.
3313
3314         * mini-ppc64.h: Removed.
3315
3316 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3317
3318         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3319         
3320         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3321         
3322 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3323
3324         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3325         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3326         code easier.
3327
3328 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3329
3330         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3331
3332 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3335
3336 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * basic-simd.cs: Tests for operator == and != on Vector4f.
3339
3340 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3341
3342         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3343
3344         * simd-intrinsics.c: Kill useless enum.
3345
3346 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3347
3348         * cpu-mips.md: add long_conv_to_ovf_i4_2
3349         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3350
3351 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3352
3353         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3354         
3355         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3356
3357 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3358
3359         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3360         
3361 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * basic-simd.cs: Add tests for new methods.
3364
3365 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3366
3367         * simd-intrinsics.c: Add support for operator == and !=
3368         on Vector4(u)i.
3369
3370         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3371
3372 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3373
3374         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3375
3376 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3379
3380         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3381         MONO_PATCH_INFO_ICALL_ADDR.
3382
3383         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3384
3385         * aot-compiler.c: Resurrect full-aot support.
3386
3387 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3388
3389         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3390         
3391 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3392
3393         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3394         
3395 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3396
3397         * basic-simd.cs: Fix tests to work under ppc.
3398         Remove tests for methods that will be removed.
3399
3400 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3401
3402         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3403         generic type (via a typedef or typeref) correctly.
3404
3405 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3408         diagnose an assertion failure.
3409
3410 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3411
3412         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3413         Fix trampoline size.
3414
3415         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3416         conversion opcodes are implemented natively instead via emulation.
3417
3418 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3419
3420         * cpu-mips.md: remove mips_xori
3421
3422         * mini-ops.h:  remove mips_xori
3423
3424         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3425
3426         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3427         
3428         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3429         
3430 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3431
3432         * cpu-mips.md: fix instruction lengths.
3433
3434         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3435
3436         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3437
3438         * mini-ops.h: fix slti / sltiu op profiles.
3439         
3440 2008-12-02  Martin Baulig  <martin@ximian.com>
3441
3442         * method-to-ir.c (mono_method_to_ir): Disable debugging
3443         information for the init locals block to make the debugger stop
3444         after all locals have been initalized.
3445
3446 2008-12-02  Martin Baulig  <martin@ximian.com>
3447
3448         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3449         running inside the debugger.
3450
3451 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3454         is enabled.
3455
3456         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3457         alu->alu imm optimization which only shows if deadce is disabled.
3458
3459         * aot-compiler.c: Rename the function names for the binary and asm writers
3460         so they can coexist in the same process. Rework the xdebug code to use the
3461         asm writer. This avoids the need to call into the runtime to dump the
3462         debugging info. Add more debugging info for types.
3463
3464         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3465
3466         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3467         cpu description tables, they can't occur in cpu-<ARCH>.md.
3468
3469         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3470         the stack in CEE_LDFLDA. Fixes #450542.
3471
3472         * generics.cs: Add a new test.
3473
3474 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3475
3476         * mini-ops.h: updated MIPS opcodes
3477         * mini-mips.c: decompose long opts
3478         * mini-mips.h: decompose long opts
3479         
3480 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3481
3482         * cpu-mips.md: fix length on int_rem_un
3483         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3484         
3485 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3488
3489         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3490
3491 2008-11-29  Martin Baulig  <martin@ximian.com>
3492
3493         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3494         mono_debug_using_mono_debugger() in addition to the
3495         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3496
3497 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3498
3499         * mini-ops.h: updated more MIPS opcodes
3500         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3501         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3502         
3503 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3504
3505         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3506
3507 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3508
3509         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3510         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3511         * mini-ops.h: correct selected mips opcode entries
3512         
3513 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3514
3515         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3516         make them work.
3517
3518 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3519
3520         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3521
3522 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3523
3524         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3525         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3526         * mini-mips.h: disable IMT
3527         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3528         
3529 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3530
3531         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3532
3533 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3534
3535         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3536
3537 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3540         consistency.
3541
3542 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3543
3544         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3545         for Set/GetVector aligned versions.
3546
3547 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3548
3549         * basic-simd.cs: Add tests for Get/SetVector.
3550
3551 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3552
3553         * mini.c: Removed g_slist_append_mempool().  Now in
3554         metadata/mempool.c.
3555
3556 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3559         size properly and make the bounds check optional.
3560
3561         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3562         for SetVector and IsAligned.
3563
3564 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3565
3566         * mini.c: Remove unused mono_normalize_opcodes () function.
3567
3568 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3569
3570         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3571         using the new atomic add ops now.
3572
3573         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3574         add.
3575
3576 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3577
3578         * mini-ppc64.c: Several fixes.
3579
3580 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3581
3582         * cpu-mips.md: added jump_table
3583         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3584
3585 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3586
3587         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3588
3589 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3590
3591         * mini-ops.h: corrected a handful of MIPS opcodes.
3592
3593 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3594
3595         * aot-compiler.c: MIPS to use ELF writer
3596
3597 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3598
3599         * mini-codegen.c: remove MIPS specific assert.
3600
3601 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3602
3603         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3604         fixes.  PPC64 now passes most of the runtime regressions.
3605
3606 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3609         volatile intervals a bit.
3610
3611 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3612
3613         * basic-long.cs: New test case.
3614
3615 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * mini.c (mini_method_compile): Disable globalra for large methods for 
3618         now.
3619
3620         * regalloc2.c (order_moves): Add fp support.
3621
3622         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3623         source bblock ends with an OP_BR_REG.
3624
3625         * ratests.cs: Add a new test.
3626
3627 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3628
3629         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3630         sharing.  PPC64 now passes generics.exe.
3631
3632 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3633
3634         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3635
3636 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3639         memory when mono_jit_info_table_find () can't find the method in the
3640         LMF case.
3641
3642         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3643         AOTed code too.
3644         
3645         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3646         writer too.
3647
3648 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3649
3650         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3651         Several fixes.  PPC64 now runs exceptions.exe and
3652         devirtualization.exe.
3653
3654 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3655
3656         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3657         arrays.exe and basic-math.exe.
3658
3659 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3660
3661         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3662         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3663
3664 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3665
3666         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3667
3668 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3669
3670         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3671
3672         * ir-emit.h: Move macros from method-to-ir.c to here.
3673
3674 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3675
3676         * mini-ops.h: Correct the long simd ops to use LREG.
3677
3678 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3679
3680         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3681         
3682         * mini-ops.h: Correct the dreg type of a few long opcodes.
3683
3684         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3685         Add netbsd support.
3686
3687 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3688
3689         * mini-ppc.c: remove negative stack references in epilog
3690         for platforms that don't support the red zone.
3691
3692 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3693
3694         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3695         point regs.  Now PPC64 passes basic-calls.exe.
3696
3697 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3698
3699         * basic-simd.cs: Add tests for accessors of Vector2l.
3700
3701 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3702
3703         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3704
3705         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3706         
3707         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3708
3709 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3710
3711         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3712         PPC64 passes basic-long.exe.
3713
3714 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3715
3716         * decompose.c: Decompose carry and overflow add on PPC64 like on
3717         other 64 bit archs.  Don't decompose sub at all on PPC64.
3718
3719         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3720         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3721         basic-long.exe.
3722
3723 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3724
3725         * basic-simd.cs: Add tests for accessors of Vector2d.
3726
3727 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3728
3729         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3730
3731         * cpu-x86.md: Same.
3732
3733         * mini-x86.c (mono_arch_output_basic_block): Same.
3734         
3735         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3736
3737 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3738
3739         * basic-simd.cs: Add tests for accessors of Vector4f.
3740
3741 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3742
3743         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3744
3745         * cpu-x86.md: Same.
3746
3747         * mini-x86.c (mono_arch_output_basic_block): Same.
3748         
3749         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3750
3751 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3752
3753         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3754
3755 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3756
3757         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3758
3759         * cpu-x86.md: Same.
3760
3761         * mini-x86.c (mono_arch_output_basic_block): Same.
3762         
3763         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3764
3765 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3766
3767         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3768
3769 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3770
3771         * simd-intrinsics.c: Enable setters for Vector16sb.
3772
3773 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3774
3775         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3776
3777         * cpu-x86.md: Same.
3778
3779         * mini-x86.c (mono_arch_output_basic_block): Same.
3780         
3781         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3782
3783 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3784
3785         * simd-intrinsics.c: Implement setter for Vector8us.
3786
3787 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3790         for dead variables.
3791
3792 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3793
3794         * mini-ppc.c: remove references to the red zone in the prolog
3795         (for systems that don't support it).
3796
3797 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3798
3799         * cpu-ppc64.md: Fixed a few instruction lengths.
3800
3801         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3802         now.
3803
3804 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3805
3806         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3807         basic.exe now.
3808
3809 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3812
3813 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3814
3815         * mini-ops.h: Added OP_INSERT_I2.
3816
3817         * cpu-x86.md: Same.
3818
3819         * mini-x86.c (mono_arch_output_basic_block): Same.
3820         
3821         * simd-intrinsics.c: Implement setter for Vector8s.
3822
3823         * simd-methods.h: Add the names of get setters of Vector8s.
3824
3825 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3828         
3829         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3830         parameters.
3831
3832         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3833
3834 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3835
3836         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3837         for PPC64.  An empty program runs now.
3838
3839 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3840
3841         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3842
3843         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3844         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3845         info for JITted code is emitted into a shared library, loadable into gdb.
3846
3847 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3848
3849         * Makefile.am: Changes to build PPC64.
3850
3851         * mini-arch.h: Include mini-ppc64.h on PPC64.
3852
3853 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3854
3855         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3856         in PPC code up to r119147.
3857
3858 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3859
3860         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3861         cpu-ppc64.md: Changes for PPC64.
3862
3863         Based on code submitted by andreas.faerber@web.de at
3864         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3865         X11/MIT license.
3866
3867 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3868
3869         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3870         cpu-ppc64.md: Copied from the corresponding PPC files from
3871         r118846.
3872
3873 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3874
3875         * mini-ops.h: Added OP_ROUND.
3876
3877         * cpu-x86.md: Added round.
3878
3879         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3880
3881         * basic-math.cs: Added test_0_round to test rounding.
3882
3883         Contributed under MIT/X11 license.
3884
3885 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3886
3887         * aot-compiler.c : Fix the Winx64 build.
3888
3889         Contributed under MIT/X11 license.
3890
3891 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3892
3893         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3894         in OP_EXTRACT_R8 to avoid possible stack corruption.
3895
3896 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3897
3898         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3899
3900         * cpu-x86.md: Added extract_r8.
3901
3902         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3903         
3904         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3905         a couple of OP_EXTRACT_I4.
3906
3907         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3908
3909         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3910
3911 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3912
3913         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3914         and not 4.1. 
3915
3916 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3919         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3920
3921         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3922         are not needed any more.
3923
3924         * mini.h: Remove the unused INS_LIST macros.
3925
3926         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3927         longer needed.
3928
3929         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3930         ir-emit.h.
3931
3932         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3933         mono_alloc_ireg () instead.
3934
3935         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3936         macros.
3937
3938         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3939         on amd64.
3940
3941         * aot-runtime.c (load_aot_module): Disable AOT when running under
3942         CAS.
3943
3944         * mini-amd64.h: Change the monitor fastpath defines to check for
3945         !PLATFORM_WIN32 so they work on *bsd too.
3946
3947         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3948
3949         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3950
3951         * mini.h (MonoCompile): Remove new_ir flag.
3952
3953         * regalloc.h regalloc.c: Remove unused code.
3954
3955         * cpu-*.md: Remove more unused opcodes.
3956
3957         * simple-cee-ops.h simple-mini-ops.h: Removed.
3958
3959         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3960         
3961 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * aliasing.h: Removed.
3964
3965         * *.c: Remove references to aliasing.h and inssel.h.
3966
3967         * mini.c: Remove additional unused functions.
3968
3969         * mini-ops.h cpu-*.md: Remove unused opcodes.
3970
3971 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3972
3973         Remove the old JIT code.
3974
3975         * inssel*.brg: Removed.
3976
3977         * ssa.c abcremoval.c aliasing.c: Removed.
3978
3979         * ssa2.c: Renamed to ssa.c.
3980
3981         * abcremoval2.c: Renamed to abcremoval.c.
3982
3983         * *.c: Removed all !cfg->new_ir code.
3984
3985         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3986         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3987
3988         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3989         
3990 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3991
3992         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3993         to simplify the code and cut back on the number of global symbols in the AOT
3994         file.
3995         
3996         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3997
3998 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4001         with the got/got_info tables.
4002
4003         * mini.h: Bump AOT file format version.
4004         
4005         * unwind.h: New file, contains definitions for stack unwinding.
4006
4007         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4008         to cfg->unwind_ops.
4009         
4010         * aot-compiler.c: Generalize the emitting of unwind information to use the
4011         information in cfg->unwind_ops.
4012
4013         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4014
4015         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4016         AOT method frames. Enable writing symbols for methods by default.
4017
4018 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4019
4020         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4021         and make it work with vectors of element sizes 1, 2 and 4.
4022
4023         * simd-intrinsics.c: Enable getter for all vectors with element size
4024         1, 2 or 4.
4025
4026         * simd-methods.h: Add the names of other getters.
4027
4028         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4029
4030         * cpu-x86.md: Same.
4031
4032         * mini-x86.c: Same.
4033
4034 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4035
4036         * mini-ppc.h: portability fix.
4037
4038 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4039
4040         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4041         buggy and will overwrite it.
4042
4043 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4046         Use it to emit local symbols for all methods so AOTed methods show up with
4047         their full name in gdb/valgrind output.
4048
4049 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4050
4051         * mini-ppc.c: portability fixes.
4052
4053 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4056         entries out of the if (!generic_shared...) code so it is always done.
4057         (mono_class_init_trampoline): Do the patching when running under valgrind
4058         too, newer versions of valgrind have no problems with it.
4059
4060 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4063         further sections.
4064
4065 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4066
4067         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4068         filters.
4069
4070 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4071
4072         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4073
4074 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4075
4076         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4077
4078         * cpu-x86.md: Same.
4079
4080         * mini-x86.c: Same.
4081
4082         * simd-intrinsics.c: Same.
4083
4084 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4085
4086         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4087
4088 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4089
4090         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4091         to work with more Vector types.
4092
4093 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4094
4095         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4096         store the elemens directly instead of using and intermediate.
4097
4098 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4099
4100         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4101
4102         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4103         to preserve %eax for aot plt trampolines.
4104
4105         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4106         (encode_method_ref): Flag synchronized methods so they won't go through
4107         the AOT trampoline.
4108
4109         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4110         wrappers.
4111
4112         * cpu-ia64.md (jmp): Increase max length.
4113
4114 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4115
4116         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4117         open generic classes.
4118
4119         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4120
4121         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4122         box+brtrue optimization since it causes test failures on x86.
4123
4124 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4125
4126         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4127
4128         * cpu-x86.md: Same.
4129
4130         * mini-x86.c: Same.
4131
4132         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4133         for simd ctor values. 
4134
4135         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4136         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4137
4138 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4139
4140         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4141         LogicalRightShift.
4142
4143         * simd-instrincs.c: Same.
4144
4145         * basic-simd.cs: Same.
4146
4147 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * ratests.cs: Add more tests.
4150
4151         * regalloc2.c (add_spill_code): Handle more corner cases.
4152
4153 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
4156         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
4157         both the source an destination of an instruction.
4158
4159 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4160
4161         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
4162         wapihandles.c: more portability changes.
4163
4164 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
4165
4166         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4167         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4168         safe to execute in a signal handler and the kernel provides better
4169         the info in /proc/self/smaps. Avoid the assert on sigaction during
4170         cleanup.
4171
4172 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4173
4174         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4175         do the bblock linking hack if it is actually needed.
4176
4177         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4178         up linking.
4179
4180         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4181         crash problem is fixed.
4182
4183         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4184         bblocks.
4185
4186         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4187         for catch clauses.
4188         (mini_method_compile): Set the starting value of next_vreg to 
4189         MAX_IREGS + MAX_FREGS when using globalra.
4190
4191         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4192         filter clauses with BB_EXCEPTION_HANDLER.
4193
4194         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4195
4196 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4197
4198         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4199         space for stdcall.  Fixes regressions on Win32.
4200
4201 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4204         bblocks.
4205         (linear_scan): Remove an assert which doesn't seem to be needed.
4206
4207         * local-propagation.c (mono_local_deadce): Avoid a call to
4208         MONO_DELETE_INS which would screw up the instruction linking.
4209
4210         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4211
4212         * regalloc2.c: Upgrade to work the current JIT code.
4213
4214 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4217         case.
4218
4219         * aot-runtime.c: Remove some dead code.
4220
4221         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4222         consistency.
4223         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4224
4225         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4226         trampolines using sscanf since atoi doesn't work on large unsigned values.
4227
4228         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4229         Initialize code_size.
4230
4231 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4232
4233         * method-to-ir.c (mini_emit_inst_for_method): Make
4234         Interlocked.CompareExchange work for Int arguments on 32 bit
4235         archs, as well.
4236
4237 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4238
4239         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4240
4241 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4242
4243         * main.c Fix MSVC build.
4244
4245         Contributed under MIT/X11 license.
4246
4247 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4248
4249         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4250         alignment larger than 8 bytes are aligned correctly, too.
4251
4252         * mini.c: Honor the min_align field of MonoClass when laying out
4253         the stack.
4254
4255 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4258
4259         * aot-compiler.c (emit_plt): Fix a warning.
4260         
4261         * aot-compiler.c: Implement ARM support in the binary writer.
4262
4263 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * basic-simd.cs: Add test for getter with byref arg.
4266         Fix the naming of a few tests.
4267         Add missing checks to a test.
4268
4269 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4270
4271         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4272
4273         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4274         most of the full-aot support for monitor enter/exit trampolines.
4275
4276         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4277         enter/exit trampoline creation functions.
4278
4279         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4280         make dist.
4281
4282 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4283
4284         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4285         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4286         implement the needed functionality without adding crap to the runtime.
4287
4288 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4289
4290         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4291         non-x86 builds.
4292
4293         * mini.c (mono_build_date): New global version holding the build date in
4294         string format.
4295         
4296         * Makefile.am (buildver.c): Generate a file containing the build date.
4297
4298         * main.c: Set the build date from the generated file.
4299
4300         * mini.c (mono_get_runtime_build_info): New helper function returning build
4301         information in a string format.
4302         
4303         * driver.c (mono_main): Print the build date in --version.
4304
4305         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4306         file when the bind-to-runtime-version option is used.
4307
4308 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4311
4312 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * simd-methods.h: Rename prefetch methods.
4315
4316         * simd-intrinsics.c: Same.      
4317
4318 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4319
4320         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4321         sizes.
4322
4323 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * aot-compiler.c: Use the bundled elf header files instead of depending on
4326         the system one.
4327         
4328         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4329         mempool.
4330
4331         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4332         on every call.
4333
4334 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4335
4336         * cpu-x86.md: Add store nta ops.
4337
4338         * mini-ops.h: Same.
4339
4340         * mini-x86.c: Same.
4341
4342         * mini.h: Add an enum for simd prefetch modes.
4343
4344         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4345         of store. Use the changed code to support store nta.
4346
4347         * simd-intrinsics.c: Add prefetch ops for all vector types.
4348
4349 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4350
4351         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4352         threads.
4353         
4354         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4355         names.
4356
4357         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4358         trampolines.
4359
4360 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4361
4362         * mini-x86.c: Fixed commit.
4363
4364 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4367
4368 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4369
4370         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4371         and MONITOR_EXIT, for the ASM fastpaths.
4372
4373         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4374         available.
4375
4376         * mini.c, patch-info.h: Signature and patch infos for
4377         Monitor.Enter/Exit trampolines.
4378
4379         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4380
4381         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4382         Monitor.Enter/Exit ASM fastpath for Linux.
4383
4384 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4387
4388         * objects.cs: Add a new test.
4389         
4390         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4391
4392         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4393         if MONO_LOG_LEVEL is set.
4394
4395         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4396
4397         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4398
4399         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4400         
4401         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4402         of file offsets. Align the sections belonging to the data segment to 
4403         PAGESIZE.
4404
4405 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4408         elf.h. Port it to amd64.
4409
4410 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4411
4412         * driver.c: Enable SIMD by default.
4413
4414 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4415
4416         * cpu-x86.md: Add prefetch op.
4417
4418         * mini-ops.h: Same.
4419
4420         * mini-x86.c: Same.
4421
4422         * mini.h: Add an enum for simd prefetch modes.
4423
4424         * simd-methods.h: Add prefetch function names.
4425
4426         * simd-intrinsics.c: Add prefetch ops for all vector types.
4427
4428 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4429
4430         * aot-compiler.c (emit_bytes): Speed this up a little.
4431
4432 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * aot-compiler.c: Add JIT time etc. statistics.
4435         
4436         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4437
4438         * mini.h (MonoCompile): Add 'got_offset' field.
4439
4440         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4441         method_got_offsets array.
4442
4443         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4444         wrappers.
4445
4446         * aot-compiler.c (compile_method): Add generic method instances referenced
4447         by the method to the list of methods to be compiled, this is required so if
4448         A<T> references B<T>, and another assembly references A<int>, then it will
4449         also get a copy of B<int>.
4450
4451         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4452         when checking for monitor enter/exit.
4453
4454 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4455
4456         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4457         for Monitor.Enter and Monitor.Exit if enabled.
4458
4459         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4460         Solaris.
4461
4462 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4465         of an OP_MOVE. Fixes #440046.
4466
4467         * basic-long.cs: Add a new test.
4468
4469 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4470
4471         * mini.h: Add synchronization note for the managed counter-part.
4472
4473         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4474         returns the simd caps of the current cpu.
4475
4476 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4477
4478         * basic-simd.cs: Remove Console.WriteLine.
4479
4480 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4481
4482         * basic-simd.cs: New tests for Vector2ul.
4483
4484 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * simd-intrinsics.c: Add new vector type Vector2ul.
4487
4488 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4489
4490         * basic-simd.cs: New tests for Vector2l.
4491
4492 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4493
4494         * cpu-x86.md: Add long version of most packed int ops.
4495
4496         * mini-ops.h: Same.
4497
4498         * mini-x86.h: Same.
4499
4500         * simd-intrinsics.c: Add new vector type Vector2l.
4501
4502 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4505
4506         * simd-methods.h: Remove SN_op_BitwiseXor.
4507
4508 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4511         alignment.
4512
4513 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4514
4515         * basic-simd.cs: Test for Vector2d.
4516
4517         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4518         value.
4519
4520 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4521
4522         * cpu-x86.md: Add double version of all packed float ops.
4523
4524         * mini-ops.h: Same.
4525
4526         * mini-x86.h: Same.
4527
4528         * simd-intrinsics.c: Add new vector type Vector2d.
4529
4530         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4531
4532         * simd-methods.h: Add Duplicate.
4533
4534 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4535
4536         * basic-simd.cs: Test for packing with signed saturation.
4537
4538 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4539
4540         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4541         found in the TYPESPEC table.
4542
4543 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4546         too.
4547
4548         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4549
4550         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4551         instead of the RVA, since the RVA can be changed by tools like the cil 
4552         stripper.
4553
4554         * method-to-ir.c (mono_method_to_ir2): Ditto.
4555
4556         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4557         (deserialize_variable): Ditto.
4558
4559 2008-10-25  Martin Baulig  <martin@ximian.com>
4560
4561         * debug-mini.c (write_variable): Use
4562         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4563
4564 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4565
4566         * cpu-x86.md: Add unsigned variants of packd and packw.
4567
4568         * mini-ops.h: Same.
4569
4570         * mini-x86.h: Emit the right instruction for packd and packw.
4571         Add unsigned variants of packd and packw.
4572
4573         * simd-intrinsics.c: Packd and packw were used in place of their
4574         unsigned variants. Change that.
4575         Add intrinsics for (Signed)PackWithSignedSaturation.
4576
4577         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4578
4579 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4582
4583 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4586
4587         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4588
4589         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4590         sse instructions.
4591
4592         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4593
4594 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4595
4596         * method-to-ir.c, mini.c: Special casing for the synchronized
4597         wrapper for the ldtoken+GetTypeFromHandle case.
4598
4599 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4602
4603         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4604         created/split bblocks.
4605
4606 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4607
4608         * mini-ops.h: Add packed signed mul high.
4609         
4610         * cpu-x86.md: Same.
4611
4612         * mini-x86.c (mono_arch_output_basic_block): Same.
4613
4614         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4615
4616         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4617
4618 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * basic-simd.cs: Tests for Vector16sb.
4621
4622 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4625
4626 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * mini-ops.h: Add packed signed min, max and compare greater.
4629         
4630         * cpu-x86.md: Same.
4631
4632         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4633         saturation.
4634
4635         * simd-methods.h: Add CompareGreaterThan.
4636
4637         * simd-methods.h: Remove CompareEquals.
4638
4639         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4640
4641         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4642
4643         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4644         CompareEqual.
4645
4646 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4647
4648         * basic-simd.cs: Fix tests due to change in the API.
4649
4650 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4651
4652         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4653
4654 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4655
4656         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4657
4658         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4659         inst_offset as this has invalid values for LDADDR.
4660
4661 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4662
4663         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4664
4665         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4666
4667 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4670         for accessing field->data.
4671
4672 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4673
4674         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4675
4676 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4679
4680         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4681
4682 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4683
4684         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4685         from the cfg mempool.
4686
4687 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * basic-simd.cs: Tests for new methods in Vector8us.
4690
4691 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4692
4693         * mini-ops.h: Add multiply and store high.
4694         
4695         * cpu-x86.md: Same.
4696
4697         * mini-x86.c (mono_arch_output_basic_block): Same.
4698
4699         * simd-methods.h: Same.
4700
4701         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4702         and CompareEqual.
4703
4704 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4705
4706         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4707         mono_class_setup_vtable ().
4708
4709         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4710         mono_class_get_vtable_entry () for accessing klass->vtable.
4711
4712         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4713
4714         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4715         found.
4716
4717         * method-to-ir.c (mono_save_token_info): Don't save references made from
4718         wrappers.
4719
4720         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4721         of generic instances.
4722
4723         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4724
4725 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4726
4727         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4728         OP_JMP depends on the method signature.  Calculate it properly.
4729
4730 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4731         
4732         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4733         called directly.
4734
4735         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4736         instances.
4737         (emit_extra_methods): Add another table mapping method indexes to 
4738         offsets in the extra_method_info table.
4739
4740         * mini.h: Bump AOT file format version.
4741         
4742         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4743         and mono_aot_get_method_from_token () into one function.
4744
4745 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4746
4747         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4748         separate counter.
4749
4750 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4751
4752         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4753         methods.
4754
4755         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4756         disable_aot.
4757
4758         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4759
4760         * mini.h: Bump aot file format version.
4761
4762         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4763         AOT file can contain native code for methods which are not in the METHOD
4764         table. Generate code for non-sharable generic instances of generic methods
4765         found in the METHODSPEC table.
4766         
4767         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4768         encoding generic type handles.
4769
4770         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4771         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4772
4773         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4774         macros + MONO_ADD_INS.
4775
4776         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4777         context as well.
4778
4779         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4780
4781         * mini.h: Bump aot file format version.
4782
4783         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4784
4785 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4786
4787         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4788         platforms, with definable stack alignment value.  Set to 16 now
4789         for all platforms.
4790
4791         * mini.c, mini.h, driver.c: Command line option for disabling
4792         stack alignment.
4793
4794 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * basic-simd.cs: Tests for new methods in Vector4ui.
4797
4798 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4799
4800         * mini-ops.h: Add packed int shuffle.
4801         
4802         * cpu-x86.md: Same.
4803
4804         * mini-x86.c (mono_arch_output_basic_block): Same.
4805
4806         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4807         extract mask, max, min, shuffle.
4808
4809         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4810
4811 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * basic-simd.cs: Tests for new methods in Vector8us.
4814
4815 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4816
4817         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4818         RuntimeTypeHandle, not a TypedReference.
4819
4820 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4821
4822         * simd-intrinsics.c: remove relocations.
4823
4824 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4825
4826         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4827         optimizations from the x86 backend.
4828
4829 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4830
4831         * simd-methods.h, simd-intrinsics.c: debloat method names and
4832         prepare for no relocations.
4833
4834 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4835
4836         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4837         
4838         * cpu-x86.md: Same.
4839
4840         * mini-x86.c (mono_arch_output_basic_block): Same.
4841
4842         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4843         extract mask, max, min and sum of absolute differences.
4844
4845         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4846         method name.
4847
4848 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4849
4850         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4851         Renamed one test for consistency.
4852
4853 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4854
4855         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4856         fix to the code that deal with other blocks.
4857
4858 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4859
4860         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4861
4862 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4863
4864         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4865         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4866         able to process the source reg.
4867
4868 2008-10-16  Martin Baulig  <martin@ximian.com>
4869
4870         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4871
4872         * inssel.brg: Add `OP_HARD_NOP'.
4873
4874         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4875
4876         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4877         `OP_HARD_NOP' instruction when running inside the debugger.
4878
4879         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4880         `OP_HARD_NOP' instruction when running inside the debugger.
4881
4882 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4883
4884         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4885         now works. The issue with the regalloc tripping up no longer
4886         happens.
4887
4888         * simd-intrinsics.c (load_simd_vreg): Same.
4889
4890 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4891         
4892         * basic-simd.cs: Tests for new Vector8ui methods.
4893
4894 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4897         only for type. This fixes crashes where MonoInst::klass is checked
4898         for ops of type != VTYPE or OBJ.
4899
4900         * simd-intrinsics.c (load_simd_vreg): Same.
4901
4902 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4903
4904         * mini-ops.h: Add ops for packed shuffle/max/avg and
4905         extract mask.
4906         
4907         * cpu-x86.md: Same.
4908
4909         * mini-x86.c (mono_arch_output_basic_block): Same.
4910
4911         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4912         extract mask.
4913
4914         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4915         to emit extract mask op.
4916
4917         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4918         to emit word shuffles.
4919
4920 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4921
4922         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4923         the largest alignment needed by a variable, but at least
4924         sizeof(gpointer).
4925
4926 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4927
4928         * basic-simd.cs: Tests for the fixes in the last commit.
4929
4930 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4931
4932         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4933         no longer handles STACK_PTR input.
4934
4935         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4936
4937         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4938         get_simd_vreg   but handles STACK_PTR input.
4939
4940         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4941         as the input can be an arbitrary pointer.
4942
4943         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4944         LDADDR local optimization directly otherwise use a store op.
4945
4946 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4947
4948         * basic-simd.cs: Tests for dup low and dup high.
4949
4950 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4951
4952         * mini-ops.h: Add dup low and dup high ops.
4953         
4954         * cpu-x86.md: Same.
4955
4956         * mini-x86.c (mono_arch_output_basic_block): Same.
4957
4958         * simd-intrinsics.c (vector4f_intrinsics): Same.
4959
4960 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4961
4962         * basic-simd.cs: Tests for recently added functionality.
4963
4964 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * mini-ops.h: Add remaining sse1 fp ops.
4967         
4968         * cpu-x86.md: Add remaining sse1 fp ops.
4969
4970         * mini-x86.c (mono_arch_output_basic_block): Same.
4971
4972         * mini.h: Add enum for simd FP compare conditions.
4973
4974         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4975
4976         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4977         so the backed can generate the appropriate op.
4978
4979 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4980         This patch squeese one more byte from the SimdIntrinsc struct.
4981
4982         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4983         a a shift amount intead of simply or'ing it.
4984
4985         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4986
4987         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4988         byte so we can have an aditional flags field without increasing struct size.
4989
4990         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4991         against the simd_supported_versions bitmask.
4992
4993         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4994
4995 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4996
4997         * mini.c: remove rawbuffer code (the only use here is unsafe because
4998         it takes locks during signal handling and the kernel now provides much
4999         better info in proc/pid/smaps these days).
5000
5001 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5004         OP_X86_PUSH_OBJ. Fixes #434620.
5005
5006         * objects.cs: Add a test.
5007         
5008 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5009
5010         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5011         that the packuswb/packusdw don't work with unsigned numbers for what
5012         would be negative numbers in signed format.
5013
5014         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5015         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5016
5017         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5018
5019         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5020
5021         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5022
5023         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5024
5025         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5026         add more ops.
5027
5028         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5029         version as the enum in mini.h.
5030
5031         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5032         for sse3 ops, check the simd_version field if present. This way the code
5033         works with all versions of sse.
5034
5035 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5036
5037         * simd-intrinsics.c: Fixed intrinsic name typo.
5038
5039         * mini.h: Added missing simd exported function.
5040
5041         * basic-simd.cs: Added tests for Vector4ui.
5042         Fixed broken test for Vector16b.
5043
5044 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5047         the max length to 64.
5048
5049 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5050
5051         * method-to-ir.c: Only do the fast virtual generic method call for
5052         non-wrapper methods.
5053
5054         * mini.h, mini-trampolines.c: The new generic virtual remoting
5055         trampoline handles virtual method calls via the vtable (as done by
5056         the fast virtual generic method calls) to remoting proxies.
5057
5058         * mini.c (mono_jit_create_remoting_trampoline): For generic
5059         methods reate a generic virtual remoting trampoline.
5060
5061         * mini-amd64.h: Enable fast virtual generic method calls again.
5062
5063 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5064
5065         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5066         restore registers when doing tail calls.
5067
5068 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5069
5070         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5071         Vector4ui.
5072
5073 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5074
5075         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5076
5077 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5080
5081 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5082
5083         * basic-simd.cs: Retrofit for API changes.
5084
5085 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5086
5087         * mini-ppc.c: Handle integer stack arguments for tail calls.
5088
5089 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5090
5091         * optflags-def.h: Removed sse3 optimization.
5092
5093         * driver.c: Same.
5094
5095         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5096         sse3.
5097
5098         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5099
5100         * mini.h: Added enumeration with simd versions.
5101
5102         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5103         for detecting SSE3.
5104
5105         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5106
5107         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5108
5109 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5110
5111         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5112
5113         * basic-simd.cs: Fixed test naming.
5114
5115 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5116
5117         * mini-ops.h: Added ops for packed and saturated math, shifts
5118         and packing/unpacking.
5119
5120         * cpu-x86.md: Added descriptors for the above ops.
5121
5122         * mini-x86.c: Added code to emmit the above ops.
5123
5124         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5125
5126 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5127
5128         * aot-compiler.c (compile_method): Enable AOT for generic code.
5129
5130         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5131
5132 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5133
5134         * mini.c: add a workaround for a common screwup that ends up blamed
5135         to mono (other processes blocking signal delivery).
5136
5137 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5138
5139         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5140         in the LDFLD/STFLD opcodes. Fixes #432673.
5141
5142         * iltests.il.in: Add a new test.
5143
5144 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5145
5146         * mini-arm.c: attach the thread in unmanaged->managed transitions
5147         using delegates (bug #433148).
5148
5149 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5150
5151        * basic-simd.cs: Use new ShuffleSel constants.
5152
5153 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
5154
5155         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
5156
5157         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
5158         only disable simd intrinsics if no sse2 is detected.
5159
5160         * optflags-def.h: Added sse3.
5161
5162         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
5163         is disabled.
5164
5165 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5168         when adding delegate-invoke wrappers.
5169
5170 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5171
5172         * Makefile.am: Reenable the simd tests.
5173
5174 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5175
5176         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5177           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5178           other vreg is allocated to that hreg.
5179
5180         Contributed under MIT/X11 license.
5181
5182 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5183
5184         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5185         yet checked in.
5186
5187 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * basic-simd.cs: New test suite for SIMD intrinsics.
5190
5191         * Makefile.am: Added new tests.
5192
5193 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5194
5195         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5196
5197         * mini-ops.h: Same.
5198
5199         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5200
5201         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5202         using SSE2 aware opcodes.
5203
5204         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5205         is enabled, this code path is only reachable if conversion ops are emmited after
5206         mono_method_to_ir.
5207
5208         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5209
5210         This optimization saves 6 bytes per conversion against the old version.
5211
5212 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * aot-compiler.c (compile_method): Don't skip methods referencing 
5215         generic methods without a corresponding entry in token_info_hash, since
5216         encode_method_ref () can handle all generic methods now.
5217
5218         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5219         generic context is set.
5220         
5221         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5222         generic sharing of LDTOKEN.
5223
5224 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5225
5226         * mini-amd64.h: Temporarily disabled fast virtual generic method
5227         calls because it breaks the System.Runtime.Remoting tests.
5228
5229 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5230
5231         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5232
5233         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5234         so inlining actually works.
5235         (check_inline_caller_method_name_limit): Ditto.
5236
5237 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5238
5239         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5240         64 bit safety (from Olaf Hering and Andreas Farber).
5241
5242 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5243         
5244         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5245         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5246         unused virtual call support code.
5247
5248         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5249         
5250         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5251         which can't use aot trampolines.
5252         (decode_patch): Don't create aot trampolines for methods which can't use
5253         them.
5254
5255         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5256         use aot trampolines.
5257
5258         * mini.h: Bump AOT image format version.
5259         
5260 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5261
5262         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5263         to save_token_info () since cmethod is inflated for constrained calls.
5264
5265         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5266
5267 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5268
5269         * Makefile.am: Add build rules for ppc64.
5270         This avoids the build failing at pedump with unresolved symbols
5271         due to lack of arch_sources. Instead it will now fail earlier
5272         due to lack of cpu-ppc64.md.
5273
5274         Contributed under MIT/X11 license.
5275
5276 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5277
5278         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5279         tail calls.
5280
5281         * iltests.il.in: Add test case for tail call with many arguments.
5282
5283 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5284
5285         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5286         to the fast virtual generic method code until the aot case is fixed.
5287
5288 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5289
5290         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5291
5292 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5293
5294         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5295         thunks.
5296
5297 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5298         
5299         * simd-intrinsics.c: Forgot to add this one.
5300
5301         * mini-codegen.c: Fix macro in case SIMD is not supported.
5302
5303 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5304         
5305         This patch land initial JIT support for simd intrinsics.
5306
5307         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5308
5309         * Makefile.am: Added simd-intrinsics.c
5310
5311         * simd-intrinsics.c: New file with simd instrinsic related
5312         code.
5313
5314         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5315
5316         * cpu-x86.md: Add simd related instructions.
5317
5318         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5319
5320         * driver.c: Added two new --regression variants.
5321
5322         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5323
5324         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5325
5326         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5327         extract some complicated logic to helper functions.
5328
5329         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5330
5331         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5332
5333         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5334         the specialized simplification pass.
5335
5336         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5337
5338         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5339
5340         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5341         table.
5342
5343         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5344         if MONO_ARCH_NEED_SIMD_BANK is defined.
5345
5346         * mini-ops.h: Added the new simd ops.
5347
5348         * mini-x86.c: Added mono_arch_xregname.
5349
5350         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5351
5352         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5353
5354         * mini-x86.h: Define simd related MONO_ARCH macros.
5355
5356         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5357
5358         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5359
5360         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5361         MONO_CLASS_IS_SIMD to deal with simd related IR.
5362
5363         * mini.h (MonoInst): Added spill_var to the backend union.
5364
5365         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5366
5367         * mini.h: Added forward declarations of the new simd fuctions.
5368
5369         * optflags-def.h: Added new optimization names SIMD.
5370
5371         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5372
5373         * regalloc.h: Added support for working with 3 register banks.
5374
5375         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5376
5377         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5378
5379 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5380
5381         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5382
5383 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5384
5385         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5386         instead of one on 64 bit systems.
5387
5388         * method-to-ir.c: Remove unused includes.
5389
5390 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5393         cfg->used_int_regs, since the two are different on arm.
5394
5395 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5396
5397         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5398         mono_method_get_vtable_index() to get the vtable index.
5399
5400 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5401
5402         * method-to-ir.c (mono_method_to_ir2): Don't create native
5403         wrappers for array methods, because they're never called (and if
5404         they were called they wouldn't work).
5405
5406 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5407
5408         * method-to-ir.c (mono_method_to_ir2): Array methods are
5409         special-cased and must not be invoked indirectly via the (M)RGCTX
5410         when generic sharing is turned on.  Fixes #431413.
5411
5412 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5413
5414         * method-to-ir.c: When generic sharing is active, call
5415         non-interface virtual generic methods via the standard trampoline.
5416
5417         * mini-trampolines.c: Handle virtual generic shared methods.
5418
5419         * mini.h, mini-x86.c, mini-x86.h: New argument for
5420         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5421         method thunks and which is the trampoline to call if the lookup
5422         fails.  Enable the virtual generic method thunk for x86.
5423
5424         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5425         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5426         argument but assert that it's NULL, because these archs don't yet
5427         implement the virtual generic method thunk.  Changes in the IMT
5428         thunk data structures.
5429
5430 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5431
5432         * aot-compiler.c (emit_globals): Avoid invalid characters in
5433         the static linking symbol.
5434
5435         * objects.cs: Add a test for the range check optimization. Fix warnings.
5436
5437         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5438         optimization from the current JIT.
5439
5440         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5441         later in decompose_array_access_opts () to allow more optimizations.
5442
5443         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5444         mono_decompose_soft_float () for consistency.
5445
5446         * mini-ops.h: Fix arguments of OP_STRLEN.
5447
5448         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5449         into a separate function.
5450         (reset_cast_details): Ditto.
5451         (handle_unbox): Save cast details. Fixes #431254.
5452
5453         * method-to-ir.c: Remove some obsolete FIXMEs.
5454
5455 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5456
5457         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5458
5459 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5460
5461         * mini-codegen.c: More work on macros to make them
5462         ready for multiple regbanks.
5463
5464 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5465
5466         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5467
5468         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5469
5470 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * mini-codegen.c (mono_spillvar_offset): Proper support for
5473         multiple regbanks.
5474
5475 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5478         the stack overflow changes.
5479
5480 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         * mini-codegen.c: Make all bank macros depend on reg_bank.
5483
5484         * mini-codegen.c (mono_local_regalloc): Make free mask
5485         initialization regbank aware.
5486
5487 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5488
5489         * mini-codegen.c (mono_local_regalloc): Extract callee
5490         mask selection to a function and make it regbank aware.
5491
5492 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5493
5494         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5495         code to deal with many regbanks.
5496
5497 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5498
5499         * mini-codegen.c: More fp->regbank changes.
5500
5501 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5502
5503         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5504         of a hardcoded constant.
5505
5506 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * method-to-ir.c (type_from_stack_type): Fix typo.
5509
5510 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * mini-ia64.c (emit_move_return_value): Convert float return values to
5513         double.
5514
5515         * objects.cs: Add a new test.
5516         
5517         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5518         VARARG methods to fix an assert later.
5519
5520         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5521         end so it at least compiles.
5522
5523 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5526
5527 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5528
5529         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5530         optimization to a new function (emit_optimized_ldloca_ir) and enable
5531         it for both ldloca and ldloca_s.
5532
5533 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5536         gshared CASTCLASS code.
5537
5538         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5539         amd64, where the libc stack unwinder encounters stack frames referring to
5540         native code in unmapped memory.
5541
5542         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5543         sharing.
5544
5545         * generics.cs: Add new test.
5546
5547 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5548
5549         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5550         add a check that one of the ARM_FPU_ constants is defined.
5551
5552         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5553         
5554         * mini-exceptions.c: Fix build on non-altstack platforms.
5555
5556         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5557         sharing of vtypes.
5558
5559         * ir-emit.h: Add a comment to NEW_PCONST.
5560
5561         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5562
5563         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5564
5565         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5566         after the changes to MonoJitDomainInfo.
5567
5568 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5569
5570         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5571
5572 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5573
5574         * mini-ppc.c: Compiler warning fixes.
5575
5576 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5577
5578         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5579         for pinvokes.
5580
5581 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5582
5583         * exceptions-ppc.c, mini-ppc.h: Compile
5584         mono_arch_handle_altstack_exception() on Darwin, too.
5585
5586 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5587
5588         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5589         work on archs which don't have generic sharing implemented, only
5590         without the vtable_arg.
5591
5592 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5593
5594         * mini.c: Added comment explaining why delegate ctor icall
5595         wrappers are compiled.
5596
5597 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5598
5599         * mini.c: Don't produce trampolines to delegate ctor icall
5600         wrappers but compile them upfront.
5601
5602 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5603
5604         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5605         runtime-set function when going back to managed code. Currently this
5606         is used to set back the protection on the soft ovf pages and/or to
5607         throw the stack overflow exception that happened in unmanaged code.
5608
5609 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5610
5611         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5612         runtime-set function when going back to managed code. Currently this
5613         is used to set back the protection on the soft ovf pages and/or to
5614         throw the stack overflow exception that happened in unmanaged code.
5615
5616 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5617
5618         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5619         the support code for restoring stack protection after stack overflows
5620         that happen in unmanaged code. Don't set the exec permission on the
5621         soft overflow area.
5622
5623 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5624
5625         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5626         delegate->method_ptr is set. Fixes #428054.
5627
5628 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5629
5630         * tests.cs: Rename to ratests.cs.
5631
5632         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5633         emit_get_rgctx_... functions.
5634
5635 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5636
5637         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5638
5639 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5640
5641         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5642         before asserting that method is sharable.
5643
5644 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5645
5646         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5647         whether method needs a static RGCTX wrapper used instead of
5648         complex conditions.
5649
5650         * generic-sharing.c, mini.h: A few functions moved to
5651         metadata/generic-sharing.c.
5652
5653 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5654
5655         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5656         Generic code sharing for value types, which essentially means
5657         treating value type methods like static methods.  The RGCTX is
5658         passed in the same way.
5659
5660 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5663         opcode when creating multi-dimensional arrays of open types.
5664
5665         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5666         open generic types.
5667
5668         * generics.cs: Add a test.
5669
5670         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5671
5672 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5675
5676         * mini.c (mini_method_compile): Set it when running under the debugger. 
5677
5678         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5679         vreg optimization if the flag is set.
5680
5681         * driver.c (mono_main): Add --attach= option to pass options to
5682         the attach agent.
5683
5684         * mini.c (sigquit_signal_handler): Start the attach agent.
5685
5686         * ssapre.c: Disable this to save space since it is not yet ported to
5687         linear IR.
5688
5689         * regalloc2.c: Disable this to save space.
5690
5691         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5692
5693 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5694
5695         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5696         the -v option useful again.
5697
5698 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5701         --break-at-bb.
5702
5703         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5704         arrays of arrays. Fixes #428406.
5705
5706         * method-to-ir.c (mini_emit_castclass): Ditto.
5707
5708         * objects.cs: Add new test.
5709         
5710 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5711
5712         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5713         was wrong at it choked against target_type_is_incompatible for byref types.
5714
5715 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5718         places.
5719
5720 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5721
5722         * mini-exceptions.c: update a few more exceptions-related counters.
5723
5724 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5725
5726         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5727         new functions to allocate from persistent mempools.
5728
5729 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5732         multiple register banks in the future.
5733
5734         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5735
5736 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5737
5738         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5739
5740         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5741
5742         * mini.h: Export type_to_eval_stack_type.
5743
5744         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5745         is only ins->klass of byref types.
5746
5747 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5748
5749         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5750         (mini_emit_memcpy2): Ditto.
5751
5752         * mini-amd64.c: Fix a warning.
5753
5754 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5755
5756         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5757         linking.
5758
5759 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5760
5761         * method-to-ir.c: Extract stloc micro-optimization to a
5762         function and apply it to all cases.
5763
5764 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5765
5766         * method-to-ir.c: Don't fail generic code sharing in cases we
5767         already support.
5768
5769 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5770
5771         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5772
5773 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5774
5775         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5776         implementation.
5777
5778 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5779
5780         * trace.c: make tracing more useful and correct, with per-thread
5781         id and indent info.
5782
5783 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5784
5785         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5786         doing a method call and the argument is an R4.
5787
5788 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5789
5790         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5791         generic methods.
5792
5793 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5794
5795         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5796
5797 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5798
5799         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5800         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5801
5802 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5803
5804         * driver.c: Add a --agent argument (not supported yet) to load managed
5805         agent assemblies before loading the main assembly, similarly to how the
5806         Java VM handles agents.
5807
5808 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5809
5810         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5811         function to do stack layout of local variables.
5812
5813 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5814
5815         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5816         calculation.
5817
5818 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5821         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5822         JIT if DISABLE_JIT is defined.
5823
5824         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5825         defined.
5826
5827 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5828
5829         * iltests.il.in: Disable the fconv test on PPC (the result is
5830         undefined according to ECMA).
5831
5832 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5833
5834         * iltests.il.in: Enable tail call tests for PPC.
5835
5836         * mini.h: Add variable for storing incoming valuetype argument
5837         addresses for tail calls.
5838
5839         * mini-ppc.c: Implement valuetype arguments and return values for
5840         tailcalls on Linux.
5841
5842 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5843
5844         * mini-ppc.c: Partially implement tail calls (struct arguments and
5845         return values not supported).
5846
5847         * method-to-ir.c: Enable tail calls on PPC.
5848
5849 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5852         runtime-invoke wrappers to work around the problem of them getting
5853         assigned to a random class.
5854
5855         * aot-runtime.c (mono_aot_get_method): Ditto.
5856         
5857 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5858
5859         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5860         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5861
5862 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5863
5864         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5865         until they're implemented properly.
5866
5867         * exceptions-ppc.c: Use arch-independent exception-handling code
5868         instead of custom one.
5869
5870         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5871         for Linear IR.
5872
5873         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5874
5875         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5876         applies when __powerpc__ is defined.
5877
5878 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5879
5880         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5881         methods to their code to avoid computing the full name of wrappers and
5882         doing a lookup in a string hash table.
5883
5884 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5885
5886         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5887         we identify bblocks before method_to_ir () is ran.
5888
5889         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5890         Also avoid optimizing branches pointing to themselves.
5891
5892         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5893
5894 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5897
5898 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5901         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5902         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5903         'buf'.
5904
5905         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5906         jumped to the same entry in plt_jump_table.
5907
5908 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5909
5910         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5911         dynamic images.
5912
5913 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5916         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5917         #421807.
5918
5919 2008-08-29  Geoff Norton  <gnorton@novell.com>
5920
5921         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5922         segment, and doesn't properly handle .space as .text.  Fixes
5923         AOT Mach/ARM
5924
5925 2008-08-29  Geoff Norton  <gnorton@novell.com>
5926
5927         * mini.c: Disable the mach exception handler when running on 
5928         ARM
5929
5930 2008-08-29  Geoff Norton  <gnorton@novell.com>
5931
5932         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5933         globals on Darwin/ARM
5934
5935 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5938         since too many things depend on it. Instead, call 
5939         mono_runtime_set_no_exec ().
5940         
5941         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5942         the new JIT.
5943
5944         * aot-compiler.c: Add an 'asm-only' AOT option.
5945
5946         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5947                 
5948         * aot-compiler.c (compile_method): Disable gshared support for now as it
5949         doesn't yet work.
5950
5951 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5952
5953         * mini-amd64.h : Fix a compiler warning.
5954
5955         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5956           Changed to use a callback function to retrieve the unwind info.
5957           This avoids problems observed when code blocks were removed by
5958           unloading an app domain.
5959
5960         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5961           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5962           to work properly.
5963
5964         Contributed under MIT/X11 license.
5965
5966 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5967
5968         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5969           case to keep the stack aligned to 8.
5970
5971         Contributed under MIT/X11 license.
5972
5973 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5976         avoid repeated linear searches.
5977
5978 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5979
5980         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5981         methods it can't handle.
5982         
5983         * aot-compiler.c (add_method): Avoid adding a method twice.
5984         (add_wrappers): Add runtime invoke wrappers for all methods.
5985
5986         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5987         function to create an aot-compatible version of this trampoline.
5988
5989         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5990
5991 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5994
5995         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5996         with a generic sharing failure.
5997
5998         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5999
6000         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6001         CEE_RETHROW. Fixes #419634.
6002
6003         * mini.c (mono_method_to_ir): Ditto.
6004
6005         * exceptions.cs: Add a new test.
6006         
6007         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6008         to mono_type_stack_size_internal () since some callers might not pass in
6009         an rgctx.
6010
6011         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6012         instrument_prolog. Fixes #419878.
6013
6014         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6015         doubles in soft float mode volatile.
6016
6017 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6020
6021         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6022         to handle soft float correctly.
6023
6024         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6025         the fast path.
6026
6027         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6028
6029         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6030         to sp, since the generics catch code requires it.
6031
6032         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6033         copying.
6034
6035         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6036         mono_arch_emit_imt_argument ().
6037
6038         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6039
6040         * mini-arm.c tramp-arm.c: Generic sharing updates.
6041
6042 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * mini-arm.c: Fix the arm build.
6045
6046         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6047         handling enums, generic instances and generic sharing.
6048         (mini_type_stack_size_full): Ditto.
6049
6050         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6051         
6052         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6053
6054         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6055
6056         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6057         trampolines.
6058
6059         * mini-arm.c: Various small generic sharing changes.
6060
6061         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6062         this for x86.
6063         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6064         custom code.
6065
6066         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6067         helper function to return a generic class init trampoline.
6068
6069         * method-to-ir.c mini.c: Use it.
6070         
6071         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6072         arch-specfic function to return a generic class init trampoline.
6073
6074         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6075         the GENERIC_CLASS_INIT custom code.
6076
6077         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6078         a fatal error, not a sharing failure.
6079
6080         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6081         needed.
6082
6083         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6084         trampoline argument from MONO_ARCH_VTABLE_REG.
6085
6086         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6087         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6088         argument, and pass the vtable in VTABLE_REG.
6089
6090         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6091         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6092         argument, and pass the vtable in VTABLE_REG.
6093         (mono_arch_create_trampoline_code_full): Remove some special casing for
6094         the rgctx fetch trampoline.
6095
6096         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6097         Fixes #419273.
6098
6099         * iltests.il: Add a test for it.
6100
6101 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6104
6105         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6106         no longer needed.
6107
6108         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6109         use mono_jit_info_table_find () to avoid recursion.
6110         (mono_delegate_trampoline): Add a sync wrapper here.
6111
6112         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6113         here.
6114
6115         * mini.c (mono_method_to_ir): Ditto.
6116         
6117         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6118         add_sync_wrapper argument. Don't add a sync wrapper here.
6119         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6120
6121         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6122         
6123 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6124
6125         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6126           of nonvolatile registers back from MonoContext to CONTEXT.
6127
6128         Contributed under MIT/X11 license.
6129
6130 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6131
6132         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6133           arguments on Winx64 there are only 4 argument registers.  For this
6134           logic to work the last argument must be pulled from the stack.  
6135
6136         Contributed under MIT/X11 license.
6137
6138 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6141
6142         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6143         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6144         encode/decode_method_ref ().
6145
6146         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
6147
6148         * aot-runtime.c (decode_patch): Ditto.  
6149
6150         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
6151         MONO_PATCH_INFO_METHOD.
6152
6153         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
6154         MonoGenericJitInfo.
6155
6156         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
6157         MonoGenericJitInfo.
6158
6159         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
6160
6161         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
6162         one from the caller.
6163
6164         * aot-runtime.c (decode_generic_inst): New function to decode and
6165         return a interned generic inst.
6166         (decode_klass_ref): Use it.
6167         (decode_method_ref): Ditto.
6168
6169         * aot-compiler.c (emit_exception_debug_info): Save 
6170         jinfo->has_generic_jit_info too.
6171
6172 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6175
6176         * iltests.il.in: Add a test for fconv_to_i.
6177
6178         * liveness.c: Disable the liveness2 pass for now to save space.
6179
6180         * regalloc2.c: Include mempool-internals.h to fix warnings.
6181
6182         * aot-compiler.c (encode_method_ref): Encode the context of generic
6183         instance methods.
6184
6185         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6186         the context saved in the aot file.
6187
6188         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6189
6190         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6191
6192         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6193         volatile so they won't be optimized away.
6194
6195 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6196
6197         * ssa.c:
6198         * ssa2.c:
6199         * mini.c:
6200         * regalloc2.c:
6201         * dominators.c: Remove duplicated functions that now are in
6202         mempool-internals.h.
6203
6204 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6205
6206         * aot-compiler.c: Fix warnings.
6207
6208         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6209
6210         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6211
6212         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6213         as the patch type.
6214
6215         * mini.c (mono_resolve_patch_target): Ditto.
6216         
6217         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6218         (encode_klass_ref): Add support for encoding VARs/MVARs.
6219
6220         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6221
6222         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6223         the handling of the got entries into a separate 'decode_got_entry' function.
6224         Add support for RGCTX_FETCH.
6225
6226         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6227         clobbered by the trampoline code.
6228
6229         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6230         not clobbered by the indirect calling code.
6231
6232 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6233
6234         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6235         to fix the build.
6236
6237 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6238
6239         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6240         signature using the compilation mempool otherwise we would leak it.
6241
6242 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6245         mono_emit_abs_call ().
6246
6247         * patch-info.h: Add GENERIC_CLASS_INIT.
6248
6249         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6250
6251         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6252         as their target as a near call.
6253
6254         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6255         ABS handling code.
6256         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6257
6258         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6259         call to a runtime function described by a patch.
6260
6261         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6262         mono_emit_abs_call, this has the advantage that the ABS handling code in
6263         mono_codegen () can handle them both, and can handle other stuff in the
6264         future without additional code.
6265
6266         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6267         entry.
6268         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6269         abs addresses.
6270
6271         * mini.h: Add missing bblock related prototypes.
6272
6273         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6274         reverse_inst_list_len fields.
6275
6276         * mini.c: Refactor this file a bit by moving branch optimizations to 
6277         branch-opts.c.
6278
6279         * method-to-ir.c: Merge generic sharing changes missed earlier.
6280
6281         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6282
6283         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6284         shared patches. Process METHODCONST as a shared patch.
6285
6286         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6287         as it crashes on the 2.0 mscorlib.
6288
6289         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6290         to cause crashes.
6291         
6292         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6293         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6294         by IMT.
6295
6296         * aot-compiler.c: Reorganize the got handling code to be a bit more
6297         understandable.
6298
6299 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6300
6301         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6302         mono_patch_info_equals/hash, and use it to massively simplify
6303         get_plt_index ().
6304
6305         * mini.c (mono_patch_info_hash): Simplify this and add support for
6306         more patch types.
6307
6308         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6309
6310         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6311         handling code, since an offset is not enough to identify a trampoline.
6312
6313         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6314
6315 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6316
6317         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6318
6319         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6320
6321         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6322
6323         * decompose.c: PPC decompositions for various ops.
6324
6325         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6326
6327 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6330         call the generic trampoline code using a call, instead of a jump, to
6331         remove some special casing from the generic trampoline code.
6332
6333         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6334         (mono_codegen): Ditto.
6335
6336         * aot-compiler.c aot-runtime.c: Ditto.
6337
6338         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6339
6340         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6341         helper function to find the offset corresponding to a lazy fetch trampoline.
6342
6343         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6344         when doing generic sharing.
6345
6346         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6347         places.
6348         
6349         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6350         mini-trampolines.c to be with the other trampoline creation functions.
6351
6352         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6353         as it is equal to method->signature in most cases, add a 
6354         mono_emit_method_call_full variant which takes a signature and an imt
6355         argument as well.
6356
6357 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6358
6359         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6360         to this function, since it could be computed easily from the method 
6361         argument.
6362         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6363         more.
6364
6365         * method-to-ir.c mini.c: Remove references to 
6366         compile_generic_method_wo_context.
6367
6368         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6369         generic method calls.
6370         
6371         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6372         dimensional non-szarrays.
6373
6374         * mini.c (mini_init): Register mono_array_new_1.
6375
6376         * jit-icalls.c (mono_array_new_1): New jit icall.
6377
6378         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6379         pointing to the method.
6380
6381         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6382         method addresses belonging to METHOD_JUMP patches in the 
6383         jump_target_got_slot_hash.
6384         (mono_aot_load_method): Ditto.
6385
6386         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6387         METHOD_JUMP patches.
6388
6389         * mini.c (mini_create_jit_domain_info): New helper function which 
6390         initializes/frees domain->runtime_info.
6391         (mini_free_jit_domain_info): Ditto.
6392         (mini_init): Install the domain hook functions with the runtime.
6393
6394         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6395         information maintained by the JIT.
6396
6397         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6398         insertion into jump_table_hash into mono_codegen (), also implement proper
6399         locking.
6400
6401         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6402         tail calls, it is already done by the aot code.
6403         
6404         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6405         mechanism on amd64.
6406
6407         * iltests.il.in: Make the jmp test a bit more complex.
6408
6409         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6410         generic instances which doesn't have a token.
6411
6412         * aot-runtime.c (decode_method_ref): Ditto.
6413         
6414         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6415         can handle this case now.
6416         (handle_box): Ditto.
6417
6418 2008-08-15  Geoff Norton  <gnorton@novell.com>
6419
6420         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6421         debugging check.
6422
6423 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6424
6425         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6426         calling generic methods.
6427
6428         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6429
6430         * aot-runtime.c (decode_patch_info): Ditto.
6431
6432         * mini.c (mono_resolve_patch_target): Ditto.
6433         
6434         * patch-info.h: Add METHOD_RGCTX.
6435
6436         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6437
6438 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6439
6440         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6441         arguments in registers.
6442
6443         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6444         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6445
6446         * mini.c (mini_method_compile): Abort aot compilation for generic
6447         methods if generic sharing is disabled.
6448         
6449         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6450         an mrgctx.
6451
6452         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6453         requiring an mrgctx.
6454
6455         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6456         store instructions when converting a vcall to a normal call.
6457
6458         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6459         mono_arch_find_jit_info.
6460
6461 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6462
6463         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6464         avoid calling mono_method_full_name () for every method even if the
6465         env var is not set.
6466         (check_inline_caller_method_name_limit): Ditto.
6467
6468 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6469
6470         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6471         assemblies in one run.
6472
6473         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6474         skipped methods if it is not 0.
6475
6476         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6477
6478 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6479
6480         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6481           MONO_ARCH_HAVE_UNWIND_TABLE.
6482
6483         Contributed under MIT/X11 license.
6484
6485 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6486
6487         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6488           from default optimizaton list on Winx64.
6489
6490         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6491
6492         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6493           the LMF from the MonoJitTlsData structure.
6494
6495         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6496
6497         Contributed under MIT/X11 license.
6498
6499 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * mini.c (sigsegv_signal_handler): Fix the build.
6502
6503         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6504         assembly->aot_module.
6505
6506         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6507         hash table. This simplifies and speeds up a lot of code, and fixes support
6508         for .netmodules.
6509
6510         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6511         with the runtime.
6512
6513         * mini-exceptions.c: Ditto.
6514         
6515         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6516         'native_offset' argument, since these are computed in the 
6517         mono_find_jit_info () function.
6518
6519         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6520         is used by exceptions-ppc.c.
6521
6522         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6523         mono_arch_find_jit_info ().
6524         
6525         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6526         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6527         generic code in mini-exceptions.c.
6528
6529 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6532
6533         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6534         
6535         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6536         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6537         called while holding the loader lock. Fixes #415608.
6538         (mono_aot_get_method_from_token_inner): Ditto.
6539
6540 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6543         to reduce differences between this and the generic implementation in
6544         mini-exceptions.c.
6545         (ves_icall_get_frame_info): Ditto.
6546
6547         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6548
6549         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6550         longer neccesarry.
6551
6552         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6553         mono_arch_get_call_filter () and make it non-static, for consistency with the
6554         other architectures.
6555
6556 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6557
6558         * mini.c:
6559         * local-propagation.c:
6560         * mini-x86.c: Correct the name of arch defines.
6561
6562 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6563
6564         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6565         NO_EMULATE_LONG_SHIFT_OPS define.
6566
6567 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6568
6569         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6570         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6571
6572         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6573         MACH fixes. Merged from the 2.0 branch.
6574
6575         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6576
6577         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6578         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6579
6580         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6581
6582         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6583         mono_marshal_get_native_wrapper () signature changes.
6584
6585 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6588         conversion bug under arm.
6589
6590 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6593
6594         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6595         with overflow checking.
6596
6597 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6598
6599         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6600         to the genmdesc.pl file
6601
6602 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6603
6604         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6605         arg_array in the soft-float versions of the LOAD/STORE macros.
6606
6607         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6608         implementation.
6609
6610         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6611
6612 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6615         a float HFA. Fixes #413621.
6616
6617 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6618
6619         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6620         frame_size to args_size. Fixes build.
6621
6622 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6625         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6626
6627         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6628         the stack are not unaligned. Fixes #413247.
6629         
6630 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6631
6632         * mini.c: update jitted methods performance counters.
6633
6634 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6635
6636         * mini-exceptions.c: increase the exceptions thrown performance
6637         counter in mono_handle_exception ().
6638
6639 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6640
6641         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6642         can work with netmodules.
6643
6644 2008-07-28  Geoff Norton  <gnorton@novell.com>
6645
6646         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6647         regression tests.
6648
6649 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6650
6651         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6652         correct place.
6653
6654 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6655
6656         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6657           The float param registers and other param registers must be the 
6658           same index on Windows x64.
6659
6660         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6661           ArgValuetypeAddrInIReg argument case.  Setting the argument
6662           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6663
6664         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6665           variable computed above as the copy length for arguments of storage
6666           type ArgValuetypeAddrInIReg.
6667
6668         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6669           ArgValuetypeAddrInIReg argument case.  This case will rely on
6670           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6671
6672         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6673           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6674           jump and tail call instructoins as they do not follow the typical call behavior.
6675
6676         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6677           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6678           local variable and pass the local variable by reference to the called method.
6679
6680         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6681           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6682           of a struct is passed in a register it must be saved with the other
6683           volatile argument on the stack.
6684
6685         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6686           frame pointer the stack adjustment value must be saved to the unwind 
6687           info structure.
6688
6689         Contributed under MIT/X11 license.
6690
6691 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6692
6693         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6694         which got lost in the merge.
6695
6696 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6697
6698         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6699         build.
6700
6701         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6702         
6703         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6704         icalls, since they won't be patched.
6705
6706         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6707         different code sequence when running under valgrind to prevent some valgrind
6708         errors.
6709
6710         * iltests.il.in: Add new regression test.
6711
6712         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6713         end with a throw.
6714
6715         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6716         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6717
6718         * iltests.il.in: Add new test.
6719
6720         * aot-compiler.c: Fix some warnings.
6721
6722         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6723         Fixes #412494.
6724
6725 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6728         (mini_usage_jitdeveloper): Add a missing --wapi option.
6729
6730 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6731
6732         * mini-codegen.c: Simplify the is_fp macros.
6733         (free_up_ireg): Remove, use free_up_reg instead.
6734         (free_up_reg): Fix the fp case.
6735
6736 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6737
6738         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6739         lowered earlier.
6740
6741         * exceptions-x86.c: Merge some changes which seemed to have got lost
6742         in the linear-ir merge.
6743
6744         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6745
6746         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6747         long vreg volatile even if the variable was already created.
6748
6749         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6750         volatile variables.
6751
6752 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6753
6754         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6755
6756         * mini.c (mono_jit_compile_method_inner): Add support for 
6757         MONO_EXCEPTION_BAD_IMAGE.
6758
6759         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6760         mini_method_get_context () returns NULL. Fixes #356531.
6761
6762         * mini.c (mono_method_to_ir): Ditto.
6763         
6764         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6765         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6766
6767 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6768
6769         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6770         in the LDFTN implementation.
6771
6772 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6773
6774         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6775         code, patch calls to icalls, too, even if they're not in the
6776         shared generic code hash.  Fixes #411962.
6777
6778 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6779
6780         * cpu-x86.md: Increase the length of the fcall opcodes.
6781
6782         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6783         calls returning floats.
6784
6785         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6786         on NEWARR.
6787         
6788         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6789         missed earlier.
6790
6791         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6792         into the domain->method_code_hash.
6793
6794         * aot-compiler.c: Fix win32 build.
6795
6796         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6797         
6798         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6799         gshared NEWARR implementation.
6800
6801         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6802
6803         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6804         can be used outside of method_to_ir.
6805
6806         * mini.h (MonoCompile): Add arg_types field.
6807
6808         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6809         
6810         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6811         the values of the local arg_array and param_types array.
6812
6813 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6816         got accesses might only get generated later when NEWOBJ is decomposed.
6817         
6818         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6819         looking up the native code of the target method when a delegate is called
6820         for the first time.
6821
6822         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6823         optimization.
6824
6825         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6826
6827         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6828         AOT work on platforms without a working dlsym implementation.
6829
6830         * mini.h: Bump AOT image format version.
6831         
6832 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6833
6834         * mini-exceptions.c: Free a MonoType with
6835         mono_metadata_free_type() instead of g_free().
6836
6837         * aot-runtime.c: Free a MonoType.
6838
6839 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6840
6841         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6842         optimization.
6843
6844         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6845         fp stack on x86.
6846
6847 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6848         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6849         profiler hook.
6850
6851 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6852
6853         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6854         NEWOBJ calls on valuetypes.
6855
6856         * iltests.il.in: Add new test.
6857
6858         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6859
6860 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6861
6862         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6863         is no longer needed.
6864
6865         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6866         non register sized integer arguments.
6867         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6868         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6869         emit_memcpy2 ().
6870
6871         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6872         CEE_MONO_RETOBJ.
6873         
6874         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6875         two a binop with different sized arguments is emitted.
6876
6877         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6878         instruction in the ins==NULL case.
6879
6880 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6883
6884         * mini-x86.c: Fix osx build.
6885
6886         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6887         opcodes as well.
6888
6889         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6890         instruction for non int sized variables.
6891
6892         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6893         implementation.
6894
6895 2008-07-23  Robert Jordan  <robertj@gmx.net>
6896
6897         * method-to-ir.c: Fix MSVC build.
6898
6899 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6900
6901         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6902         a non int sized type, widen it to an int since newer versions of gcc seem to
6903         generate code which needs this.
6904
6905         * ssa2.c abcremoval2.c: Fix warnings.
6906
6907         * *: Merge the Linear IR branch.
6908
6909         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6910         the ChangeLog file there describes all the changes done over the years. 
6911         Further documentation can be found at www.mono-project.com/Linear_IL.
6912
6913 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6914
6915         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6916           The float param registers and other param registers must be the 
6917           same index on Windows x64.
6918
6919         Contributed under MIT/X11 license.
6920
6921 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6922
6923         * mini.c: Make the previous fix GC safe.
6924
6925 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6926
6927         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6928
6929 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6930
6931         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6932           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6933           ArgValuetypeAddrInIReg instead.
6934
6935         Contributed under MIT/X11 license.
6936
6937 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * mini-codegen.c (get_register_spilling): Fix a warning.
6940
6941 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6942
6943         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6944         for types which the initialization fails. Raises the provided exception
6945         at the right stop after cleanup.
6946
6947 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6948
6949         * aot-compiler.c: Free most of the memory allocated during compilation.
6950
6951         * mini.c (mini_parse_debug_options): Fix a leak.
6952         
6953         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6954         during aot compilation.
6955
6956 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6957
6958         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6959         it has too much register pressure.
6960
6961 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6964
6965 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6968         on x86.
6969
6970         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6971         on amd64 similar to the way it is done on arm.
6972
6973         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6974
6975         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6976         consistency, normalize error messages, avoid loading aot-only modules in
6977         normal mode.
6978
6979         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6980         for consistency.
6981
6982         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6983
6984 2008-07-11  Martin Baulig  <martin@ximian.com>
6985
6986         * debug-debugger.h
6987         (MonoDebuggerInfo): Add `interruption_request'.
6988
6989 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6990
6991         * aot-compiler.c (emit_plt): Remove some dead code.
6992
6993         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6994
6995         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6996         return the plt info offset belonging to a given plt entry.
6997
6998         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6999         mono_aot_get_plt_info_offset.
7000         
7001         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7002         similar to the amd64 code by makeing jumps through a separate jump table 
7003         instead of embedding the jump addresses into the code.
7004
7005 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7008         method.
7009
7010 2008-07-10  Martin Baulig  <martin@ximian.com>
7011
7012         * mini.c (mini_method_compile): Disable generics sharing when
7013         running in the debugger.
7014
7015 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7018
7019         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7020         the local register allocator from running out of registers on x86 when 
7021         using aot.
7022
7023 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7024
7025         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7026         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7027         C4146.
7028
7029         Contributed under MIT/X11 license.
7030
7031 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7032
7033         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7034         speed up the assembler.
7035
7036 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7037
7038         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7039         support.
7040
7041         * mini.c: Move the soft float handling macros a bit earlier, add 
7042         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7043         place.
7044
7045         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7046
7047         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7048         read-only to help catch code allocation requests.
7049         
7050         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7051         and turn it off when using --aot-only or when compiling with --aot=full.
7052
7053         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7054         jump table for switches from the normal domain mempool, not the code
7055         manager.
7056
7057         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7058         unbox trampoline which handles aot-only mode too.
7059
7060         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7061         an AOTed unbox trampoline.
7062
7063         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7064
7065 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7066
7067         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7068         ""
7069
7070         Contributed under MIT/X11 license.
7071
7072 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7073
7074         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7075           the unwind information for the method at the end of the allocated block.
7076           
7077         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7078           MonoCompileArch to hold the unwind info for SEH on Winx64
7079         
7080         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7081           frame pointer info for the method being compiled.
7082           
7083         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7084           the call to mono_exception_from_token.
7085           
7086         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7087           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7088           information is stored a the end of the method block because it is all 32-bit offset based.
7089
7090         Contributed under MIT/X11 license.
7091
7092 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7095
7096         * wapihandles.c: Fix warnings.
7097
7098         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7099         mode.
7100
7101         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7102         mono_jit_compile_method in aot-only mode since that calls the type 
7103         initializer.
7104         
7105         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7106         get_delegate_invoke_impl in aot-only mode.
7107
7108         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7109
7110 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7111
7112         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7113
7114         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7115         is on by default.
7116
7117         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7118
7119         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7120         init trampoline from the AOT file as well.
7121
7122         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7123         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7124         code.
7125
7126         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7127         mono_init.
7128
7129         * exceptions-amd64.c: Add _full variants for the remaining exception code
7130         creation functions as well, allow emission of relocatable code, remove
7131         caching since that is now done by the caller.
7132
7133         * mini-exceptions.c: Add _full variants for the remaining exception code
7134         creation functions as well, add aot-only support.
7135
7136         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7137         if we can determine a proper token for them.
7138         (add_wrappers): Add a few more wrappers.
7139         (emit_method_code): Remove some dead code.
7140         (emit_trampolines): Emit exception code too.
7141
7142         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7143
7144         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7145         mono_array_new_va which avoids varargs.
7146
7147         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
7148
7149         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
7150         mono_arch_create_specific_trampoline () in all places.
7151
7152         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
7153         a bit so it can be used for other things as well.
7154         
7155         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
7156         on demand as well.
7157
7158         * exceptions-amd64.c: Rename the caching from the exception code creation
7159         functions, it is done by the caller instead.
7160         
7161         * exceptions-amd64.c: Change the signature of the exception code creation 
7162         functions to allow the creation of relocatable code later.
7163
7164         * mini-exceptions.c: Add a set of functions to query the various 
7165         runtime-generated exception functions.
7166
7167         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7168         mono_arch_.. () functions.
7169         
7170 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7171
7172         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7173
7174         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7175
7176         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7177         (mini_get_vtable_trampoline): Ditto.
7178
7179         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7180         code in the AOT case by returning the code size and a list of relocations to
7181         the caller.
7182
7183         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7184
7185 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7186
7187         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7188           clean the stack.
7189
7190         Contributed under MIT/X11 license.
7191
7192 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7195         so the buffer size can be computed correctly. Fixes #404735.
7196
7197         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7198         normally as cfg->debug_info is already freed.
7199
7200 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * mini-amd64.c: For calls returning vtypes in registers, don't store
7203         the return address on the stack, instead allocate a separate local for
7204         it. Fixes #404729.
7205
7206 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7207
7208         * mini-trampolines.c, mini.h: Add an argument to
7209         mono_create_jit_trampoline_in_domain() for turning off the adding
7210         of the sync wrapper.
7211
7212         * mini.c: Use the JIT trampoline without sync instead of
7213         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7214         be patched.
7215
7216 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7217
7218         * driver.c: Turn on GSHARED optimization by default.
7219
7220 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7221
7222         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7223         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7224
7225         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7226         create a variant of the generic trampoline code callable from AOTed trampolines.
7227
7228         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7229         trampoline code callable from AOTed trampolines.
7230
7231         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7232
7233 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7234
7235         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7236         pass-through manner.
7237
7238         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7239         and don't fail sharing for them anymore.
7240
7241         * mini-exceptions.c: Handle exceptions in shared generic methods.
7242
7243         * generic-sharing.c: When checking the context of a generic
7244         method, also check its class's context.  Don't treat wrappers as
7245         sharable.
7246
7247         * mini-trampolines.c: Some code factored out to
7248         metadata/generic-sharing.c.  Handle the MRGCTX case.
7249
7250         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7251         we must deal with the method being of another instantiation of the
7252         class.  Add static rgctx invoke wrappers to generic methods.
7253
7254 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7255
7256         * mini.c: Provide all jit infos of generic shared methods with a
7257         generic jit info.
7258
7259         * mini-exceptions.c: Handle the new situation that a generic info
7260         might be available, but not info about the this/vtable/mrgctx
7261         variable.
7262
7263 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7264
7265         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7266         generic methods.
7267
7268 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * dominators.c (check_dominance_frontier): Fix a warning.
7271
7272         * mini.h: Add some missing prototypes.
7273
7274         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7275
7276         * driver.c (mono_jit_init_version): Correct the comments since the first
7277         argument should be the name of the root domain, not a filename.
7278
7279         * aot-runtime.c (make_writable): Error out if this is called while running
7280         with --aot-only.
7281         (load_aot_module): Ditto.
7282
7283         * aot-compiler.c: Really fix the computation of method indexes.
7284
7285         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7286         optimizations as this is no longer called frequently.
7287
7288         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7289         method and the invoke impl code and pass it to the delegate trampoline instead of
7290         just the delegate class.
7291
7292 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * aot-compiler.c: Fixup the computation of method indexes.
7295         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7296         the method builder infrastructure.
7297
7298         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7299         has no header.
7300
7301         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7302         mode, load the method right away instead of creating a trampoline.
7303
7304         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7305
7306         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7307         some checks a bit.
7308
7309 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7312         (mono_aot_load_method): Use method_index instead of method->token.
7313
7314         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7315         can handle icalls etc. properly.
7316
7317         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7318
7319         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7320
7321         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7322         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7323         JIT_ICALL_ADDR patch type.
7324
7325         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7326
7327         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7328         request flag.
7329         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7330
7331         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7332
7333 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7336         domain->jit_code_hash.
7337
7338 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7341
7342 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7345         get_this_arg_from_call, let it compute it when needed.
7346
7347         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7348         gsctx from code only when needed.
7349
7350         * mini-trampolines.c (get_generic_context): Rename this to 
7351         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7352         it can be called by the arch backends.
7353
7354         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7355
7356 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * driver.c (mono_main): Add experimental --aot-only command line option.
7359
7360         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7361         set.
7362
7363 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7364
7365         * driver.c (DllMain): Remove mono_module_handle.
7366
7367         Contributed under MIT/X11 license.
7368
7369 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7372         for emitting methods which are not in the source assembly. Detect and report
7373         failure of assembling+linking.
7374         
7375         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7376
7377         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7378
7379 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7382
7383 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * mini.h: Remove some obsolete prototypes.
7386
7387         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7388
7389 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7390
7391         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7392         supported by Visual Studio, so use alloca().
7393
7394 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7397         Fixes #402585.
7398
7399 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7400
7401         * mini.c: Fail sharing of a generic method if it contains an open
7402         catch clause (because we don't pass MRGCTXs yet).
7403
7404 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7405
7406         * mini.c: When compiling a method with generic sharing, insert the
7407         method instantiated with an all-Object generic context into the
7408         jit info table, instead of the context of the first instantiation
7409         of the method we happen to compile.
7410
7411 2008-06-18  Martin Baulig  <martin@ximian.com>
7412
7413         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7414         `major_version' and `minor_version'.
7415
7416 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7417
7418         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7419         mono_method_is_generic_sharable_impl() takes an additional
7420         argument specifying whether to treat type variables as reference
7421         types.
7422
7423 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7424
7425         * mini.h: Removed obsolete prototypes.
7426
7427 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7428
7429         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7430         already handle them.
7431
7432 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7433
7434         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7435         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7436         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7437         tramp-x86.c: Added a MonoGenericContext* argument to
7438         mono_arch_get_unbox_trampoline() so that it can call other
7439         functions which require it.
7440
7441 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7442
7443         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7444         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7445         mono_arch_get_this_arg_from_call() takes a
7446         MonoGenericSharingContext* as well.
7447
7448 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7449
7450         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7451         implement generic sharing of unbox.
7452
7453 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7454
7455         * mini.c: Don't compute the vtable to determine whether a field is
7456         special static, because it might not work for open types.
7457
7458 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7459
7460         * mini.c: Removed the unused token_type and token_source arguments
7461         from get_runtime_generic_context_ptr().
7462
7463 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7464
7465         * mini.c (ADD_BINOP): fix the build
7466
7467 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7468
7469         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7470         a widening op.
7471
7472 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7473
7474         * mini.h: Removed class relations enum that's not used anymore.
7475
7476 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7477
7478         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7479
7480         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7481         the lazy fetch trampoline access code.
7482
7483 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7484
7485         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7486
7487 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7490
7491         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7492
7493         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7494
7495 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7498         intrinsics.
7499
7500         * mini-ops.h: Add MIN/MAX_UN opcodes.
7501
7502         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7503         intrinsics.
7504
7505         * basic-math.cs: Add more min/max tests.
7506
7507         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7508
7509 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7510
7511         * mini.c: Small fix in the prologue of emit_castclass.
7512
7513 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7516
7517         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7518         do not work even for unsigned types. Fixes #400014.
7519
7520         * basic-math.cs: Add regression tests for unsigned Min/Max.
7521
7522 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7523
7524         * mini.c: Added additional context_used argument to several
7525         functions, which will be needed for sharing generic methods.  Use
7526         GET_RGCTX macro wherever appropriate.  Declare only one
7527         context_used in mono_method_to_ir().
7528
7529 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7530
7531         * mini.c, generic-sharing.c: Removed generic class relations.
7532
7533         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7534         functions due to MRGCTX changes.
7535
7536 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7537
7538         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7539         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7540         with calculated IMT.
7541
7542         * mini.c: Generic sharing of calls via generic interfaces.
7543
7544         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7545         generic method with non-constant MonoGenericContext*.  Instead,
7546         the context is taken out of the method itself.
7547
7548 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7549
7550         * mini.c: Generic sharing of ldvirtftn.
7551
7552 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7553
7554         * mini.c: Generic sharing of ldftn.
7555
7556 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7557
7558         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7559
7560 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7561
7562         * mini.c: Generic sharing of the special case of ldtoken followed
7563         by a call to GetTypeFromHandle.
7564
7565 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7566
7567         * mini.c: Generic sharing of box for nullable types.
7568
7569 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7570
7571         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7572         are passed on the stack. Fixes #324807.
7573
7574 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7575
7576         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7577         for the ArgValuetypeAddrInIReg case.
7578
7579         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7580         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7581
7582         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7583         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7584         local variable and pass the local variable by reference to the called method.
7585           
7586         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7587         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7588
7589         Contributed under MIT/X11 license.
7590
7591 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7592
7593         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7594
7595         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7596         everything.
7597
7598 2008-06-10  Martin Baulig  <martin@ximian.com>
7599
7600         * debug-mini.c
7601         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7602
7603 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7604
7605         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7606         possible error when no arguments are passed.
7607
7608         Contributed under MIT/X11 license.
7609
7610 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7611
7612         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7613         where the file name is NULL.
7614
7615 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7616
7617         * mini.c: Fix s390 build.
7618
7619 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * trace.c (mono_trace_parse_options): Fix warnings.
7622
7623         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7624
7625 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * mini.c (remove_block_if_useless): Avoid printing the method name.
7628         
7629         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7630         MONO_INST_NEW.
7631
7632         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7633         LMF. Not yet used.
7634
7635         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7636         translated code after it has been patched.
7637
7638 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7641         avoid problems during code patching on SMP systems.
7642         (emit_call): Avoid adding a patch info which is already added by 
7643         emit_call_body.
7644         (mono_arch_emit_exceptions): Ditto.
7645
7646 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7649         MONO_TYPE_ISSTRUCT already checks for it.
7650
7651 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7652
7653         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7654           structs with floats on Winx64 the float registers are not used.  
7655           The integer registers are always used..
7656         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7657           only one register will be used and only if the size of the struct 
7658           is 1,2,4, or 8 bytes.
7659
7660         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7661           to work for Winx64.
7662
7663         Contributed under MIT/X11 license.
7664
7665 2008-06-05  Martin Baulig  <martin@ximian.com>
7666
7667         * debug-debugger.c (debugger_lookup_class): Also call
7668         mono_class_setup_methods() here; we're only called from RTI.
7669
7670 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7671
7672         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7673         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7674         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7675         Post-process object files and add dtrace-generated object, if necessary.
7676
7677         Contributed under MIT/X11 license.
7678
7679 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7680
7681         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7682         element class.
7683
7684         * mini.c: Generic sharing for unbox.any and castclass.
7685
7686 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7687
7688         * mini.c: Ignore tailcall prefix in shared generic code and when
7689         doing calls which require a vtable/rgctx argument.
7690
7691 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7692
7693         * mini.c: Don't free the JIT info.
7694
7695         * driver.c: Changes in the JIT info table testing code.
7696
7697 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7698
7699         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7700         interruption. Fix some warnings.
7701
7702         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7703         interruption_checkpoint.
7704
7705 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7706
7707         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7708         from embedding applications.
7709
7710 2008-06-02  William Holmes  <billholmes54@gmail.com>
7711
7712         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7713           reserving 32 bytes on the stack when making calls. 
7714
7715         Contributed under MIT/X11 license.
7716
7717 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7720         the linear IL branch.
7721
7722         * driver.c: Print out more information for --version on arm.
7723
7724 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7725
7726         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7727         bb_exit instead, since out of line bblocks might not actually be emitted
7728         out-of-line.
7729         
7730         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7731         maximum epilog size for out of line bblocks if tracing is enabled.
7732
7733         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7734
7735 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7736
7737         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7738
7739 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7740
7741         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7742         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7743         opcodes.
7744
7745 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7748         the 'value' to store is a constant.
7749
7750         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7751
7752         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7753         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7754
7755 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7758         for accessing method->generic_container.
7759
7760 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7761
7762         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7763         
7764         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7765
7766         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7767
7768         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7769         fails.
7770
7771 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7772
7773         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7774
7775         * mini.c: Handle the case when mono_class_vtable () fails.
7776
7777 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7778         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7779         the stat profiler.
7780
7781 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7782
7783         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7784         together with domain sharing.
7785
7786 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7787
7788         * mini.c: Treat callvirts to final methods like non-virtual calls
7789         when doing generic sharing, i.e. look them up in the runtime
7790         generic context.
7791
7792 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7793
7794         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7795         with computed types (for generic sharing).
7796
7797         * mini.c: Generic sharing for mkrefany and refanyval.
7798
7799 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7800
7801         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7802         possible.
7803
7804         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7805         the generic sharing code.
7806         
7807         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7808         when needed.
7809
7810 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7811
7812         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7813
7814 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7815
7816         * driver.c: updated copyright date
7817
7818 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7819
7820         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7821         needed.
7822
7823 2008-05-19  Martin Baulig  <martin@ximian.com>
7824
7825         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7826         pointing to the new `_mono_debug_using_mono_debugger' variable.
7827
7828         * driver.c
7829         (mono_main): Check mono_debug_using_mono_debugger() rather than
7830         the `MONO_INSIDE_MDB' environment variable to check whether we're
7831         inside the debugger.
7832
7833 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7836         argument.
7837
7838 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7839
7840         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7841
7842         * mini.c: Added mini_assembly_can_skip_verification. This
7843         function checks if the assembly requested to skip verification. 
7844         Fixes part of #387274.
7845
7846 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7847
7848         * mini.c (mini_get_method): Disable the check for open generic classes when
7849         using generic sharing.
7850
7851         * generics.cs: Add a test for #387034.
7852
7853         * mini.c (mini_get_method): Check whenever the method class is an open generic
7854         type, and return NULL in that case, causing a verification error. Fixes
7855         #384123.
7856
7857 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7858
7859         * driver.c (mono_main): Revert r102623. The right
7860         thing to do is to enable the verifier under verifiable
7861         unless a --security flag was passed.
7862
7863         We need this non-trivial behavior for --verify-all otherwise
7864         mcs-compileall won't be able to use it. As it needs everything to
7865         be verified under validil.
7866
7867 2008-05-06  Martin Baulig  <martin@ximian.com>
7868
7869         Fix #383749.
7870
7871         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7872         (mono_debugger_thread_cleanup): Likewise.
7873         (mono_debugger_extended_notification): Likewise.
7874
7875 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7876
7877         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7878         against both inflated and non-inflated methods. We need to check against the
7879         generic definition for cases where the instantiated method is not visible.
7880         We need to check against the inflated types for cases where the instantiation
7881         changes any super type. This fixes #382986.
7882
7883         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7884         that check for visibiliy as generic params only appears as the type subject
7885         of tokens on call opcodes. Field manipulation and ldftn must always
7886         target an exact type.
7887
7888 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7889
7890         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7891         if no related --security flag is passed.
7892
7893 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7894
7895         * mini-arch.h: Prepare support for ppc64.
7896
7897         Contributed under MIT/X11 license.
7898
7899 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7900
7901         * aot-runtime.c: Prepare support for ppc64.
7902
7903         Contributed under MIT/X11 license.
7904
7905 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7906
7907         * mini-ops.h: Prepare support for ppc64.
7908
7909         Contributed under MIT/X11 license.
7910
7911 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7912
7913         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7914
7915         Contributed under MIT/X11 license.
7916
7917 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7920         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7921         assemblies on windows.
7922
7923 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7924
7925         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7926         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7927         * main.c: Use UTF-8 encoded command line instead of Windows default code
7928         page on Windows to support Unicode.
7929         * driver.c (DllMain): New function for mixed-mode assembly support.
7930         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7931         export __stdcall functions without decoration.
7932
7933         Contributed under MIT/X11 license.
7934
7935 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7936
7937         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7938         saving it very early.
7939
7940 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7941
7942         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7943         deleted.  The only way to access the new RGCTX is via the
7944         trampline.
7945
7946         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7947         vtable instead of the RGCTX to static methods.
7948
7949         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7950         accessing the new RGCTX.
7951
7952         * generic-sharing.c: There is no separation between self, type
7953         arguments and other types in the RGCTX anymore.
7954
7955 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7956
7957         * mini-amd64.c (add_general): Remove previous stack adjustment.
7958         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7959         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7960         for 32 bytes of stack space reserved for all calls.
7961         
7962         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7963         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7964         adjustment.
7965         
7966         Code contributed under MIT/X11 license.
7967
7968 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7969
7970         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7971         against the root definition, peeling out method and type instantiations.
7972         Cache verify success results, code that fails verification is still
7973         checked multiple times.
7974
7975 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7976
7977         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7978
7979 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7980
7981         * mini-amd64.c (add_general): Always increment stack on Win64.
7982         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7983         on Win64.
7984         
7985         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7986         stack based argument handling on Win64.
7987         
7988         Code contributed under MIT/X11 license.
7989
7990 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7991
7992         * Makefile.am (version.h): Add support for git-svn.
7993
7994 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7995
7996         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7997         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7998         avoiding allocations and libc functions which might deadlock.
7999         
8000         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8001         'no-gdb-backtrace' option is set.
8002
8003         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8004
8005         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8006
8007 2008-04-21  Martin Baulig  <martin@ximian.com>
8008
8009         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8010         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8011
8012 2008-04-21  Martin Baulig  <martin@ximian.com>
8013
8014         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8015         `thread_vtable', `event_handler_ptr' and `event_handler'.
8016
8017 2008-04-21  Martin Baulig  <martin@ximian.com>
8018
8019         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8020         allows delayed initialization of the `executable_code_buffer' when
8021         attaching.
8022
8023 2008-04-21  Martin Baulig  <martin@ximian.com>
8024
8025         * mini.h (mono_debugger_create_notification_function): Removed.
8026         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8027
8028         * mdb-debug-info64.s
8029         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8030
8031         * mdb-debug-info32.s
8032         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8033
8034         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8035         currently only works on x86 and x86_64, so don't create it on ppc.
8036
8037 2008-04-21  Martin Baulig  <martin@ximian.com>
8038
8039         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8040
8041         * mini.c
8042         (mini_method_compile): In the fp elimination check, check
8043         `debug_options.mdb_optimizations' in addition to
8044         mono_debug_using_mono_debugger().       
8045
8046         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8047         disable some JIT optimizations which are only disabled when
8048         running inside the debugger.
8049         Added `--help-debug' option to describe the debugging options.
8050         (parse_debug_options): New static function to parse the `--debug'
8051         options, so we can easily add more stuff in future.
8052
8053 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8054
8055         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8056         the method has no body.
8057
8058 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8059
8060         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8061         assembly is not allowed in MSVC 64-bit compiler. 
8062         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8063         as we get floating point exceptions everywhere.
8064         
8065         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8066         correctly align arguments for call to throw_exception.
8067         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8068         
8069         Code contributed under MIT/X11 license.
8070
8071 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8072
8073         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8074
8075 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8076
8077         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8078
8079         * mini-amd64.c (NEW_INS): Set cil_code.
8080
8081         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8082         from mini-amd64.c so all debugger related logic is in one place.
8083
8084         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8085         later won't have a random ip assigned to them.
8086
8087 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8090         the arch specific function initializes code_size.
8091         (mono_create_delegate_trampoline): Ditto.
8092
8093         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8094         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8095         platforms.
8096
8097         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8098         running under the debugger.
8099
8100         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8101         debugger.
8102
8103         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8104         debugger. Also move the disabling of optimizations here from driver.c.
8105         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8106         debugger.
8107
8108         * mini.h (MonoCompile): Add a few new flags.
8109
8110 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8113         so the cil_code field of created MonoInst's is properly set.
8114         (mini_select_instructions): Ditto.
8115
8116         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8117         (MONO_INST_NEW_CALL): Ditto.
8118
8119         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8120         in many places so the ins->cil_code field is properly initialized.
8121
8122         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8123         place.
8124
8125 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8126
8127         * mini.c (mini_method_compile): Print a different message when compiling a 
8128         shared method.
8129         
8130         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8131         > 1.
8132
8133 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8134
8135         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8136         SSE2 instructions.
8137
8138         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8139         
8140 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8141
8142         * mini.c (handle_stack_args): Make this return void since its return value was
8143         never used. Also set cfg->unverifiable for invalid IL instead of calling
8144         G_BREAKPOINT ().
8145
8146 2008-04-10  Mark Probst  <mark.probst@gmail.com>
8147
8148         * mini.c: Make sure "this" is live in catch clauses with type
8149         variables in shared generic code.
8150
8151 2008-04-08  Mark Probst  <mark.probst@gmail.com>
8152
8153         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
8154         generic_class_is_reference_type() to ensure the proper behaviour
8155         when sharing generic code and the type in question is a type
8156         argument.
8157
8158 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8159
8160         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
8161         race conditions when printing thread dumps. Fixes #377738.
8162
8163 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
8164         
8165         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
8166         shows up when both MonoInst arguments can cause aliasig.
8167         There is likely no way in the current JIT to trigger this problem, but
8168         it showed up in the development of generics sharing, when in a new
8169         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8170         When the generics sharing code will be committed, its tests will be
8171         valid also for this bug.
8172
8173 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8174
8175         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8176         PATCH_INFO_METHOD.
8177
8178         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8179         NULL.
8180
8181 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8184         use a more detailed exception message for InvalidCastException.
8185
8186         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8187
8188         * driver.c (mono_main): Add --debug=casts option to turn on better 
8189         InvalidCastException message details.
8190
8191         * mini.c (mini_get_debug_options): New helper function to return the address of
8192         the debug_options variable.
8193
8194         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8195         the jit_tls TLS variable.
8196
8197         * mini.c (mono_jit_tls): New TLS variable.
8198
8199         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8200         option is used.
8201
8202 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8205
8206         * mini.c: Removed verifer related stuff, code moved to verify.c.
8207
8208         * driver.c: Using code from verify.c instead of mini.c.
8209
8210 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8213         longer valid.
8214
8215 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8216
8217         * mini.c (check_for_method_verify): Enabling verification of
8218         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8219         have been fixed.
8220
8221 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8224         caller saved registers as well.
8225         
8226         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8227         saved registers as well.
8228
8229 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8232
8233         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8234         code.
8235
8236 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8237
8238         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8239         to get_call_info.
8240         (get_call_info): Take a gsctx argument instead of 'cfg'.
8241
8242 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8243
8244         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8245         mono_verify_all is set.
8246
8247         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8248
8249         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8250
8251 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8252
8253         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8254         an exception.
8255
8256         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8257         verifier and the code generated by the compiler.
8258
8259 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8260
8261         * mini.c: Generic sharing of the non-nullable case of the box
8262         instruction.
8263
8264 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8265
8266         * inssel.brg: Fix the build.
8267
8268         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8269
8270 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8271
8272         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8273         Array:Address. Fixes #372410.
8274
8275         * iltests.il.in: New tests for readonly prefix.
8276
8277 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8278
8279         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8280         mini-trampolines.c.
8281
8282         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8283         mini-exceptions.c.
8284
8285         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8286         
8287         * mini.c (mono_decompose_op_imm): New helper function.
8288
8289         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8290         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8291         return value.
8292
8293         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8294         mono_arch_output_basic_block. Fix warnings.
8295
8296         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8297         for now.
8298
8299 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8302         since the extra frame is now detected automatically inside the loop.
8303
8304         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8305         opts which are now in mono_peephole_ins ().
8306         
8307         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8308
8309         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8310         frames and skip duplicate managed-to-native frames. Fixes #367665.
8311
8312         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8313         opts which are now in mono_peephole_ins ().
8314         (mono_arch_peephole_pass_2): Ditto.
8315
8316         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8317
8318         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8319         arch independent peephole optimizations.
8320
8321         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8322         opts which are now in mono_peephole_ins ().
8323
8324         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8325         
8326         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8327
8328         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8329         pattern.
8330
8331         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8332         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8333         opcode. 
8334
8335 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8338         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8339         return value.
8340
8341         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8342         mono_arch_output_basic_block. Fix warnings.
8343
8344 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8345
8346         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8347         conv.ovf.u.un.
8348
8349 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8352         conv.ovf.u.un.
8353
8354         * iltests.il: Add new tests.
8355
8356 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8357
8358         * mini.c: Removed Windows version macros.
8359
8360 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8361
8362         * generic-sharing.c: Put reflection types in the extensible part
8363         of the runtime generic context.
8364
8365         * mini.c: Generic sharing of the GetTypeHandle special case of the
8366         ldtoken instruction.
8367
8368 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8371
8372         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8373         
8374         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8375         consistency with the other version on the linear IR branch.
8376
8377         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8378
8379         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8380
8381         * iltests.il.in: Add new tests.
8382
8383 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8386
8387         * iltests.il.in: Add new tests.
8388
8389 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8390
8391         * mini.c: Two variables with the same name were declared in
8392         nesting contexts and one wasn't initialized.  Fixed.
8393
8394 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8395
8396         * mini.c: Generic sharing of the initobj instruction.
8397
8398 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8399
8400         * mini.c: make the test to optimize ldtoken from typeof() more
8401         precise.
8402
8403 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8404
8405         * mini.c: Generic sharing of the initobj instruction for reference
8406         types.
8407
8408 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8409
8410         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8411         the mono_breakpoint_clean_code() code to perform bound checks.
8412
8413 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8414
8415         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8416         mono_arch_patch_callsite() to include the start of the managed method
8417         to be able to perform bound checks.
8418
8419 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8420
8421         * mini.c: Generic sharing for the isinst instruction.
8422
8423 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8424
8425         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8426         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8427         with the runtime generic context argument.
8428
8429         * mini.c: Share calls to several types of unsharable methods by
8430         putting the address of the method code in the runtime generic
8431         context and doing an indirect call.
8432
8433         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8434         to switches.
8435
8436 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8437
8438         * generic-sharing.c: Change due to a change in the runtime genric
8439         context API.
8440
8441 2008-03-15  Martin Baulig  <martin@ximian.com>
8442
8443         * tramp-x86.c
8444         (mono_arch_nullify_class_init_trampoline): Add call to
8445         mono_breakpoint_clean_code() to make things work when running
8446         inside the debugger.
8447
8448         * tramp-amd64.c
8449         (mono_arch_nullify_class_init_trampoline): Add call to
8450         mono_breakpoint_clean_code() to make things work when running
8451         inside the debugger.
8452
8453 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * inssel-long.brg (reg): Fix 64 bit build.
8456
8457 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8458
8459         * mini.c, mini.h: Share static generic code by passing it an
8460         implicit argument pointing to the runtime generic context.
8461
8462         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8463         inssel-long32-mips.brg: New opcodes for calling shared static,
8464         which need to be passed the runtime generic context.
8465
8466         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8467         argument on the stack in the prologue if needed.  New function for
8468         finding the runtime generic context argument from the registers
8469         saved by the trampoline.
8470
8471         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8472         runtime generic context argument.
8473
8474         * tramp-amd64.c: Also restore the register used for the runtime
8475         generic context argument.
8476
8477         * mini-trampoline.c: Resolve shared static calls by consulting the
8478         runtime generic context via the new argument.
8479
8480         * generic-sharing.c: Add an argument to sharability-checking
8481         functions that specifies whether type variables should be treated
8482         as sharable type arguments.
8483
8484         * inssel-x86.brg: Removed a superfluous, buggy rule.
8485
8486         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8487         to switches.
8488
8489 2008-03-14  Martin Baulig  <martin@ximian.com>
8490
8491         * debug-debugger.c (main_thread_handler): Call
8492         mono_runtime_run_main() without sending any notifications.
8493
8494         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8495
8496 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8497
8498         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8499
8500 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8501
8502         * tramp-x86.c: Fixed register restore offsets in the trampoline
8503         code for ECX and EDX.
8504
8505 2008-03-12  Geoff Norton  <gnorton@novell.com>
8506
8507         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8508         different ucontext_t implementations.
8509         * exceptions-arm.c: Use the above defines to get exceptions working on 
8510         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8511         * mini-arm.c: Implement iPhone icache support (based on a patch by
8512         Luke Howard lukeh@padl.com)
8513
8514 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8515
8516         * mini.c: Enable generic sharing of calls to non-static
8517         non-interface non-generic non-value-type methods.
8518
8519         * mini-trampolines.c: Resolve calls from shared generic code.
8520
8521 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8524
8525         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8526
8527 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8528
8529         * mini.c: some fixes for the AOT compiler.
8530
8531 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * cpu-amd64.md: Add clob:1 to some float opcodes.
8534
8535 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * mini.h: Added MiniVerifierMode enumeration.
8538
8539         * mini.c: Added mini_verifier_set_mode to control
8540         the usage of the new verifier.
8541
8542         * mini.c (mono_method): Integrated the new verifier.
8543
8544         * driver.c: Extended --security option with validil and
8545         verifiable options to activate the new verifier.
8546
8547 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8548
8549         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8550         optimization to ctors taking 0 or 2 arguments too.
8551
8552         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8553         a bit.
8554
8555         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8556
8557         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8558
8559 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8560
8561         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8562         non-aot case as well.
8563
8564         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8565
8566         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8567         changes.
8568
8569         * aot-compiler.c (encode_patch): Ditto.
8570
8571         * mini.h (G_MININT32): Fix the definition of this.
8572
8573 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8574
8575         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8576
8577         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8578
8579 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8580
8581         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8582         methods returning vtypes in registers.
8583         (mono_arch_allocate_vars): Ditto.
8584
8585         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8586
8587         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8588
8589         * generics.cs: Add a test from the linear IR branch.
8590
8591         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8592
8593         * mini.c (inline_method): Cache failed inline attempts.
8594
8595 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8596
8597         * mini.c: For shared methods of generic classes put the location
8598         of "this" into the MonoGenericJitInfo.
8599
8600         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8601         register out of a MonoContext by register number.  Add the generic
8602         sharing context as an argument to mono_arch_find_this_argument().
8603
8604         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8605         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8606         for new arch function.
8607
8608         * mini-exception.c: Handle open exception clauses in shared
8609         generic code.
8610
8611         * mini-trampolines.c: Supply additional argument to
8612         mono_arch_find_this_argument().
8613
8614 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8615
8616         * Makefile.am (regtests): Run the bench.exe tests last.
8617
8618 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8621         a bit.
8622
8623 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8624
8625         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8626         with MS.
8627
8628         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8629         
8630         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8631
8632         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8633         whose class has no cctor.
8634
8635         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8636
8637 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8638
8639         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8640         unverified.
8641
8642 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8643
8644         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8645         to be in sync with the code on the linear IR branch.
8646
8647         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8648
8649         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8650
8651 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8652
8653         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8654
8655         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8656
8657         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8658
8659         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8660
8661         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8662         
8663         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8664         body.
8665
8666 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8667
8668         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8669         OP_LOADR4_MEMBASE emission.
8670
8671         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8672         (mono_spillvar_offset_float): Ditto.
8673
8674         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8675
8676         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8677         emission.
8678
8679         * basic-long.cs: Add regression tests for them.
8680
8681         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8682         use.
8683         (mono_arch_allocate_vars): Fix representation of single-precision float
8684         argument.
8685         (mono_arch_output_basic_block): Ditto.
8686
8687         * inssel-mips.brg: Ditto, remove duplicate items.
8688
8689         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8690         arguments of tail calls as on other platforms.
8691         (mono_arch_output_basic_block): Handle tail calls.
8692
8693         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8694         register.
8695
8696         * objects.cs (test_5_pass_static_struct): Add test for it.
8697
8698         Contributed under MIT/X11 license.
8699
8700 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8701
8702         * Makefile.am: Use gmcs for compiling the regression tests.
8703
8704         * *.2.cs *.2.il: Rename to *.cs and *.il.
8705
8706 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * regalloc.h: Make the vassign array smaller.
8709
8710         * mini.c (mini_method_compile): Remove an unused field in cfg.
8711
8712         * mini-codegen.c: Add a bunch of micro optimizations.
8713
8714 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8715
8716         * regalloc.h: Remove some unused fields.
8717
8718 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8721
8722         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8723
8724 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8725
8726         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8727
8728         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8729         trampoline: Fetch an entry from the runtime generic context.  If
8730         it's NULL, jump to the actual trampoline to fill the runtime
8731         generic context.  Otherwise, return it.
8732
8733         * mini.c: Call the lazy fetch trampoline to get entries out of the
8734         runtime generic context.
8735
8736         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8737         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8738         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8739
8740 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8741
8742         * mini.c: Fetch data out of the extensible part of the runtime
8743         generic context instead of calling a helper function.
8744
8745         * generic-sharing.c: Some functions moved into
8746         metadata/generic-sharing.c.  Helper function for fetching other
8747         types now checks and asserts against extensible rgctx (just for
8748         debugging purposes - the helper function isn't called anymore
8749         unless for debugging).
8750
8751 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8754         for tail calls up to the point that the tests in iltests.exe run. Also add a
8755         dummy CKFINITE implementation.
8756         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8757         needed for trampoline LMF frames.
8758
8759         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8760         trampoline LMF frames.
8761
8762 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8763
8764         * mini.c (inline_method): clean any pending loader error when inlining fail.
8765         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8766
8767 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8770
8771         * aot-runtime.c (decode_patch_info): Ditto.
8772
8773         * mini.c (mono_resolve_patch_target): Ditto.
8774         
8775         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8776         icall wrappers.
8777
8778         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8779         
8780         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8781         if it references an icall address.
8782
8783 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * cpu-s390x.md: Remove some more unused opcodes.
8786         
8787         * cpu-s390x.md: Remove some unused opcodes.
8788
8789         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8790         mono_op_imm_to_op ().
8791
8792         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8793         instead of a switch statement.
8794         
8795         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8796         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8797
8798         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8799         
8800         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8801
8802         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8803         -1.
8804
8805 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8808         opened. Fixes #362607.
8809
8810         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8811
8812         * iltests.il.in: Add a test for static methods in interfaces.
8813
8814 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8815
8816         * genmdesc.c (build_table): Fix a crash on older glib versions.
8817
8818         * cpu-sparc.md: Remove some unused opcodes.
8819         
8820         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8821         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8822
8823         * cpu-amd64.md: Remove some unused opcodes.
8824
8825         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8826         like the other opcodes.
8827
8828 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8831
8832         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8833
8834         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8835         variables 'cfg' instead of 'm' for consistency.
8836
8837         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8838
8839         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8840         argument holding the vtype return address, to avoid the ambigious use of
8841         cfg->ret for this purpose.
8842
8843         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8844
8845         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8846         
8847         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8848         new mono_print_ins () function which only takes one argument.
8849
8850 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8851
8852         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8853         macro arguments.
8854
8855 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8858
8859         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8860
8861         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8862         opcodes and other small changes.
8863
8864         * mini-ops.h: Add some new opcodes from the linear IR branch.
8865
8866         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8867
8868         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8869         opcodes, use the REG_MEMBASE opcodes instead.
8870         
8871         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8872         opcodes, use the REG_MEMBASE opcodes instead.
8873         
8874         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8875         linear IR branch.
8876
8877         * mini.c (mono_op_imm_to_op): New helper function.
8878
8879         * mini-ops.h: Add some opcodes from linear IR branch.
8880
8881 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8882
8883         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8884         <tsv@solvo.ru>.
8885
8886 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8887
8888         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8889         OP_ICONV_TO_R4/R8.
8890
8891         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8892
8893 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * aot-compiler.c (emit_method_code): Add an assert.
8896
8897         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8898         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8899         methods.
8900
8901 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8902
8903         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8904         some load/store opcodes so they are consistent. 
8905         (mono_arch_emit_prolog): Simplify some code.
8906
8907         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8908
8909         * objects.cs: Add tests for large argument offsets on ARM.
8910
8911         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8912         stack offsets. Fixes #359651.
8913
8914         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8915
8916         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8917
8918         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8919
8920         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8921
8922         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8923
8924         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8925         rid of CEE_CONV_R_UN.
8926
8927         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8928
8929 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8930
8931         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8932
8933         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8934
8935         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8936
8937         * cpu-amd64.md: Remove some unused opcodes.
8938
8939         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8940
8941         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8942
8943         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8944         arch specific functions for its parts. Call the peephole pass after local
8945         regalloc so the prolog can compute a more accurate max_offset.
8946         
8947         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8948         the corresponding OP_I/OP_L opcodes.
8949
8950         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8951
8952         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8953
8954 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8957         as they are handled in mini.c.
8958
8959         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8960         
8961         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8962         case since it is handled in mini.c.
8963
8964         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8965
8966         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8967
8968         * *.c: Use the new opcodes in the IR and back end code.
8969
8970         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8971
8972         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8973
8974 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8975
8976         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8977         an assert because it has a race condition.
8978
8979 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8980
8981         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8982
8983         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8984
8985         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8986
8987         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8988         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8989
8990 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8991
8992         * cpu-amd64.md (move): Correct the maximum size of move.
8993
8994 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8995
8996         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8997         the generic class init trampoline to return quickly if the class
8998         is already inited.
8999
9000 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9003         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9004
9005 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9008         branch.
9009
9010 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * objects.cs: Add some soft-float tests.
9013
9014         * mini.c: Fix a couple more soft-float issues.
9015
9016         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9017
9018         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9019         avoid a REX prefix.
9020
9021 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9022
9023         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9024         exception happens while compiling a virtual method.
9025
9026 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9029         
9030         * mini-sparc.c: Fix build.
9031
9032         * mini-sparc.c (get_call_info): Add support for generic sharing.
9033
9034         * mini-exceptions.c: Add a FIXME.
9035
9036 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9037
9038         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9039         altstack handling code.
9040
9041         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9042         
9043         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9044
9045         * mini-s390.c: Add support for generic sharing.
9046
9047         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9048         Fix CAS on s390.
9049         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9050
9051         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9052
9053         * mini-s390x.c: Add support for generic sharing.
9054         
9055         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9056         Fix CAS on ia64.
9057         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9058
9059         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9060         can be used since it takes a 16 bit signed immediate.
9061
9062         * inssel-s390x.brg: Fix OP_SETRET.
9063
9064         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9065
9066         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9067
9068         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9069
9070         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9071
9072         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9073         in one place.
9074
9075         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9076         stuff.
9077
9078         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9079         of the unused mono_arch_patch_delegate_trampoline stuff.
9080
9081 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9082
9083         * basic-long.cs: Move the fp related tests to basic-float.cs.
9084
9085         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9086
9087         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9088
9089         * basic-calls.cs: Add a test for proper float argument passing.
9090
9091         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9092         if the context corresponds to an exception received through a signal.
9093
9094         * exceptions.cs: Add a test for nullref handling at the start of a try
9095         clause.
9096
9097         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9098
9099         * jit-icalls.c (mono_break): New JIT icall.
9100
9101         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9102
9103         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9104
9105 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * cpu-*.md: Get rid of unused opcodes.
9108
9109         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9110
9111         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9112         by all platforms.
9113
9114         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9115         define.
9116
9117         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9118         the arch independent trampoline code in mini-trampolines.c.
9119
9120         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9121
9122         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9123
9124         * mini-s390.h: Remove an unused define.
9125         
9126         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9127         the arch independent trampoline code in mini-trampolines.c.
9128
9129         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9130
9131 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9134
9135         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9136
9137         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9138
9139         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9140
9141         * cpu-amd64.md: Use smaller sizes for int opcodes.
9142
9143         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9144
9145         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9146         objects.cs.
9147
9148         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
9149         debugging.
9150
9151         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
9152         instead of though a pointer to save an indirection when accessing elements of
9153         the array.
9154
9155         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
9156         some typos.
9157         (NOT_IMPLEMENTED): New helper macro.
9158         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
9159         of a bb.
9160
9161         * *.c: Use the new helper macro.
9162
9163 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
9166
9167 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9170         stack slots.
9171
9172 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9175         profiling is enabled.
9176         
9177         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9178         the end.
9179         (mono_arch_emit_prolog): Add more first bblock optimizations.
9180
9181         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9182         in order if possible.
9183         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9184         bblock, since the arguments are still in their original registers.
9185
9186         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9187
9188 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9191         as well.
9192
9193         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9194         offset 0.
9195
9196         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9197
9198         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9199         process async exceptions received while in unmanaged code.
9200
9201         * mini.c (mini_init): Install a callback with the runtime which will be called
9202         when a thread receives an async exception while in unmanaged code.
9203
9204         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9205
9206         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9207
9208 2008-01-16  Wade Berrier  <wberrier@novell.com>
9209
9210         * cpu-g4.md:
9211         * cpu-arm.md:
9212         * cpu-s390x.md:
9213         fix build
9214
9215 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9216
9217         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9218         compilation with sun cc.
9219
9220         * cpu-*.md: Fix the build.
9221
9222         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9223
9224         * mini-amd64.h: Add some comments to the MonoLMF structure.
9225
9226         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9227         
9228         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9229         in the LMF structure if possible. This saves two instructions in the
9230         managed->native wrappers.
9231
9232         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9233
9234 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9235
9236         * generic-sharing.c: New type argument lookup code which uses the
9237         runtime generic context template.
9238
9239 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9240
9241         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9242
9243         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9244         (mono_arch_output_basic_block): Fix localloc implementation.
9245
9246         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9247
9248         * mini-ia64.c (peephole_pass): Fix ia64 build.
9249
9250         * mini-amd64.c (peephole_pass): Fix a warning.
9251         
9252         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9253         at a constant offset from sp/fp.
9254
9255         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9256         instead of obtaining it from *lmf in the managed method case.
9257
9258 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9259
9260         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9261
9262 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9263
9264         * mini.h (MonoInstList): New type.
9265         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9266         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9267         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9268         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9269         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9270         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9271         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9272         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9273         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9274         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9275         MONO_INST_LIST_FOR_EACH_ENTRY,
9276         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9277         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9278         mono_inst_list_first, mono_inst_list_last,
9279         mono_inst_list_next, mono_inst_list_prev): New instruction
9280         list handling interfaces.
9281         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9282         list head 'ins_list'.
9283         (MonoInst): Replace next pointer with list head 'node'.
9284         (MonoCallInst): Make 'out_args' a MonoInstList.
9285         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9286         (MonoCompile): Delete reverse_inst_list and
9287         reverse_inst_list_len.
9288         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9289         mono_arch_lowering_pass, mono_arch_local_regalloc,
9290         mono_arch_output_basic_block, mono_arch_emit_prolog):
9291         Convert to new instruction lists.
9292         (insert_after_ins): Delete.
9293         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9294         instruction lists.
9295         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9296         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9297         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9298         mono_emulate_opcode, mono_emit_load_got_addr,
9299         inline_method, mono_method_to_ir, mono_print_bb_code,
9300         print_dfn, decompose_pass, nullify_basic_block,
9301         replace_out_block_in_code, remove_block_if_useless,
9302         merge_basic_blocks, move_basic_block_to_end,
9303         try_unsigned_compare, optimize_branches, mono_print_code,
9304         mini_select_instructions, remove_critical_edges): Likewise.
9305         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9306         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9307         mono_arch_output_basic_block, mono_arch_emit_prolog):
9308         Likewise.
9309         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9310         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9311         mono_arch_output_basic_block): Likewise.
9312         (inst_list_prepend, insert_after_ins): Delete.
9313         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9314         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9315         instruction lists.
9316         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9317         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9318         mono_arch_emit_prolog): Likewise.
9319         * cfold.c (mono_constant_fold): Likewise.
9320         * liveness.c (visit_bb, mono_analyze_liveness,
9321         optimize_initlocals): Likewise.
9322         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9323         * graph.c (mono_draw_code_cfg): Likewise.
9324         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9325         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9326         mono_ssa_cprop): Likewise.
9327         * abcremoval (get_relations_from_previous_bb, process_block):
9328         Likewise.
9329         * local-propagation (mono_cprop_invalidate_values,
9330         mono_local_cprop_bb): Likewise.
9331         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9332         peephole_pass, mono_arch_output_basic_block,
9333         mono_arch_emit_prolog): Likewise.
9334         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9335         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9336         mono_arch_emit_prolog): Likewise.
9337         (insert_after_ins): Delete.
9338         * aliasing.c (print_code_with_aliasing_information,
9339         mono_build_aliasing_information, mono_aliasing_deadce):
9340         Convert to new instruction lists.
9341         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9342         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9343         mono_arch_local_regalloc, mono_arch_output_basic_block):
9344         Likewise.
9345         (insert_after_ins): Delete.
9346         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9347         peephole_pass, mono_arch_output_basic_block): Convert to
9348         new instruction lists.
9349         * mini-codegen (InstList, inst_list_prepend,
9350         insert_after_ins): Delete.
9351         (insert_before_ins, get_register_force_spilling,
9352         get_register_spilling, free_up_ireg, free_up_reg,
9353         create_copy_ins, create_spilled_store, alloc_int_reg,
9354         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9355         to new instruction lists.
9356         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9357         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9358         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9359         (insert_after_ins): Delete.
9360         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9361         mono_arch_local_regalloc, mono_arch_output_basic_block,
9362         mono_arch_call_opcode): Convert to new instruction lists.
9363         (insert_after_ins): Delete.
9364         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9365         peephole_pass, mono_arch_output_basic_block,
9366         mono_arch_emit_prolog): Convert to new instruction lists.
9367
9368 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9369
9370         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9371
9372         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9373         Fixes #353182.
9374
9375         * Makefile.am (version.h): Make this work with non-bash shells.
9376
9377 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9378
9379         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9380
9381 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9384         the InitializeArray optimization.
9385
9386 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9387
9388         * mini.c driver.c: Don't include os/gc_wrapper.h.
9389
9390 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9391
9392         * mini.c (print_jit_stats): Print GC statistics if available.
9393
9394 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9395
9396         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9397
9398 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9399
9400         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9401
9402 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9403
9404         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9405         
9406         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9407
9408         * driver.c (mono_main): Ditto.
9409
9410 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9413
9414         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9415         in the vtable can't be encoded.
9416         (compile_method): Ditto.
9417
9418 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9419
9420         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9421         defined.
9422
9423         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9424         lmf->rbp.
9425
9426         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9427         the top LMF entry belongs to the current method.
9428
9429         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9430
9431 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9432
9433         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9434         
9435         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9436
9437         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9438
9439         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9440
9441         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9442
9443         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9444         implementation.
9445
9446         * basic-float.cs: Add an ulong->double cast test.
9447
9448 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * mini.c (mono_method_to_ir): Fix a warning.
9451
9452 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9453
9454         * mini-ops.h: Add OP_SWITCH.
9455
9456         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9457         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9458
9459 2007-12-11  Geoff Norton  <gnorton@novell.com>
9460
9461         * mini-s390x.c: Minor change to the MAX() define to allow
9462         it to compile with other gcc versions.
9463
9464 2007-12-11  Geoff Norton  <gnorton@novell.com>
9465
9466         * cpu-s390x.md:
9467         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9468
9469 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9470
9471         exceptions-arm.c (mono_arch_get_restore_context): Restore
9472         the frame pointer.
9473
9474         exceptions-arm.c (throw_exception): Save the frame pointer.
9475         This is a partial fix for #323747. Only the client side is
9476         fixed.
9477
9478 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9479
9480         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9481         was using an unrelated variable to log the class which
9482         needed the cctor to be called. This was crashing on arm.
9483
9484 2007-12-09  Robert Jordan  <robertj@gmx.net>
9485
9486         * mini-x86.c (mono_arch_emit_epilog):
9487         Consider all kinds of 64-bit types. Fixes #323114.
9488
9489 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9490
9491         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9492
9493 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9494
9495         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9496
9497 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9498
9499         * mini.c: run type ctor before allocating an object, not only
9500         when running it's constructor method (fixes at least part of bug #342507).
9501
9502 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9503         
9504         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9505         
9506         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9507         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9508         function.
9509
9510         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9511         mono_generic_class_init_trampoline () the same as it is done with the other
9512         trampolines.
9513
9514         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9515         aot-runtime.c aot-compiler.c: Implement AOT support.    
9516
9517 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9518
9519         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9520         build for archs which don't have the vtable trampoline defined
9521         yet.
9522
9523 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9524
9525         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9526
9527         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9528
9529         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9530
9531         * tramp-<ARCH>.c: Use the new helper function.
9532
9533 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9534
9535         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9536         trampoline call, which takes a vtable argument.
9537
9538         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9539         OP_TRAMPCALL_VTABLEs like other calls.
9540
9541         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9542         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9543         call.  Implemented a support function which fetches the vtable
9544         from a register set.
9545
9546         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9547         Implemented a generic class init trampoline, using the
9548         OP_TRAMPCALL_VTABLE opcode.
9549
9550         * mini.c: Implemented static field access when sharing generic
9551         code.  This implies initing the class using the new
9552         OP_TRAMPCALL_VTABLE call.
9553
9554 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9555
9556         * mini.c: Don't compile methods with sharing enabled if their
9557         classes are disabled for sharing.
9558
9559 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9562         opcodes. Fixes #346563.
9563
9564         * objects.cs: Add a new test.
9565
9566         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9567
9568         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9569         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9570
9571 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9574
9575 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9576
9577         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9578         code stream.
9579
9580 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9581
9582         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9583
9584         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9585         optimization in the AOT case.
9586         
9587 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9588
9589         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9590         
9591         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9592
9593         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9594
9595         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9596
9597         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9598         is created by the inlined delegate ctor.
9599
9600         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9601
9602         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9603
9604 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9605
9606         * cpu-x86.md: Fix the length of ckfinite.
9607
9608 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9611         
9612         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9613         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9614
9615         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9616
9617         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9618         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9619
9620 2007-11-28  Martin Baulig  <martin@ximian.com>
9621
9622         * mini-x86.c
9623         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9624         after creating the trampoline.
9625
9626 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9627
9628         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9629
9630         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9631         the same version.
9632
9633         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9634         instead of the calling method to help AOT.
9635
9636         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9637
9638 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9641         is defined.
9642
9643 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9646         
9647         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9648         (encode_method_ref): No need to handle generic method definitions specially.
9649
9650         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9651
9652         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9653         decode_klass_info.
9654
9655         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9656         encode_klass_info.
9657         (compile_method): Enable generic sharing.
9658
9659 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9662         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9663
9664         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9665         generic code.
9666
9667         * mini-trampolines.c: Fix a warning.
9668
9669         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9670         NEW_PCONST.
9671         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9672         (generic_class_is_reference_type): Remove unused function.
9673
9674         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9675         in the generic vtable trampoline case.
9676
9677         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9678         
9679         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9680         return an AOT method based on a vtable slot.
9681
9682         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9683
9684         * mini.c (mini_get_vtable_trampoline): Export this.
9685
9686 2007-11-22  Martin Baulig  <martin@ximian.com>
9687
9688         * debug-debugger.h
9689         (MonoDebuggerInfo): Move `debugger_version' up.
9690
9691 2007-11-22  Martin Baulig  <martin@ximian.com>
9692
9693         * mini-amd64.c
9694         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9695
9696         * mini-trampolines.c
9697         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9698         after compiling the method.
9699
9700 2007-11-20  Martin Baulig  <martin@ximian.com>
9701
9702         * debug-mini.c
9703         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9704         (mono_debugger_remove_breakpoint): Likewise.
9705         (mono_debugger_check_breakpoints): Likewise.
9706
9707         * debug-debugger.c: Implement the new breakpoint interface here.
9708
9709 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9712         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9713
9714         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9715
9716 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9717
9718         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9719
9720         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9721         mini.c.
9722
9723         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9724         mini.c.
9725
9726         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9727         returning a vtype in a register.
9728
9729         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9730         here from the arch specific code.
9731
9732         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9733         mini.c.
9734
9735         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9736         (mono_arch_emit_prolog): Increment maximum prolog size.
9737
9738         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9739         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9740
9741         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9742         MonoGenericSharingContext.
9743
9744         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9745         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9746
9747 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9748
9749         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9750         which extract fields out of the runtime generic context.  Full
9751         sharing of the NEWARR opcode.
9752
9753 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9754
9755         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9756         --enable-minimal=ssa.
9757
9758 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9761         mono_marshal_get_delegate_invoke () signature change.
9762
9763 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9764
9765         * mini.c: Removed the shared context in favor of the generic
9766         sharing context.  Allocate the MonoJitInfo structure with room for
9767         the generic sharing context if it's needed.
9768
9769         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9770         domain-internals.h now.
9771
9772         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9773
9774         * generic-sharing.c: Several changes for working without a shared
9775         context and instead operating on open types instead.
9776
9777 2007-11-12  David S. Miller  <davem@davemloft.net>
9778
9779        * inssel-sparc.brg: Fix double instruction emit.
9780
9781 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9782
9783         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9784         Get/Set/Address methods.
9785         
9786         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9787         mono_marshal_get_delegate_invoke signature change.
9788
9789 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9790
9791         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9792         This can happens with dynamic methods. Fixes the other bug in #322722.
9793
9794 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9795
9796         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9797         BX call sequence.
9798
9799         * mini-arm.c (arm_patch): Implement patching of BX call
9800         sequence. Fixes one of the bugs in #322722.
9801
9802 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9803
9804        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9805        under Linux.  We only need to flush every 32-byte cache line.    
9806
9807 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9808
9809         * mini.c:
9810         move_basic_block_to_end: Add branches when needed, eventually creating
9811         a new BB.
9812         optimize_branches: added a parameter that tells if it's ok to create
9813         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9814         and avoid calling move_basic_block_to_end when it's not ok.
9815         Fixes bug 318677.
9816
9817 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9818
9819         * mini.c: Abort inlining call to InitializeArray if something
9820         looks wrong.  Let the icall handle it, which now has proper safety
9821         checks.
9822
9823 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9824
9825         * mini.c (mono_spill_call): add support for soft-float.
9826
9827         * mini.c (mono_method_to_ir): add support for soft-float
9828         to inlined functions that return float.
9829
9830         * mini.c (mono_method_to_ir): add support for soft-float
9831         to cee_stsfld opcode on float fields.
9832
9833 2007-11-05  Geoff Norton  <gnorton@novell.com>
9834
9835         * mini-x86.h: Fix the structure access for X86 Leopard.
9836
9837
9838 2007-11-05  Martin Baulig  <martin@ximian.com>
9839
9840         * mini-trampolines.c
9841         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9842         after compiling the method to notify the debugger.
9843
9844 2007-11-05  Martin Baulig  <martin@ximian.com>
9845
9846         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9847
9848 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9849
9850         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9851         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9852
9853 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9856         native-to-managed wrappers.
9857         
9858 2007-11-01  Geoff Norton  <gnorton@novell.com>
9859
9860         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9861         members.
9862
9863 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9864
9865         * mini.c, mini-x86.c: when getting back from unmanaged code
9866         to managed via a marshaled delegate we also need to set the
9867         right domain.
9868
9869 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9870
9871         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9872         for amd64.
9873
9874 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9875
9876         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9877         let the debugger or other external agents to tell the JIT when
9878         a sw breakpoint has been inserted in the code that the JIT needs
9879         to be able to inspect.
9880
9881 2007-10-31  Martin Baulig  <martin@ximian.com>
9882
9883         * debug-debugger.h
9884         (MonoDebuggerInfo): Remove `runtime_class_init'.
9885
9886 2007-10-30  Martin Baulig  <martin@ximian.com>
9887
9888         * debug-mini.h
9889         (mono_debugger_thread_created): Added `MonoThread *' argument.
9890         (mono_debugger_extended_notification): New public method.
9891         (mono_debugger_trampoline_compiled): New public method.
9892
9893         * debug-mini.c
9894         (MonoDebuggerThreadInfo): Added `thread' and
9895         `extended_notifications' fields.
9896
9897         * debug-debugger.c
9898         (debugger_executable_code_buffer): New static variable.
9899
9900         * debug-debugger.h
9901         (MonoDebuggerInfo): Added `executable_code_buffer',
9902         `executable_code_buffer_size', `breakpoint_info_area',
9903         `breakpoint_table' and `breakpoint_table_size'.
9904
9905 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9906
9907         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9908         that IP  either is an unused value or the vtable pointer. IMT 
9909         calls use vtable + offset now. Reduced by almost half the size
9910         of IMT entries.
9911
9912 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9913
9914         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9915         defines to access param registers. Replace long usage with
9916         gsize as sizeof(long) != sizeof(void*) on Win64.
9917
9918         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9919         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9920         instead of non-existant _GetAddressOfReturnAddress.
9921
9922         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9923         param registers. Save/restore %rdi and %rsi in MonoLMF.
9924
9925         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9926         param registers. Modify (throw_exception) signature to take 
9927         %rdi and %rsi on Win64. 
9928
9929         Code is contributed under MIT/X11 license.
9930
9931 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9932
9933         * helpers.c: unlink debugging output files.
9934
9935 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9936
9937         * mini.c: Move mono_create_ftnptr () to object.c.
9938
9939 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9940
9941         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9942         optional. This function can now be used to disassemble code generated
9943         outside the JIT such as trampolines and IMT thunks.
9944
9945         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9946
9947         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9948         vtable pointer from a ldr instruction.
9949
9950         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9951         new IMT call sequence.
9952
9953         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9954         call sequence for interface invocations.
9955
9956         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9957         for imt support. This function is empty since IMT on ARM requires no
9958         special handling on the IR side.
9959
9960         * mini-arm.c (mono_arch_find_imt_method): added, required for
9961         imt support.
9962
9963         * mini-arm.c (mono_arch_find_this_argument): added, required
9964         for imt support.
9965
9966         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9967         a ldr instruction to load a value stored in the code stream.
9968
9969         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9970         for imt support.
9971
9972
9973 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini.c (mini_init): Install the jump trampoline callback.
9976
9977 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9978
9979         * mini-trampolines.c: handle synchronized methods with the common
9980         vtable trampoline (bug #335601).
9981
9982 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9985
9986         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9987         64 bit platforms.
9988
9989         * mini-ia64.h mini-ia64.c: Add support for IMT.
9990
9991         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9992         prolog. Fixes #331958.
9993
9994 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9997
9998 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9999
10000         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10001         trampoline.
10002
10003 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10004
10005         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10006         trampoline.
10007
10008 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10009
10010         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10011         trampoline.
10012
10013 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10014
10015         * mini-trampolines.c: changed the magic rampoline to understand
10016         the common vtable trampoline method: the method to invoke is
10017         determined by the vtable displacement of the call.
10018
10019 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10020
10021         * mini.c, mini.h: register the common vtable trampoline if the
10022         architecture supports it.
10023
10024 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10025
10026         * cpu-amd64.md: use the correct max length for tls_get.
10027
10028 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10031         CEE_STELEM_ANY. Fixes #333696.
10032
10033 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10034
10035         * exceptions-x86.c: provide more graceful handling of the case where
10036         we followed a bogus function pointer from managed code (bug #332866).
10037
10038 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10039
10040         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10041         replaces the generic_shared flag and will carry more information
10042         in the future.
10043
10044         * generic-sharing.c: Added mini_type_stack_size() which allows
10045         allows open types if given a generic sharing context.
10046         mini_get_basic_type_from_generic() takes a
10047         MonoGenericSharingContext* instead of a MonoCompile* now.
10048
10049         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10050         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10051         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10052         changes above.  Just passing arguments through to the right
10053         places.
10054
10055 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10056
10057         * mini-arm.c: unify the call emission to emit_code_seq().
10058
10059 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10060
10061         * tramp-arm.c: reduced the trampoline size.
10062
10063 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10064
10065         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10066         variable handling out of arch-specific code.
10067
10068 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10069
10070         * mini-arm.c: implemented fast delegate dispatch.
10071
10072 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10075         that fp elimination is turned off if the space required by locals is too
10076         big. Fixes #331958.
10077
10078 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10079
10080         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10081         ARM to the new style trampoline.
10082
10083 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10084
10085         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10086
10087         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10088
10089 2007-10-09  Martin Baulig  <martin@ximian.com>
10090
10091         * debug-debugger.h
10092         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10093         `field_info_offset_offset'.     
10094
10095 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10096
10097         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10098         removed more internal usage of the r11 register and made it available
10099         to the register allocator.
10100
10101 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10102
10103         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10104         when sharing generics and treat type variables as references.
10105
10106 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10107
10108         * mini-ppc.c: started removing the internal uses of register r11
10109         to eventually allow the register allocator to manage it as an
10110         additional available register.
10111
10112 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10113
10114         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10115
10116 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10117
10118         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10119         specific trampolines as they are not performance critical as a jump
10120         target (maybe align as before only for AOT code?). This saves about
10121         200 KB of native code on x86 for monodevelop startup.
10122
10123 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10124
10125         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10126         monodevelop startup.
10127
10128 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10131
10132         * mini-sparc.h mini-sparc.c: Implement IMT support.
10133
10134         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10135         its smaller and doesn't clobber sparc_g1.
10136
10137         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10138
10139 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10140
10141         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10142
10143 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10144
10145         * mini-ppc.c: implemented fast delegate invocation.
10146
10147 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10148
10149         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
10150
10151 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10152
10153         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
10154         code to the new style trampoline in preparation for IMT support.
10155
10156 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
10157
10158         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
10159         systems already. This also reduces the specific trampiline sizes and
10160         prepares for the use of r12 as the IMT identifier register.
10161
10162 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10163
10164         * mini-mips.h: endianess fix (simplified from a patch by
10165         Thomas Kunze <thommy@tabao.de>, bug #323737).
10166
10167 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10168
10169         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10170         to access ucontext fields and enable netbsd support
10171         (partially from Magnus Henoch <mange@freemail.hu>).
10172
10173 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10174
10175         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10176         use the preprocessor from the CPP env var if it is set.
10177
10178 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10179
10180         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10181         code, before interface_offset gets used.
10182
10183 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10184
10185         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10186         mono_class_setup_vtable () before accessing klass->vtable.
10187
10188 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10189
10190         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10191         hackish.
10192
10193 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10194
10195         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10196         IMT slots (this saves hundreds of KB of memory in programs like
10197         IronPython and Monodevelop).
10198
10199 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10200
10201         * mini.c: print the delegate counter.
10202
10203 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10204
10205         * mini-x86.c: make it easier to enable the debugging code for IMT
10206         slots.
10207
10208 2007-09-28  Martin Baulig  <martin@ximian.com>
10209
10210         * debug-debugger.h
10211         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10212         `mono_method_klass_offset' and `mono_method_token_offset'.
10213
10214 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10215
10216         * mini.c: First generics sharing implementation.  Can only share
10217         in very simple cases.  If sharing doesn't work it falls back to
10218         dedicated compilation.
10219
10220         * mini.h: Flag in MonoCompile to specify whether generic
10221         compilation is shared.  Flags enum for marking which generic inst
10222         of a context is used.  Prototypes for helper functions.
10223
10224         * generic-sharing.c: Helper functions for generic method sharing.
10225
10226         * optflags-def.h: Optimization flag (gshared) for enabling generic
10227         method sharing added.
10228
10229         * Makefile.am: generic-sharing.c added.
10230
10231 2007-09-19 Daniel Nauck <dna@mono-project.de>
10232
10233         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10234
10235 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10236         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10237         fixes bug 325507.
10238
10239 2007-09-19  Martin Baulig  <martin@ximian.com>
10240
10241         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10242         mono_debug_cleanup() is now part of mono_cleanup().
10243
10244 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * driver.c (mono_main): Fix a warning.
10247
10248 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10249
10250         * aot-compiler.c: Optimize various parts when processing large assemblies.
10251         Fixes ##325568.
10252
10253         * mini.c (mono_patch_info_hash): Improve hash function.
10254
10255 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10256
10257         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10258         
10259         Code is contributed under MIT/X11 license.
10260
10261 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10262
10263         * mini.c (mini_init): Fix a leak.
10264
10265         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10266
10267 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10268
10269         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10270
10271 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10274
10275 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10276
10277         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10278         variance tests.
10279
10280         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10281
10282         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10283
10284         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10285
10286         * aot-runtime.c (decode_patch_info): Ditto.
10287
10288 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10289
10290         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10291         static case. Cache delegates in architecture specific code, 
10292         based on number of parameters.
10293         
10294         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10295         in architecture specific code, based on number of parameters.
10296         
10297         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10298         caching happen in architecture specific code now.
10299         
10300         Code is contributed under MIT/X11 license.
10301
10302 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10303
10304         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10305         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10306         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10307
10308         Code is contributed under MIT/X11 license.
10309
10310 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10311         * mini.c: (mono_thread_abort) Fixed bug #82416.
10312
10313 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10314
10315         * mini.: hook the new managed GC allocation feature into the JIT.
10316
10317 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10318
10319         * mini.c: implementation for the new runtime tls opcode.
10320
10321 2007-09-11  Martin Baulig  <martin@ximian.com>
10322
10323         * debug-debugger.h
10324         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10325         `mono_method_inflated_offset'.
10326
10327 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10330         async exceptions into a method.
10331
10332         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10333         purpose of testing whenever the unwinder works at every instruction.
10334
10335 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10336
10337         * mini.c: check accessibility of method used in ldftn (fixes
10338         bug #82635).
10339
10340 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10343
10344         * inssel.brg: Fix a warning.
10345
10346 2007-09-03  Martin Baulig  <martin@ximian.com>
10347
10348         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10349         now takes the `main_method' as argument.
10350
10351 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10354
10355 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10356
10357         * driver.c: include the cil-coff.h header on Windows.
10358         
10359         Code is contributed under MIT/X11 license.
10360
10361 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10362
10363         * mini.c, driver.c: don't include the cil-coff.h header.
10364
10365 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10366
10367         * mini.c: flag places that needs fixes fo soft-float support.
10368
10369 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10370
10371         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10372         endian systems (partially from Dean Jenkins, bug #81924).
10373
10374 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10375
10376         * mini.c (check_linkdemand): Remove embedded reference object in
10377         call to LinkDemandSecurityException.
10378         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10379         with an IntPtr instead of a reference object.
10380
10381 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10382
10383         * mini.c (handle_initobj): Handle alignment properly.
10384
10385         * inssel.brg (mini_emit_memset): Ditto. 
10386
10387         * inssel.brg (mini_emit_memcpy): Ditto. 
10388
10389         * inssel-sparc.brg: Ditto.              
10390
10391         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10392
10393 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10396         exceptions raised in unmanaged code. Fixes part of #82594.
10397
10398 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10399
10400         * mini.c (mono_method_to_ir), declsec.c
10401         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10402
10403 2007-08-22  Martin Baulig  <martin@ximian.com>
10404
10405         * debug-mini.h
10406         (MonoDebuggerThreadInfo): New typedef.
10407         (mono_debugger_thread_table): New global variable.
10408         (mono_debugger_thread_created): New public function.
10409         (mono_debugger_thread_cleanup): New public function.
10410
10411         * debug-debugger.h
10412         (MonoDebuggerInfo):
10413         - removed `get_current_thread' and `lookup_assembly'.
10414         - removed `data_table'.
10415         - added `thread_table'.
10416
10417         * mini.c
10418         (mono_thread_start_cb): Call mono_debugger_thread_created().
10419         (mono_thread_attach_cb): Likewise.
10420         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10421         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10422         initial domain.
10423
10424         * driver.c (mono_main): Move mono_debug_init() up, before calling
10425         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10426
10427 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10428
10429         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10430         together when passing several arguments of type double (gives a small
10431         speedup and saves a few bytes of generated code).
10432
10433 2007-08-20  Jb Evain  <jbevain@novell.com>
10434
10435         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10436
10437 2007-08-20  Jb Evain  <jbevain@novell.com>
10438
10439         * mini.c (mono_method_to_ir): throw MethodAccessException
10440         and FieldAccessException instead of InvalidProgramException.
10441
10442 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10443
10444         * mini.c: CoreCLR security checks.
10445
10446         * mini.h: Removed MonoSecurityMode (moved to
10447         metadata/security-manager.h) and mono_security_mode global var
10448         (replaced by set/get functions in security-manager.h).
10449
10450         * driver.c: Added "core-clr-test" security mode for testing.  Used
10451         set-function for setting security mode.
10452
10453 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10454
10455         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10456         the new jit_info_table.
10457
10458         * driver.c: Test code for the new jit_info_table (enabled by the
10459         define MONO_JIT_INFO_TABLE_TEST).
10460
10461 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10464         detection of call <REG> instruction sequence. Fixes build on freebsd.
10465
10466 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10467
10468         * mini-exceptions.c: Fix a warning.
10469
10470 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10471
10472         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10473         stack overflow handling code on amd64 too.
10474
10475         * mini-exceptions.c (mono_setup_altstack): Make this use 
10476         mono_thread_get_stack_bounds ().
10477
10478         * mini-x86.h: Disable sigaltstack on solaris x86.
10479
10480 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10483
10484 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10485
10486         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10487
10488 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10489
10490         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10491
10492         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10493
10494 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10495
10496         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10497         due to alignment.
10498
10499 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10500
10501         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10502         to be emitted (bug #82281).
10503
10504 2007-08-01  Martin Baulig  <martin@ximian.com>
10505
10506         Merged the `debugger-dublin' branch.
10507
10508         * debug-debugger.h (MonoDebuggerInfo):
10509         Removed the `old_*' compatibility entries.
10510         Added `debugger_version' and `data_table'.
10511         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10512         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10513
10514         * debug-mini.c
10515         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10516         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10517         instead of a `gconstpointer'.
10518         (mono_debugger_insert_method_breakpoint): Return a
10519         `MonoDebugMethodAddressList *'.
10520
10521 2007-06-28  Martin Baulig  <martin@ximian.com>
10522
10523         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10524
10525 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10528         __builtin_frame_address () since it is broken on older gcc versions.
10529
10530 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10531
10532         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10533         on the stack overflow handling and made the managed stack overflows
10534         catchable in most cases using soft guard pages.
10535         * exceptions-x86.c: added code to restore the protection in the soft
10536         guard pages at the end of exception handling.
10537
10538 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10541
10542 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10543
10544         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10545         exception handling.
10546
10547 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10548
10549         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10550         signal handling support until it has been ported to the new mechanism.
10551         * mini.c: fixed stack overflow detection and use the new
10552         architecture code  to handle signals on the altstack.
10553
10554 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10555
10556         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10557         stack overflows on the alt stack.
10558
10559 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10560
10561         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10562         stack overflows on the alt stack.
10563
10564 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10565
10566         * exceptions-ppc.c: cleanup preparing for altstack support.
10567
10568 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10569
10570         * exceptions-arm.c: cleanup preparing for altstack support.
10571
10572 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10573
10574         * mini.c (print_jit_stats): Output hazard pointer stats.
10575
10576 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10577
10578         * driver.c, mini.c: Replaced security mode flags with a single
10579         enum variable.
10580
10581 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10582
10583         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10584
10585 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10586
10587         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10588         (which doesn't do anything yet) for activating Core CLR
10589         (Silverlight) security.
10590
10591 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10592
10593         * mini-codegen.c: work around a possible gcc bug on arm.
10594
10595 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10596
10597         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10598         message for platforms that don't support AOT compilation.
10599
10600 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10601
10602         * mini.h, mini.c, driver.c: temporary smcs hack.
10603
10604 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10605
10606         * mini-arm.h, mini-arm.c: arm EABI fixes.
10607
10608 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10611         case.
10612
10613         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10614         trampolines taking a method argument.
10615
10616         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10617
10618         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10619         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10620
10621         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10622         JIT compilation throws an exception. Fixes #82050.
10623
10624 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10625
10626         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10627         with the MONO_EXCEPTION_ defines.
10628
10629 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10630
10631         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10632         #82117.
10633         
10634         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10635         the cause of an assertion.
10636
10637 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10638
10639         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10640         removed.
10641
10642 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10645         assert. Should fix #82103.
10646
10647 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10650         here too. Fixes #82095.
10651
10652         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10653         addresses.
10654
10655         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10656
10657         * mini-amd64.h: Enable IMT for amd64.
10658         
10659         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10660
10661 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10662
10663         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10664
10665 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10666
10667         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10668         as soon as check_linkdemand sets an exception_type.
10669
10670 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10671
10672         * mini-x86.c: fixed offsets for IMT call sequence.
10673         * mini-x86.h: enable IMT again.
10674
10675 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * trace.c (mono_trace_enter_method): Decode MonoType too.
10678
10679         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10680
10681         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10682
10683         * mini-amd64.c: Add preliminary IMT implementation.
10684         
10685 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10686
10687         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10688         understand the new IMT-base interface invocation (thanks to
10689         Daniel Nauck for the report and the remote debugging session).
10690
10691 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10692
10693         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10694
10695 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10698
10699 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10700
10701         * mini-trampolines.c: implement AOT IMT support.
10702         * mini-x86.h: enable IMT support for wider testing.
10703
10704 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * inssel.brg (emit_imt_argument): Add aot support here.
10707
10708         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10709
10710 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10711
10712         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10713         of the IMT implementation, partially from massi, with my
10714         implementation of the bsearch sequence. Disabled by default until
10715         the AOT code is implemented.
10716
10717 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10720
10721         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10722
10723 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10724
10725         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10726         arch-independent IMT JIT code from Massimiliano
10727         Mantione (massi@ximian.com) with small cleanups from me.
10728
10729 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10730
10731         * Makefile.am: fix svn invocation to get the svn revision to be
10732         independent of the local language (build fix).
10733
10734 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10735
10736         * mini.c (inline_method): Reset cfg->exception_type if the
10737         inlining is aborted.  Fixes: 82049.
10738
10739 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10740
10741         * mini.c: remove assert from exception handling code when exception_ptr
10742         is not set.
10743
10744 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * mini.c (mono_codegen): Add an assert.
10747
10748         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10749         enter and leave code.
10750         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10751
10752 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10753
10754         * mini-ppc.c: fixed memory corruption for localloc(0)
10755         (bug #81852).
10756
10757 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10758         
10759         * mini.c: Fix warnings.
10760
10761 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10762
10763         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10764         to emit better double->int conversions.
10765
10766 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10767
10768         * mini.c: the provided Min/Max optimizations are valid for unisgned
10769         ints.
10770
10771 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10772
10773         * 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
10774
10775 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10776
10777         * mini.c (mono_running_on_valgrind): Add support for reporting the
10778         method and  its boundaries to valgrind.
10779
10780 2007-06-28  Martin Baulig  <martin@ximian.com>
10781
10782         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10783
10784 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10787
10788         * generic.2.cs: Add new test case.
10789
10790 2007-06-25  Martin Baulig  <martin@ximian.com>
10791
10792         Merged the `debugger-dublin' branch.
10793
10794         * debug-mini.c
10795         (mono_debugger_insert_method_breakpoint): New public method.
10796         (mono_debugger_remove_method_breakpoint): Likewise.
10797         (mono_debugger_check_breakpoints): New static method.
10798         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10799
10800         * debug-debugger.h (MonoDebuggerInfo):
10801         Renamed (to keep backward compatibility in the vtable):
10802         `insert_breakpoint' -> `old_insert_breakpoint'.
10803         `remove_breakpoint' -> `old_remove_breakpoint'.
10804         `create_string' -> `old_create_string'.
10805         `lookup_class' -> `old_lookup_class'.
10806         `lookup_type' -> removed; changed into a dummy field.
10807         `lookup_assembly' -> `old_lookup_assembly'.
10808         Added (same functionality, but different signature):
10809         `create_string', `lookup_class', `lookup_assembly'
10810         Added new:
10811         `get_method_addr_or_bpt', `remove_method_breakpoint',
10812         `runtime_class_init'.
10813
10814         * debug-debugger.c: Merged the `debugger-dublin' branch.
10815
10816 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10819         well.
10820         (peephole_pass): Likewise.
10821
10822 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10823
10824         * driver.c: hopefully make setaffinity work also for ancient
10825         versions of linux.
10826
10827 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10828
10829         * driver.c : win32 build fix.
10830
10831 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10832
10833         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10834         processor if it is set.
10835
10836 2007-06-21  Martin Baulig  <martin@ximian.com>
10837
10838         * debug-mini.h: New file.
10839
10840         * debug-mini.c
10841         (mono_debugger_insert_breakpoint_full): Moved here from
10842         ../metadata/mono-debug-debugger.c.
10843         (mono_debugger_remove_breakpoint): Likewise.
10844         (mono_debugger_breakpoint_callback): Likewise.
10845
10846 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10847
10848         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10849         changes in MonoGenericClass.
10850
10851 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10852
10853         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10854
10855 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10856
10857         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10858         removal of MonoGenericMethod.
10859
10860 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10861
10862         * mini-exceptions.c: hooks for the exception events profiling API.
10863
10864 2007-06-14  Randolph Chung  <tausq@debian.org>
10865
10866         * Makefile.ma: Add hppa target.
10867         * mini-arch.h: Include mini-hppa.h
10868         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10869         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10870         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10871
10872 2007-06-14  Randolph Chung  <tausq@debian.org>
10873
10874         * inssel.brg: Add rules for "chained" compare-branch operations so that
10875         a single compare op can affect multiple branches.  Adjust cost for
10876         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10877         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10878         cost for some rules so that they can more easily be overridden by
10879         per-arch rules (with fixes from lupus).
10880         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10881
10882 2007-06-13  Randolph Chung  <tausq@debian.org>
10883
10884         * mini-ops.h: Reorder branch ops so that they match the order of the
10885         corresponding CEE_* ops.  The code expects them this way.
10886         Add new ops for HPPA target.
10887         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10888
10889 2007-06-13  Randolph Chung  <tausq@debian.org>
10890
10891         * mini-exceptions.c: Handle cases where the stack grows towards
10892         larger addresses.
10893         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10894
10895 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10896
10897         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10898         counter.
10899         * driver.c: explain where a non-matching corlib is found.
10900
10901 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10902
10903         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10904
10905 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10906
10907         * mini-exceptions.c: Generate a method profile leave event during
10908         an exception to ensure that the profiler gets notified.
10909
10910 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10913         branch.
10914
10915         * cpu-amd64.md: Add long_and/or/xor opcodes.
10916
10917 2007-06-06  Wade Berrier  <wberrier@novell.com>
10918
10919         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10920         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10921         length of instruction shr_imm (expected 8, got 10)
10922
10923 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10926
10927 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10928
10929         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10930         MonoInternalHashTable again (fixed bug in the internal hash table
10931         code).
10932
10933 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10934
10935         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10936         Have to figure out what makes it crash the SWF regression.
10937
10938 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10941
10942 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10943
10944         * mini.c: optimize out the type check when storing null in a
10945         reference array.
10946
10947 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10948
10949         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10950         MonoInternalHashTable.
10951
10952 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10953
10954         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10955         signed integer methods.
10956
10957 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10960         permanently since the current approach doesn't work.
10961
10962 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10965         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10966
10967 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10970         the sreg2==rdx case.
10971         
10972         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10973         account if it contains a rex prefix.
10974         (peephole_pass): Handle OP_FMOVE as well.
10975
10976 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10977
10978         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10979         as it causes regressions.
10980
10981 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10982
10983         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10984         static case as well.
10985
10986         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10987
10988         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10989         (mono_arch_get_this_arg_from_call): Ditto.
10990
10991         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10992
10993         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10994         invoke_impl field.
10995
10996         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10997         (mono_arch_get_this_arg_from_call): Ditto.
10998
10999         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11000         
11001         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11002         try to create optimized invoke code and use that for further invocations. 
11003         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11004
11005         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11006
11007 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11008
11009         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11010         sealed classes or methods.
11011         *devirtualization.cs: tests for the new optimization
11012
11013 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11016         by the update_volatile () function.
11017
11018 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11021         require it.
11022
11023         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11024
11025 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11026
11027         * mini.c: Add configure checks for header files.
11028         * mini-x86.c: Add configure checks for header files.
11029         * trace.c: Add configure checks for header files.
11030         * aot-runtime.c: Add configure checks for header files.
11031         * aot-compiler.c: Add configure checks for header files.
11032         * driver.c: Add configure checks for header files.
11033         * mini-codegen.c: Add configure checks for header files.
11034         
11035         Code is contributed under MIT/X11 license.
11036
11037 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11038
11039         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11040         icompare_imm -128 + op_iclt. Fixes #81703.
11041
11042 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11045
11046 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11047
11048         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11049         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11050         so that all isinst checks now use "interface_bitmap".
11051
11052 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11053
11054         * cpu-amd64.md (jmp): Fix a warning.
11055
11056         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11057
11058         * basic.cs: Add new regression test.
11059
11060         * basic.cs: Remove test which is now in basic-long.cs.
11061
11062         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11063
11064         * basic-long.cs: Add new test.
11065         
11066 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11069
11070 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11073
11074         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11075         places.
11076         
11077         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11078         throwing code a bit.
11079
11080         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11081         the exception throwing code a bit.
11082
11083         * mini-x86.c (get_call_info): Allocate result from a mempool.
11084
11085 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11086
11087         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11088
11089         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11090
11091         * mini.h (MonoCompile): Add 'token_info_hash' field.
11092
11093         * mini.c: Save token->method associations during compilation so the AOT 
11094         compiler can use it.
11095         
11096         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11097         which reference generic classes and methods.
11098
11099 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11100
11101         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11102
11103         * aot-compiler.c (compile_method): Fix a typo in a comment.
11104
11105         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11106
11107         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11108         everything generic.
11109
11110         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11111
11112 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * mini.h (MonoCompile): Add 'args' field.
11115
11116         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11117         into cfg->args.
11118
11119         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11120
11121 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11122
11123         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11124
11125         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11126
11127         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11128         opcodes for some opcodes.
11129
11130         * mini.h *.brg *.c: Use the new opcodes.
11131
11132 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11133
11134         * mini.h: Bumped aot revision.
11135
11136         * inssel.brg: modified code generation of type checks for interfaces
11137         to use the new "MonoClass.interface_bitmap" instead of the old
11138         "MonoClass.interface_offsets".
11139
11140 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11141
11142         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11143
11144 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11145
11146         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
11147         64 bit platforms.
11148
11149 2007-04-27  Neale Ferguson <neale@sinenomine.net>
11150
11151         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
11152
11153 2007-04-27  Wade Berrier  <wberrier@novell.com>
11154
11155         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
11156         mini.h) to fix build.
11157
11158 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
11161         
11162         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
11163         causes the corlib unit tests to fail.
11164
11165 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11168
11169         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11170
11171         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11172         opcodes to the comparison relations.
11173
11174         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11175         opcodes to their types.
11176         
11177         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11178
11179         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11180         it in cfg->arch.cinfo.
11181
11182         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11183
11184         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11185         cfg->cil_offset_to_bb.
11186
11187 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11190         created becase of initlocals.
11191
11192 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11195         Sergey Tikhonov <tsv@solvo.ru>.
11196
11197 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11198
11199         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11200
11201 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * cpu-s390.md (break): Correct the length of break instruction.
11204
11205 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11206
11207         * mini.c: fix a couple of soft-float issues and comments.
11208
11209 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11210
11211         * trace.c (is_filenamechar): - is also a filename char.
11212
11213 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11214
11215         * mini-s390.c: Correct checking for enum type in return value processing.
11216
11217 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11218
11219         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11220         (version.h): Makefile is in the build directory.
11221
11222 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11223
11224         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11225
11226 2007-04-11  Martin Baulig  <martin@ximian.com>
11227
11228         * mini.c (can_access_member): Fix handling of generic classes;
11229         fixes #81259.
11230
11231 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11234
11235 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11238
11239 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11240
11241         * mini-codegen.c: make sure the right spill amount is
11242         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11243
11244 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11245
11246         * mini-ppc.c: fixes for the fp_branch_nan test.
11247
11248 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11249
11250         * basic.cs: Comment out new test which still fails on ia64.
11251
11252 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11253
11254         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11255
11256 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11257
11258         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11259
11260 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11261
11262         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11263         on 64 bit machines. Fixes part of #80738.
11264
11265         * basic.cs: Add regression test.
11266
11267 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * inssel.brg basic.cs: Revert previous change to fix build.
11270
11271         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11272         platforms.
11273         
11274         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11275
11276         * basic.cs: Add new regression test.
11277
11278 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11279
11280         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11281         many arguments.
11282
11283 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11284
11285         * cpu-s390x.md: Correct length of break instruction.
11286
11287 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11288
11289         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11290         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11291
11292 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11293
11294         * *.c: Begin WIN64 port.
11295         * mini.c:  Use correct register in profiler.
11296         * mini-amd64.c: No inline assembly on Win64.
11297         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11298         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11299         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11300         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11301         mono_arch_ip_from_context for Win64.
11302         
11303         Contributed under MIT/X11 license.
11304
11305 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11306
11307         * exceptions-amd64.c (seh_handler): Ditto.
11308
11309         * exceptions-x86.c (seh_handler): Fix a memory leak.
11310
11311 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11312
11313         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11314         mini-s390x.c: fixed peephole optimizations to deal
11315         correctly with 1 and 2 byte reload avoidance.
11316
11317 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11318
11319         * cpu-s390.md, cpu-s390x.md: update localloc length.
11320
11321 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11322
11323         * cpu-g4.md: added missing descriptions.
11324
11325 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11326
11327         *  Makefile.am: Add support so the tail tests are not executed on
11328         PowerPC as that is a known limitation of the PowerPC port.
11329
11330 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11331
11332         * runmdesc.bat:  Move to msvc directory.
11333         
11334 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11335
11336         * runmdesc.bat:  Run executable that was produced by the current
11337         target and sent via an argument.
11338         
11339 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11342         #81102.
11343
11344         * generics.2.cs: Add regression test.
11345
11346 2007-03-09  Wade berrier  <wberrier@novell.com>
11347
11348         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11349
11350 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11353         AOT code depends on this.
11354
11355 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11356
11357         * mini.c: more precise tracking of types in the eval stack
11358         (part of fix for bug #81044).
11359
11360 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11361
11362         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11363
11364         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11365
11366 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11369
11370         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11371
11372 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11373
11374         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11375         a pointer on 64 bit systems. Fixes #80190.
11376
11377         * iltests.il: Add new regression test.
11378
11379 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11380
11381         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11382
11383 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11384
11385         * trace.c: Remove an erroneous alignemnt check when tracing.
11386           Fixes --trace on OSX86.
11387
11388 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11389
11390         * mini-$(arch).h: initialize SP in context for all the archs.
11391
11392 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11393
11394         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11395         regressions in the thread tests.
11396
11397 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11398
11399         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11400         - fixed implementation of LOCALLOC opcode
11401         - implemented non-un compare for floats
11402         - code cleanup
11403         - implementation of FDIV and CKFINITE opcodes
11404         - fixes for latest mono updates
11405         - additional arch opcodes
11406
11407 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11408
11409         * Makefile.am: simplify and merge rules for cross-compilation.
11410
11411 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11412
11413         * local-propagation.c: Actually *apply* the fix for bug 80591...
11414
11415 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11416
11417         * mini-exceptions.c: backuot part of the last change
11418         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11419
11420 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11421         * inssel.brg: Fix bug 59286.
11422
11423
11424 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11425
11426         * mini-exceptions.c: patch from Zoltan to correctly check for
11427         stack boundaries (using the stack register, not the frame register),
11428         fixes bugs #80724, #79717.
11429
11430 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11433         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11434
11435         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11436         presence of frame pointer elimination.
11437
11438 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11439         
11440         * mini-x86.h: NetBSD UCONTEX_REG defines.
11441
11442 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * inssel-amd64.brg: Fix amd64 build.
11445
11446 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11447
11448         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11449         on amd64.
11450
11451 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11452
11453         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11454         ends.
11455
11456         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11457
11458 2007-01-30 Mark Mason <mason@broadcom.com>
11459
11460            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11461            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11462            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11463            beginning support for CEE_JMP [not quite working yet]
11464            * tramp-mips.c: LMF handling now works
11465         
11466 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11469
11470         * mini.h (NULLIFY_INS): New macro.
11471
11472 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11473
11474         * mini.c: statistical profiler fix for windows, patch
11475         from Tor Lillqvist (tml@novell.com).
11476
11477 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11478         * local-propagation.c: Fix bug 80591.
11479
11480 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11481
11482         * Makefile.am: put back the --export-dynamic option as with
11483         the previous gmodule flags (thanks to Robert Jordan).
11484
11485 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11488
11489         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11490         simplify and speed up the local register allocator. Also rename some fields
11491         like iassign->vassign.
11492         
11493         * regalloc.c: Remove some functions which are no longer used since their
11494         inlined version is in mini-codegen.c.
11495         
11496         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11497
11498         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11499
11500 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11503         narrowing. Fixes #80622.
11504
11505         * iltests.il: Add new regresssion test. 
11506
11507 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11508
11509         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11510         debug-debugger.c, debug-debugger.h: warning fixes.
11511         * driver.c: updated copyright year and made it fit in one line.
11512
11513 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11514
11515         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11516
11517 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11518
11519         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11520
11521         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11522
11523         * iltests.il: Add new test for bug #80507.
11524
11525 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11526
11527         * mini-arm.h: use soft-float also on vfp for now.
11528
11529 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11530
11531         * mini.c: fix some more soft-float issues.
11532
11533 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11534
11535         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11536
11537 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11538         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11539         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11540         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11541
11542 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11543
11544         * mini-arm.c: typo fix.
11545
11546 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11547
11548         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11549
11550 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11553         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11554
11555         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11556
11557         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11558
11559         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11560         
11561         * inssel.brg: Fix a warning.
11562
11563         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11564
11565         * abcremoval.c ssa.c ssapre.c: Update after this change.
11566         
11567         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11568
11569         * dominators.c (df_set): Use mono_bitset_union_fast.    
11570
11571 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11572
11573         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11574         mini-codegen.c: reduce relocations and memory usage for the cpu
11575         description.
11576
11577 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11580
11581         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11582         to reduce their size.
11583
11584 2007-01-19 Mark Mason <mason@broadcom.com>
11585
11586         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11587         * mini-mips.c: more configuration macros, support long conditional branches, additional
11588         asserts, fix epilog instrumentation.
11589         * mini-mips.h: use standard stack walk
11590         * cpu-mips.md: increase size of div, rem and conditional branches
11591         
11592 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11593
11594         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11595         to cpu spec data.
11596
11597 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11598
11599         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11600         (compile_method): Ditto.
11601
11602         * aot-runtime.c (decode_klass_info): Ditto.
11603
11604         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11605         needed by the code generated by inssel.brg. Also fix a warning.
11606
11607 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11608
11609         * mini.c: deal with enums that become genericinsts by
11610         being nested in a generic class (bug #79956).
11611
11612 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11613
11614         * mini.c: match the generic definition to check for
11615         private access with generic types (bug #78431).
11616
11617 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11618
11619         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11620         to make life easier for people cross-compiling that insist on not
11621         using scratchbox.
11622
11623 2007-01-17 Mark Mason <mason@broadcom.com>
11624
11625         * inssel-long.brg: patch to deal with mips missing flags
11626         * inssel-long32-mips.brg: implement overflow checks
11627         * insset-mips.brg: implement overflow checks
11628         * mini-mips.h: implement conditional exception handling
11629         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11630           Remove unused code, minor cleanups.
11631         * exceptions-mips.c: minor cleanups
11632         * mini-ops.h: add mips conditional exception ops
11633         * cpu-mips.md: add mips conditional exception ops
11634
11635         
11636 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11637
11638         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11639         to deal with mips missing of flags.
11640
11641 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11642
11643         * exceptions-ppc.c: execute fault handlers.
11644
11645 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11646
11647         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11648
11649 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11650
11651         * mini.c: handle also floating point values in initialize_array.
11652
11653 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11654
11655         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11656         array initialization and make it conditional on the intrins option.
11657
11658 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11659
11660         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11661         relocations and put the patch info names close to the enum definition.
11662
11663 2007-01-15 Mark Mason <mason@broadcom.com>
11664
11665         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11666
11667 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11668
11669         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11670
11671 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11672
11673         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11674
11675 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11676
11677         * Makefile.am: distribute the mips sources.
11678
11679 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11680
11681         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11682         directly.
11683
11684 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11685
11686         * cpu-x86.md: back out for now as this triggers other regressions.
11687
11688 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11689
11690         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11691         to eax:edx, so ecx can't get allocated to them (bug #80489).
11692
11693 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11694
11695         * mini.c, mini-exceptions.c: enabled running fault handlers
11696         (bug #80469).
11697
11698 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11699
11700         * driver.c: If nothing fail, do not use the string "failed",
11701         because it makes it very annoying to view test result logs on the
11702         web. 
11703
11704 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11705
11706         * debug-debugger.c (mono_debugger_main): Rename "main" to
11707         "main_method" to prevent a warning.
11708
11709         Remove a warning for unused field.
11710
11711 2006-12-28  Martin Baulig  <martin@ximian.com>
11712
11713         * debug-debugger.c
11714         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11715
11716 2006-12-22  Martin Baulig  <martin@ximian.com>
11717
11718         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11719         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11720         seperate `.mdb_debug_info' section, so we can access it from the
11721         debugger even if the binary is stripped.
11722
11723         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11724         from the `.mdb_debug_info' here to prevent the linker from
11725         removing that section.
11726
11727         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11728         mdb-debug-info64.s.
11729
11730 2006-12-19  Robert Jordan  <robertj@gmx.net>
11731
11732         * mini-x86: enable the code to return small structures in
11733         registers for FreeBSD as well. Fixes bug #80278.
11734         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11735
11736 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11737
11738         * mini-x86.c: align the stack when calling the profiler
11739         function instrumenting the prolog (on OSX).
11740
11741 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11742
11743         * mini.c: emit a break opcode where Debugger.Break () is called.
11744
11745 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11746
11747         * mini.c (mono_method_to_ir): Provide useful information on this
11748         assert, to prevent others from debugging like I did.
11749
11750 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11751
11752         * mini.c: enable code which was incorrectly commented
11753         (bug #80235).
11754
11755 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11756
11757         * mini-x86.c: enable on OSX, too, the code to return small
11758         structures in registers.
11759
11760 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11761
11762         * mini-x86.c: remove the use of the dynamic code manager here, too.
11763
11764 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11765
11766         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11767         mono_debugger_create_notification_function() to use
11768         mono_global_codeman_reserve () instead of a dynamic code manager.
11769
11770 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11771
11772         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11773         ves_array_element_address() jit icall and use a generated
11774         managed method instead (which is about 4 times faster for a rank 3
11775         array access).
11776
11777 2006-11-29  Mark Mason  <mason@broadcom.com>
11778
11779         * basic-calls.cs: additional tests for passing
11780         structures as function arguments.
11781
11782 2006-11-29  Mark Mason  <mason@broadcom.com>
11783
11784         * mini-mips.h: disable custom exception handling
11785         * mini-mips.c: throw/rethrow should use jalr to call
11786         exception stubs.  Fixed bug with passing structures
11787         by value. More support for tracing floating point
11788         functions.
11789
11790 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11791
11792         * mini.c: fixed typo in the soft-float ldind.r4 handling
11793         (bug #80086).
11794
11795 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11796
11797         * mini.c, mini.h, driver.c: added --runtime command line
11798         option to select a different runtime than the autodetected one.
11799         * jit.h: added API for embedders to initialize with a specific
11800         runtime version.
11801
11802 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11803
11804         * mini.c: handle also boxing of r4 values (bug #80024).
11805
11806 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11807
11808         * mini-ppc.c: force indirect calls until we reserve
11809         enough address space for all the generated code.
11810
11811 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11812
11813         * exceptions-arm.c: workaround bugs in the libc definition
11814         of struct ucontext.
11815
11816 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11817
11818         * inssel.brg: fixes from me and Mark Mason.
11819
11820 2006-11-23  Dick Porter  <dick@ximian.com>
11821
11822         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11823         semaphore display now we've fixed the initial value
11824
11825 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11826
11827         * inssel.brg: partially revert the last change to fix the build.
11828
11829 2006-11-21  Mark Mason  <mason@broadcom.com>
11830
11831         * inssel.brg: Add and use compare-and-branch macros to support
11832         architectures that do not have condition code registers (ie. MIPS).
11833         * *-mips.{c,brg,md}: Fix copyright statements
11834
11835 2006-11-20  Mark Mason  <mason@broadcom.com>
11836
11837         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11838         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11839         * mini.h: Added declaration for mono_print_ins()
11840         * mini-codegen.c: added ins_spec initializer for MIPS
11841         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11842         vreg to be virtual and hreg to be non-virtual.
11843         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11844         is not yet working/implemented correctly.
11845         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11846         non-static, fixup calls to print_ins() from other parts in the file.
11847
11848 2006-11-20  Mark Mason  <mason@broadcom.com>
11849
11850         * basic-calls.cs: added tests for passing structures as arguments
11851         to calls.
11852
11853 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11854
11855         * inssel-long32.brg: optimize signed division by power of two.
11856
11857 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11858
11859         * mini-arm.c: added support for interworking with thumb code
11860         (mono must be still be built using the ARM instruction encoding).
11861
11862 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11863
11864         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11865         verifier has different rules for it.   Fixes a few verifier issues
11866         in the test suite.
11867
11868         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11869         at the end, so people know what happened.
11870
11871 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11872
11873         * brach-opts.c: in optimize_exception_target() make sure we
11874         are in a catch clause (fixes bug #79871).
11875
11876 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11877
11878         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11879         more soft-float support fixes.
11880
11881 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11882
11883         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11884         that are passed half on the stack and half in registers.
11885
11886 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11887
11888         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11889         more mips integration work from Mark E Mason 
11890         <mark.e.mason@broadcom.com>.
11891
11892 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11893
11894         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11895         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11896         tramp-mips.c: added sources for the mips port, not
11897         integrated in the build yet. Contributed by
11898         Mark E Mason <mark.e.mason@broadcom.com>.
11899
11900 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11901
11902         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11903
11904 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11905
11906         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11907         put the soft-float rules in its own file since it seems to
11908         break s390 compilation.
11909
11910 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11911
11912         * mini-arm.c: fixed wrnings.
11913
11914 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11915
11916         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11917         inssel-arm.brg: ARM support for soft-float.
11918
11919 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11920
11921         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11922         loads and stores of 32 bit fp values.
11923
11924 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11925
11926         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11927
11928         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11929         works. Fixes #79852 and #79463.
11930
11931 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11932
11933         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11934         more soft-float support WIP and fixes.
11935
11936 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11937
11938         * mini-arm.c: some VFP updates.
11939
11940 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11941
11942         * mini-exceptions.c: 0 is a valid local var offset in some
11943         architectures, don't assert (bug #78508).
11944
11945 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11946
11947         * exceptions-arm.c: fixed off by one error in stack walk code.
11948
11949 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11950
11951         * mini.h, mini.c: more precise tracking of type load exceptions.
11952
11953 2006-11-03  Robert Jordan  <robertj@gmx.net>
11954
11955         * Makefile.am: [WIN32] Add monow.exe target.
11956         * driver.c: [WIN32] Don't detach the console when debugging.
11957         Fixes bug #79797.
11958         
11959 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11960
11961         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11962
11963 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11964
11965         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11966
11967         * driver.c (mini_regression): Fix --regression with AOT.
11968
11969         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11970
11971 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11972
11973         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11974
11975         * mini-sparc.h: Don't use sigaction on sparc/linux.
11976
11977         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11978
11979         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11980
11981         * mini-exceptions.c: Add proper include files for getpid ().
11982
11983 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11984
11985         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11986         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11987         method.
11988
11989         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11990         name cache to reduce its size.
11991
11992         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11993
11994 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11997         the mono_lmf TLS variable.
11998
11999         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12000         trampoline lmf frames.  
12001
12002         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12003
12004 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12007         the mono_lmf TLS variable.
12008
12009         * mini-exceptions.c: Access the LMF structure through accessors.
12010
12011         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12012         variable instead of in jit_tls->lmf.
12013
12014         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12015         
12016         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12017         trampoline lmf frames.
12018
12019         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12020
12021 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12022
12023        * mini.c trace.c mini-x86.c: Revert these too.
12024         
12025        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12026        signature change.
12027
12028 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12029
12030         * genmdesc.c: removed now dead code.
12031
12032 2006-10-09  Robert Jordan <robertj@gmx.net>
12033
12034         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12035
12036 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12037
12038         * mini.h: do not leave gaps in the opcode values.
12039
12040 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12041
12042         * jit-icalls.h: flag functions as internal here, too.
12043
12044 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12045
12046         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12047         functions with the internal attribute.
12048
12049 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12050
12051         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12052
12053 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12054
12055         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12056         for soft-float.
12057
12058 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12061         tail calls as on other platforms.
12062
12063         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12064
12065         * iltests.il: Add a few tailcall tests.
12066
12067 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12068
12069         * driver.c: fix loop for old compilers (bug #79521).
12070
12071 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12072
12073         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12074
12075         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12076
12077         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12078         metadata without any code.
12079
12080         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12081         more precise debugging information using gdb.
12082
12083 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * inssel-ia64.brg: Make the helper methods static.
12086
12087 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12088
12089         * inssel-x86.brg: make the helper methods static.
12090
12091 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12092
12093         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12094
12095 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12096
12097         * mini.c: updates for monoburg changes.
12098         * inssel.brg: make a few helper functions static as they should.
12099
12100 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * Makefile.am: Move mini-codegen.c to common_sources.
12103
12104 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12105
12106         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12107         instructions.
12108         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12109         mini-ppc.h: port to use the common local register allocator.
12110
12111 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12112
12113         * mini.h: Remove the comment too then.
12114
12115 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12116
12117         * mini.h: put back backend.data which is to be used shortly and
12118         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12119         pointers on 4 byte boundaries it'd have much bigger issues running
12120         and you can ifdef it out anyway.
12121
12122 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12123
12124         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12125         MonoInst size by 4 bytes on 64 bit machines.
12126
12127 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12128
12129         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12130         replacement with more meaningful field names. Arch maintainers, please
12131         check the assigned names are good enough for your arch.
12132
12133 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12134
12135         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12136         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12137
12138 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12139
12140         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12141         relocations and memory requirements, put the optimization flags
12142         definitions in their own file.
12143
12144 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12145
12146         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
12147
12148         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
12149
12150 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
12151
12152         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
12153
12154 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
12155
12156         * inssel.brg: use the correct function to get the size of an item
12157         in an array, given an element class.
12158         * aot-compiler.c: do not access class->class_size directly.
12159
12160 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12161
12162         * mini.h, debug-mini.c: added a debugging function to print
12163         info about local variables and arguments in a jitted method.
12164
12165 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12168
12169         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12170
12171 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12174         inner and outer loops when passing vtypes.
12175
12176 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12177
12178         * mini-ppc.c: take into account the cpu errata for cache flushing
12179         which caused some random errors (bug #79381).
12180
12181 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12184         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12185
12186 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12187
12188         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12189         loaded.
12190
12191         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12192         freebsd ports tree.
12193
12194         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12195         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12196
12197         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12198         displacement.
12199
12200 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12201
12202         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12203
12204 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12207         macro does not have to be changed during debugging.
12208
12209         * 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>.
12210
12211         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12212
12213         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12214         
12215         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12216         MONO_ARCH_NO_EMULATE_MUL is defined.
12217
12218         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12219
12220         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12221
12222         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12223
12224         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12225         
12226 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12227
12228         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12229         stuff to mini-exceptions.c where it is used.
12230
12231         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12232         setup code, the real one is in mini-exceptions.c.
12233
12234         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12235         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12236         some changes from the freebsd ports tree.
12237
12238         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12239         constants.
12240         
12241         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12242
12243 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12244
12245         * mini.c: on Linux, check for /proc to be mounted
12246         (bug# 79351, novell bug#201204).
12247
12248 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12249
12250         * mini.c: handle cases where pthread_attr_getstack() behaves
12251         incorrectly (bug #78096).
12252
12253 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12254
12255         * mini-arm.c: support larger stack frames (bug #79272).
12256
12257 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12258
12259         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12260
12261         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12262         tokens.
12263
12264         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12265         mono_class_from_name () to find a class from its name.
12266
12267         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12268
12269 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12272
12273 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12274
12275         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12276
12277 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12278
12279         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12280         callinfo->trampoline.
12281
12282         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12283         fixes #79271.
12284         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12285         future.
12286
12287 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12290
12291 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12292
12293         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12294         stats.method_trampolines, it is already done by the generic trampoline code.
12295
12296         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12297         
12298 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12301
12302         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12303
12304         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12305
12306         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12307         
12308         * mini.c (print_jit_stats): Print new stats.
12309
12310         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12311
12312 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12315         Address on two dimensional arrays. Fixes #78729.
12316
12317         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12318
12319         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12320         a method.
12321
12322         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12323
12324         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12325         #79130.
12326         
12327         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12328         a race condition.
12329         (mini_get_ldelema_ins): Ditto.
12330
12331 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12332
12333         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12334         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12335         Fixes #79213.
12336
12337 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12338
12339         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12340         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12341
12342         * exceptions-s390x.c: Cosmetic change.
12343
12344         * tramp-s390.c: Fix warning.
12345
12346         * cpu-s390.md: Correct length of mul_imm.
12347
12348 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12349
12350         * aot-compiler.c: added binary writer with ELF backend
12351         implementation (only on Linux/x86 for now).
12352
12353 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12354
12355         * Makefile.am: Don't run net 2.0 AOT tests.
12356
12357         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12358         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12359
12360         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12361
12362 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12363
12364         * aot-compiler.c: simplified and refactored the asm-writing code
12365         to allow different backends.
12366
12367 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12370
12371         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12372         little. Share patches of type TYPE_FROM_HANDLE as well.
12373
12374         * mini.c (mono_patch_info_equal): New helper function.
12375         (mono_patch_info_hash): Ditto.
12376
12377         * aot-compiler.c (emit_method_code): Fix s390 build.
12378
12379         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12380         is not handled because it is stored as a flag and not as a type ctor. Fixes
12381         #79016.
12382
12383 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * aot-compiler.c: Fix computation of GOT slot statistics.
12386         
12387         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12388         Also remove support for not PIC AOT.
12389
12390         * mini.h: Bump AOT file format version.
12391
12392         * objects.cs: Add a test for #78990.
12393
12394         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12395         (peter.dettman@iinet.net.au). Fixes #79087.
12396
12397         * basic-long.cs: Add a test for the above.
12398
12399 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12402         
12403         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12404         code somewhat.
12405
12406 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12407
12408         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12409         exceptions.
12410
12411 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12412
12413         * mini.c: Don't verify COM proxy invoke calls
12414         
12415
12416 2006-08-10  Dick Porter  <dick@ximian.com>
12417
12418         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12419         which process is holding semaphores locked.
12420
12421 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12422
12423         * mini-ia64.c mini-amd64.c: Fix #79027.
12424
12425         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12426
12427         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12428
12429         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12430         implicit arguments in a vararg call. Fixes #79027.
12431
12432 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12433
12434         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12435         (mono_get_array_new_va_signature): Ditto.
12436
12437 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * aot-runtime.c: Call init_plt lazily.
12440
12441         * inssel-long.brg: Fix unsigned long->int conversion.
12442
12443         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12444
12445         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12446         that most data is now in the .rss/.data section.
12447
12448 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12451
12452         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12453
12454         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12455
12456         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12457
12458         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12459         virtual call. Fixes #79010.
12460
12461         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12462         and use the result as the this argument in the real call.
12463
12464         * generics.2.cs: Add a new test for #79010.
12465         
12466 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini-x86.c: Fix a warning.
12469
12470         * aot-compiler.c: Add a bunch of statistics.
12471
12472         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12473
12474 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12475
12476         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12477
12478 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * 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>.
12481
12482 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12483
12484         * mini.c (mono_method_to_ir): Obtain the original method in the
12485         CIL stream and use this to perform validation.
12486
12487         Fixed: #78816
12488
12489 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12492         (mono_arch_call_opcode): Ditto.
12493
12494         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12495         #78826.
12496
12497         * mini.c (mono_patch_info_dup_mp): New helper function.
12498         
12499         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12500         compilation. Fixes #78827.
12501
12502 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12503
12504         * declsec.c: Use original security informations for
12505           MONO_WRAPPER_MANAGED_TO_MANAGED.
12506
12507 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12508
12509         * mini.c: Allow Com Interop methods/classes and
12510         don't verify COM wrapper calls
12511         
12512
12513 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12514
12515         * inssel-long32.brg: Fix long->i4 checked conversion.
12516
12517         * exceptions.cs: Add a test for the above.
12518
12519 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12522
12523         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12524         leaks.
12525
12526         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12527         #78775.
12528
12529 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * mini.c: Fix solaris/x86 exception handling.
12532
12533         * Makefile.am: Get rid of $(ICU_LIBS).
12534
12535 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12536
12537         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12538         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12539         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12540
12541         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12542
12543         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12544         this function causes a SIGSEGV.
12545
12546 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12547
12548         * mini.c: Remove unused solaris/x86 includes.
12549
12550 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12551
12552         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12553
12554 2006-06-20  Jb Evain  <jbevain@gmail.com>
12555
12556         * cpu-g4.md: fix max length of start_handler instruction.
12557
12558 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12559         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12560
12561 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12562         * ssa.c: Fixed bug 78653 for SSA based deadce.
12563         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12564         MonoInst.flags, used in SSA based deadce.
12565         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12566         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12567
12568 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12569
12570         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12571         it can end up using non executable memory on ppc64 systems
12572         running ppc32 userspace (fix from Johannes Berg).
12573
12574 2006-06-14  Dick Porter  <dick@ximian.com>
12575
12576         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12577         4.1.1
12578
12579 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12580         * mini.c: Made so that inline is locally disabled if it would
12581         trigger a .cctor, because too many apps depend on this behavior
12582         (which seems to be also the one of the MS CLR).
12583
12584 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12587         No idea why this worked before.
12588
12589         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12590         which branch to outer exception clauses since they could skip the
12591         inner finally clauses. Fixes #78633.
12592
12593         * exceptions.cs: Add a test for the above.
12594
12595         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12596         Fixes #78629.
12597
12598         * iltests.il: Add a test for the above.
12599
12600 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12601
12602         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12603         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12604
12605         * iltests.il: Add a test for the above.
12606
12607 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12608
12609         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12610         
12611         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12612         methods as instrinsics.
12613
12614 2006-06-09  Wade Berrier <wberrier@novell.com>
12615
12616         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12617         (simple-cee-ops.h ssapre-mini-ops.h)
12618
12619 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12620
12621         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12622         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12623         instruction).
12624         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12625         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12626
12627 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12628
12629         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12630
12631 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12632
12633         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12634         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12635         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12636         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12637         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12638         of opcodes, so that bug 78549 should not happen again.
12639         * ssapre.c: Updated to use the renamed files.
12640
12641 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12644         in OP_ATOMIC_EXCHANGE_I4.
12645
12646 2006-06-07  Wade Berrier <wberrier@novell.com>
12647
12648         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12649         in mono_debugger_create_notification_function)
12650
12651 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12654         
12655         * mini.c (type_from_stack_type): Disable some changes which do not
12656         seem to work.
12657
12658         * driver.c: Reenable opts.
12659
12660         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12661         of the evaluation stack.
12662         
12663         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12664         evaluation stack trace at entry to the bblock.
12665
12666         * mini.c (merge_stacks): New function to perform verification of stack merges.
12667         Turned off by default.
12668
12669         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12670         STACK_MP.
12671         
12672 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12673
12674         * local-propagation.c: Fixed bug 78549.
12675
12676 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12677
12678         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12679
12680 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12681
12682         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12683         tramp-arm.c, tramp-ia64.c
12684         (mono_debugger_create_notification_function): Update signature to
12685         new signature and use new protocol for creating the notification
12686         function.  
12687
12688         Should fix the build.
12689
12690 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12691
12692         * exceptions-ppc.c (mono_jit_walk_stack)
12693         (ves_icall_get_frame_info): Fix the build
12694
12695 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12696
12697         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12698
12699 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12700
12701         * il2tests.2.il: New file for generics CIL tests.  Add test for
12702         #78019.
12703         * Makefile.am: Update.
12704
12705         Fix #78019
12706         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12707         to nullable types.
12708
12709 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12710
12711         * aliasing.c: Fixed bug 78311.
12712
12713 2006-05-29  Martin Baulig  <martin@ximian.com>
12714
12715         * mini-exceptions.c (mono_find_jit_info): When computing the
12716         native offset, check whether we're actually inside the method's
12717         code; call mono_debug_print_stack_frame() to format the frame.
12718         (ves_icall_System_Exception_get_trace): Call
12719         mono_debug_print_stack_frame() to format the stack frame.
12720         (ves_icall_get_trace): Update to the new debugging API.
12721         (mono_jit_walk_stack_from_ctx): Likewise.
12722         (ves_icall_get_frame_info): Likewise.
12723
12724         * mini.c (get_method_from_ip): Use the new debugging API.
12725         (mono_print_method_from_ip): Likewise.
12726
12727         * exceptions-ppc.c
12728         (mono_jit_walk_stack): Use the new debugging API.
12729         (ves_icall_get_frame_info): Likewise.   
12730
12731 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12734
12735 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12736
12737         * mini.c: Added "limitator" to inline for debugging.
12738
12739 2006-05-24  Martin Baulig  <martin@ximian.com>
12740
12741         * debug-debugger.c (mono_debugger_init): Create a private,
12742         malloc()-based code manager for the notification function and
12743         intentionally leak it on exit.  This fixes the crash-on-exit race
12744         condition.
12745
12746         * tramp-amd64.c
12747         (mono_debugger_create_notification_function): Added
12748         `MonoCodeManager *' argument.
12749
12750         * tramp-x86.c
12751         (mono_debugger_create_notification_function): Added
12752         `MonoCodeManager *' argument.
12753
12754 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12755
12756         * aliasing.c: Fixed 64 bit issue.
12757         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12758         default since all known bugs are fixed (one more time!).
12759
12760 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12761
12762         * mini.c: write barrier support.
12763
12764 2006-05-23  Martin Baulig  <martin@ximian.com>
12765
12766         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12767         check at the top of the file.
12768
12769 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12770
12771         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12772         reverting changes without reason and without changelog entries.
12773
12774 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12775
12776         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12777         to a few opcodes. Fixes #78439.
12778
12779         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12780         consistency with other archs.
12781
12782         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12783
12784 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12785
12786         * debug-debugger.c: fix the build.
12787
12788 2006-05-17  Martin Baulig  <martin@ximian.com>
12789
12790         * debug-debugger.c
12791         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12792         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12793         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12794         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12795
12796 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12799
12800 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12803         MONO_TYPE_GENERICINST.
12804         
12805         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12806         MONO_TYPE_GENERICINST.
12807
12808 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12811         #78325.
12812
12813 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12814
12815         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12816         mempool.
12817         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12818
12819 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12822         mono_trace_cleanup ().
12823
12824         * iltests.il: Fix problem with the newly added test.
12825
12826         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12827         due to register constraints, free up the previous hreg. Fixes #78314.
12828
12829         * iltests.il: Add new test for #78314.  
12830
12831         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12832         Interlocked.Add. Fixes #78312.
12833
12834         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12835         
12836 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12839
12840 2006-05-05  Martin Baulig  <martin@ximian.com>
12841
12842         * debug-mini.c (mono_debug_open_block): New method.
12843
12844         * mini-amd64.c
12845         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12846         the beginning of each basic block.
12847
12848         * mini-x86.c
12849         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12850         the beginning of each basic block.
12851
12852 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12853
12854         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12855         default until I understand why they break the build on amd64.
12856
12857 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini.c (mini_cleanup): Call mono_cleanup ().
12860
12861         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12862         errors.
12863
12864 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12865
12866         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12867         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12868         default since all known bugs are fixed, and I cannot reproduce bug
12869         77944... I'm asking Matt Hargett to test again after this commit.
12870
12871 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12872
12873         * mini-codegen.c: Fixed typo that thrashed inline.
12874
12875 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12876
12877         * dominators.c (compute_dominators): Avoid using a worklist since
12878         it is not correct in some cases. Instead, iterate over all bblocks as
12879         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12880
12881 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12882
12883         * mini.c (mono_jit_compile_method_inner): Use
12884         mono_prepare_exception_from_error that resets the value
12885         internally.
12886
12887 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12888
12889         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12890         
12891 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12892
12893         * aliasing.c: Fixed bug 78210.
12894
12895 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12896
12897         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12898         default until all their problems (or the ones they trigger) are fixed.
12899
12900 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12903         
12904         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12905         as loaded only after resolving patches since that could invoke the same method.
12906
12907         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12908
12909         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12910         functions.
12911
12912         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12913         AOT loader.
12914
12915         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12916         stack.
12917
12918         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12919         made from AOT code through the PLT table.
12920
12921         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12922         holding the plt offset when a call is made to the aot plt trampoline.
12923         
12924 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12927         amd64 AOT support.
12928
12929         * Makefile.am (common_sources): Fix build breakage.
12930
12931         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12932         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12933         intra-assembly calls if possible.
12934         
12935         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12936
12937         * mini-trampolines.c: Handle PLT entries.
12938
12939         * mini.c: Avoid creating a GOT var for calls.
12940
12941         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12942         from mscorlib code.
12943
12944         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12945         from mscorlib code.
12946
12947         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12948         AOT code.       
12949
12950         * mini.h: Bump AOT file format version.
12951         
12952         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12953         covers more cases.
12954
12955 2006-04-25  Martin Baulig  <martin@ximian.com>
12956
12957         * driver.c: Disable copyprop, consprop and inline when running
12958         inside the debugger.
12959
12960 2006-04-25  Martin Baulig  <martin@ximian.com>
12961
12962         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12963         with `get_current_thread' and added `detach'.
12964         (MonoDebuggerMetadataInfo): Added `thread_size',
12965         `thread_tid_offset', `thread_stack_ptr_offset' and
12966         `thread_end_stack_offset'.
12967
12968 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12969
12970         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12971         aot-runtime.c.
12972
12973         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12974         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12975
12976         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12977
12978         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12979
12980         * aot.c: Add support for ADJUSTED_IID.  
12981
12982 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * aot.c (emit_method_order): Don't align method_order_end.
12985
12986         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12987         the interface ID changes.
12988
12989 2006-04-21  Dick Porter  <dick@ximian.com>
12990
12991         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12992         cleaning up a thread.  Fixes the new part of bug 77470.
12993
12994 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12995
12996         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12997         to managed wrapper.
12998                      
12999 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13002         
13003         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13004         SIGSEGV. Fixes #78072.
13005
13006         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13007         unregister our SIGABRT handler.
13008
13009 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13010
13011         * mini.c: Disabled inline where it can alter the call stack in a
13012         way visible from managed code.
13013         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13014         default.
13015
13016 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13019         on other platforms. Fixes #78089.
13020
13021 2006-04-13  Martin Baulig  <martin@ximian.com>
13022
13023         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13024         determine whether we're inside the debugger.
13025
13026         * debug-debugger.h
13027         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13028
13029 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13030
13031         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13032         handler clauses. Fixes #78024.
13033
13034         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13035         in the CALL_MEMBASE opcodes. Fixes #78088.
13036         (mono_arch_get_vcall_slot_addr): Ditto.
13037
13038 2006-04-10  Martin Baulig  <martin@ximian.com>
13039
13040         * debug-debugger.c: The thread handling code has now been moved
13041         into ../metadata/threads.c.
13042
13043 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * driver.c (mono_main): Fix --with-gc=none build.
13046
13047         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13048         (mono_spillvar_offset_float): Ditto.
13049         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13050         hreg, not when its !global, since on ia64, there is a third category: stacked
13051         registers.      
13052
13053 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13054
13055         * mini.c: set MonoInst->klass for load field address and a few other
13056         places.
13057
13058 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13059
13060         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13061
13062 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13065         the branch opt changes.
13066
13067 2006-04-06  Dick Porter  <dick@ximian.com>
13068
13069         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13070         
13071         * wapihandles.c (mini_wapi_seminfo): 
13072         * driver.c (mono_main): Add semaphore info option
13073
13074 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13077         branch optimization changes. Fixes #78009.
13078
13079 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13080
13081         * mini.c: ignore accessibility of methods in managed->native wrappers.
13082
13083 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13086         
13087         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13088
13089 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * mini.c: Modify the branch optimizations to preserve the invariant that
13092         the entries inside the in_bb and out_bb arrays are unique.
13093         (mono_unlink_bblock): Avoid creation of new arrays.
13094
13095 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13098         change (#77992).
13099
13100 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * mini.c (optimize_branches): Remove the "optimizations" in
13103         the cbranch1/cbranch2 -> branch cases which were causing several
13104         problems in the past. Fixes #77986.
13105
13106 2006-03-31  Chris Toshok  <toshok@ximian.com>
13107
13108         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13109         default optimizations :(
13110
13111 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13112
13113         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13114         branch.
13115
13116 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13117
13118         * local-propagation.c: Added comments to structs and removed
13119         "Mono" prefixes from local tree mover types.
13120
13121 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * Makefile.am (arch_sources): Define this for each architecture so 
13124         libmono_la_SOURCES is defined in one place.
13125
13126 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13127
13128         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13129         from handles/.
13130
13131 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13132
13133         * driver.c: print the GC name supplied by configure.
13134
13135 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13136
13137         * local-propagation.c: Added tree mover, and moved here all the
13138         local propagation code from mini.c
13139         * mini.c: Added support for treeprop, and moved all the local
13140         propagation code to local-propagation.c
13141         * mini.h: Added support for treeprop
13142         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13143         treeprop, inline and deadce by default
13144         * Makefile.am: Added local-propagation.c
13145
13146 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
13149
13150 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
13151
13152         * debug-debugger.c: make it compile without the Boehm GC.
13153
13154 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13155
13156         * mini.c: fixed issue with mismatch when an icall is registered
13157         with multiple names but same address.
13158
13159 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13160
13161         * declsec.c, mini-exceptions.c: use write barrier to set reference
13162         fields of managed objects.
13163
13164 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13167         (can_access_internals): Fix a warning.
13168
13169         * mini.c (print_method_from_ip): Rename this to 
13170         mono_print_method_from_ip so it gets exported.
13171
13172         * trace.c: Deal with strings inside StringBuilder's containing garbage
13173         and fix memory leaks. Fixes #77848.
13174
13175 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13178         fixes #77787.
13179
13180 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13181         
13182         * mini-s390.c: Remove OP_X86_TEST_NULL.
13183
13184 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13185
13186         * mini.c: use the correct GetHashCode() for the moving collector.
13187
13188 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13189
13190         * liveness.c: Regalloc spill cost tuning.
13191
13192 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13193         
13194         * mini-s390x.h: Correct S390_LONG macro.
13195
13196         * mini-s390x.c: Cleanup unused code.
13197
13198 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * jit-icalls.h: New file.
13201
13202         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13203         icalls and include that instead of including jit-icalls.c.
13204
13205         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13206         OP_X86 opcodes.
13207
13208 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13209
13210         * mini.c: when checking for member accessibility, also check for
13211         friend assemblies and for explicit interface implementations.
13212
13213 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13214
13215         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13216
13217         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13218
13219         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13220         common cases are done first.    
13221
13222         * mini-ops.h: Only define platform specific opcodes on the given platform.
13223
13224         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13225         branch.
13226         
13227 2006-03-14  Martin Baulig  <martin@ximian.com>
13228
13229         Revert Paolo's change from r57348:
13230
13231         * mini.h: don't use gboolean for bitfields.
13232         * mini.c: verifier changes for fields and methods accessibility.
13233
13234 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13235
13236         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13237
13238         * mini-s390x.c: Fix conv_r_un.
13239
13240         * cpu-s390, cpu-s390x.md: Fix lengths.
13241
13242 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13243
13244         * mini.c: nested types have access to all the nesting
13245         levels, not just the enclosing types.
13246
13247 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13248
13249         * mini.c: added a few more verification checks.
13250
13251 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13252
13253         * liveness.c: Merge optimizations from the linear-il branch.
13254
13255 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13256
13257         * mini-ia64.c (emit_call): Add a comment.
13258
13259         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13260
13261         * tramp-ia64.c: Fix some warnings.
13262
13263 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini.h: don't use gboolean for bitfields.
13266         * mini.c: verifier changes for fields and methods accessibility.
13267
13268 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13271         lazy icall wrapper changes.
13272
13273         * dominators.c: Replace all the dominator algorithms with faster
13274         ones from the linear-il branch.
13275
13276         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13277         the mempool.
13278
13279         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13280         common cases are done first.
13281
13282         * mini-amd64.c: Fix some warnings.
13283
13284         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13285         from the mempool.
13286
13287         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13288         added code.
13289
13290         * mini.h: Add a missing prototype.
13291
13292 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * mini.c: Compile icall wrappers lazily.
13295
13296         * mini-codegen.c: Use printf instead of g_print since its much faster.
13297
13298         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13299         function.
13300
13301         * mini.c (optimize_branches): Cache the negative result from 
13302         remove_block_if_useless ().
13303
13304         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13305         Also fix some bblock linking issues.
13306
13307         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13308         assembly files.
13309
13310         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13311
13312         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13313         accessed fields first, for better cache behavior.
13314         
13315 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13316
13317         * mini.c: speedup IList<T> array accesses.
13318
13319 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13322         inline_costs counter. Fixes #77190.
13323
13324 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13327         trace messages. Fixes #77706.
13328
13329 2006-03-04  Martin Baulig  <martin@ximian.com>
13330
13331         * tramp-amd64.c, tramp-x86.c
13332         (mono_debugger_create_notification_function): Use
13333         mono_global_codeman_reserve() to allocate a buffer at runtime and
13334         return it.
13335
13336         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13337
13338         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13339         notification function at runtime and then call `initialize' in the
13340         `MONO_DEBUGGER__debugger_info' vtable.
13341
13342 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13343
13344         * iltests.il: Fix a visibility problem.
13345
13346 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13347
13348         * driver.c, mini.c: add hooks for the counters API.
13349
13350 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13351
13352         * driver.c: show disabled options.
13353
13354 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13355
13356         * linear-scan.c: always use cost-driven selection.
13357
13358 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13359
13360         * jit-icalls.c (helper_compile_generic_method): Revert change from
13361         2006-02-24.
13362
13363 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13364
13365         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13366
13367 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13368
13369         * inssel.brg: style fixes, mostly to force the updated monoburg
13370         to run for people using svn.
13371
13372 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13373
13374         * mini.c: match monoburg changes.
13375
13376 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13377
13378         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13379         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13380         declaration in the header file.
13381
13382 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13383
13384         * helpers.c: reduce relocations and mem usage.
13385
13386 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13387
13388         * mini.h, mini-codegen.c: disable logging features if
13389         requested by configure.
13390
13391 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13392
13393         * mini.c: tiny verifier changes.
13394
13395 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13396
13397         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13398         cpu-pentium.md: stack alignment changes for osx/x86,
13399         partially from Geoff Norton <gnorton@customerdna.com>.
13400
13401 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13402
13403         * jit-icalls.c (helper_compile_generic_method): Update to changes
13404         in metadata/class.c.
13405
13406 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13407         
13408         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13409         
13410         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13411         interface calls with large offsets.
13412
13413 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13414
13415         * jit-icalls.c (helper_compile_generic_method): Document the
13416         special-case we depend on so that we can inflate the method twice
13417         with the same context with no bad side-effects.
13418
13419 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13420
13421         * mini-x86.c, mini-amd64.c: fix for case when xen support
13422         is disabled.
13423
13424 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13425
13426         * mini-x86.c, mini-amd64.c: generate code to access tls items
13427         in a faster way for Xen systems.
13428
13429 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13430
13431         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13432         updates and compilation fixes for the OSX/x86 port, mostly from
13433         Geoff Norton <gnorton@customerdna.com>.
13434
13435 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13436
13437         * inssel.brg: faster interface call implementation
13438         to sync with the interface_offsets MonoVTable changes.
13439
13440 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13441
13442         * mini.c: more verification checks.
13443
13444 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13445
13446         * mini.c: added a few more verification checks.
13447
13448 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13449
13450         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13451         facility on the processor and use it if available.
13452
13453 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13454
13455         * driver.c, aot.c, mini.c: throw exception if the IL code is
13456         invalid or unverifiable.
13457
13458 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13459
13460         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13461         m.StructField.
13462
13463 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13466
13467 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13468
13469         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13470         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13471         handling of instantiated generic valuetypes.
13472
13473 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13476         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13477         instead.
13478
13479         * generics.2.cs: Revert the nullable reftypes tests.
13480
13481 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13482
13483         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13484         using __builtin_frame_address (1) as it doesn't work in the presence
13485         of optimizations. Hopefully fixes #77273.
13486
13487         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13488         -> generics.cs change as it doesn't work with some automake versions.
13489
13490 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13491
13492         * mini.c: handle systems that sue a different way to
13493         retrieve the stack address of the current thread.
13494
13495 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13496
13497         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13498         it specially in the makefile.
13499
13500         * generics.2.cs: Add tests for nullable reference types.
13501
13502 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13503
13504         * mini.c: always handle the case when mono_jit_init()
13505         is called in a thread different from the main thread,
13506         confusing libgc (bug #77309).
13507
13508 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13509
13510         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13511
13512 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13513
13514         * mini.c: change optimize_branches () to use a single loop
13515         and introduce a new optimization to simplify some range checks.
13516
13517 2006-02-03  Martin Baulig  <martin@ximian.com>
13518
13519         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13520         and merged with debugger_thread_manager_add_thread().
13521         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13522         inform the debugger about the main thread.
13523
13524 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13525
13526         * basic.cs: Add test for div.un/rem.un constant folding.
13527
13528 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13529
13530         * cpu-s390x.md: correct int_xor_imm length
13531
13532 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13533
13534         * generics.2.cs: New test for #77442.
13535
13536         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13537         #77442.
13538
13539 2006-02-02  Martin Baulig  <martin@ximian.com>
13540
13541         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13542         <mono/metadata/mono-debug-debugger.h>   
13543
13544         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13545
13546 2006-02-02  Martin Baulig  <martin@ximian.com>
13547
13548         * debug-debugger.h: New header file for debug-debugger.c.
13549
13550         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13551         function is a separate thread anymore; add support for attaching.
13552
13553 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * tramp-x86.c: Fix a warning.
13556
13557 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13560         on very large methods.
13561
13562         * aot.c (load_patch_info): Fix a warning.
13563
13564 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13565
13566         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13567         mini-ops.h: alu membase optimizations.
13568
13569 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13570
13571         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13572         to speedup StringBuilder.
13573
13574 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * dominators.c (mono_compute_natural_loops): Fix detection of
13577         loop body start blocks.
13578
13579         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13580
13581 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13582
13583         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13584         #75145.
13585
13586 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13587
13588         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13589
13590 2006-01-25  Martin Baulig  <martin@ximian.com>
13591
13592         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13593         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13594         started to cleanup this file a little bit.
13595
13596 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13597
13598         * mini.c: optimize a codepath frequently happening in generics code.
13599
13600 2006-01-23  Martin Baulig  <martin@ximian.com>
13601
13602         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13603
13604         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13605         functions directly.
13606
13607         * driver.c: debug-debugger.c is only available if
13608         `MONO_DEBUGGER_SUPPORTED' is defined.   
13609
13610 2006-01-23  Martin Baulig  <martin@ximian.com>
13611
13612         * debug-debugger.c: Only enable this on platforms where the Mono
13613         Debugger is working (x86 and x86_64).
13614
13615 2006-01-21  Martin Baulig  <martin@ximian.com>
13616
13617         The Mono Debugger is now using the normal `mono' instead of the
13618         `mono-debugger-mini-wrapper' when executing managed code.
13619
13620         * debug-debugger.c: New file; previously known as
13621         debugger/wrapper/wrapper.c.
13622
13623         * debug-mini.c (mono_init_debugger): Removed.
13624
13625         * driver.c (mono_main): Added new `--inside-mdb' command line
13626         argument which is used when running inside the debugger.
13627
13628 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * liveness.c (mono_analyze_liveness): Remove some unused data
13631         structures.
13632
13633 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13634
13635         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13636
13637 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13640         depends on implementation details of monobitset.
13641
13642         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13643         Fixes #77271.
13644
13645 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13646
13647         * liveness.c: Update after monobitset changes.
13648
13649 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13652
13653 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13654
13655         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13656
13657         * mini-s390x.c: Remove warning messages.
13658
13659 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13660
13661         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13662
13663 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13664
13665         * generics.2.cs: Add ldelem/stelem_any test.
13666
13667 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13668
13669         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13670
13671 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13674         
13675 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * generics.2.cs: Reenable vtype tests.
13678
13679         * inssel-x86.brg: Remove an icorrect valuetype rule.
13680
13681 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13682
13683         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13684         initial support for OP_ABS.
13685
13686 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13687
13688         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13689
13690 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13691
13692         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13693         conversion and implement LADD/LSUB.
13694
13695         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13696         architectures.
13697
13698 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13699
13700         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13701
13702         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13703         architectures.
13704
13705 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13706
13707         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13708         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13709         (stack walk problem).
13710
13711 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * aot.c (mono_aot_load_method): Fix a warning.
13714
13715 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13716
13717         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13718
13719 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13720
13721         * iltests.il: Add test for #77148.
13722
13723         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13724         #77148.
13725
13726 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13727
13728         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13729
13730 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13731
13732         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13733         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13734
13735         * basic-long.cs: Add lconv-to-r4/r8 tests.
13736
13737 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13740
13741         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13742         here as on other archs.
13743
13744 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13745
13746         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13747
13748 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13749
13750         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13751         
13752         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13753
13754         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13755         instrument_prolog; Add memory_barrier instruction.
13756
13757 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13760
13761 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13764
13765         * aliasing.c inssel.brg: Fix warnings.
13766
13767         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13768         could skip initialization of some parts of memory.
13769
13770         * mini.c mini-ia64.c: Fix warnings.
13771
13772         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13773
13774 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13775
13776         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13777         a crash seen on sparc.
13778
13779         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13780         
13781         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13782
13783 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13784
13785         * mini-ops.h: Add s390_backchain instruction
13786
13787         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13788
13789         * cpu-s390.md: Add s390_backchain instruction
13790
13791         * mini-s390.c: Significant ABI changes
13792
13793         * mini-s390.h: Cater for zero length structures
13794
13795 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13796
13797         * mini-s390.c: ABI fixes
13798
13799         * inssel-s390.brg: Remove debug statements
13800
13801         * cpu-s390.md: Fix length of ATOMIC_xx operations
13802
13803 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * basic-float.cs: Add float<->long conversion tests.
13806
13807 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13808
13809         * mini-s390.c: Fix LOCALLOC processing.
13810
13811         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13812
13813 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13814
13815         * iltests.il: Add tests for some opcodes not covered by the other
13816         tests.
13817
13818 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13819
13820         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13821         register loading for Tail processing; Correct trace output.
13822
13823         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13824
13825         * cpu-s390.md: Correct size of jmp instruction. 
13826
13827 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13828
13829         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13830
13831 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13832
13833         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13834           Bring s390 up to current level.
13835
13836 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13837
13838         * generics.2.cs: Disable the newly added tests as they do not work yet.
13839         
13840         * generics.2.cs: Add valuetype tests.
13841
13842 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13843
13844         * basic-long.cs: Add i4->u8 test.
13845
13846         * objects.cs: Add tests for JIT intrinsic.
13847
13848         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13849         optimizations lost by a mistake.
13850
13851 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13852
13853         * basic-long.cs: Remove a test moved to objects.cs.
13854
13855         * arrays.cs: Add more array tests.
13856
13857 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13858
13859         * arrays.cs: Add new tests for multi-dimensional arrays.
13860
13861 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13862
13863         * Makefile.am (test_sources2): Add generics.2.cs.
13864         (EXTRA_DIST): Add test_sources2.
13865
13866 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13867
13868         Support for boxing and unboxing nullable types as well as the
13869         isinst operation on nullables, per the CLI ammendment.
13870
13871         * inssel.brg (CEE_ISINST): Special case for nullable
13872
13873         * mini.c (handle_unbox_nullable): new method
13874         (handle_box): Special case for nullable types
13875         (mono_method_to_ir): Call handle_unbox_nullable in correct
13876         places.
13877
13878         * generics.2.cs: New test suite
13879
13880         * Makefile.am: Support for regression tests with generics.
13881
13882 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13885         allocated to registers. Fixes #76800.
13886
13887 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13888
13889         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13890
13891 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13894         of platforms.
13895
13896 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13899         objects.cs.
13900
13901         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13902         
13903         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13904 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13905
13906         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13907         single precision before storing to a single precision location.
13908
13909 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13910
13911         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13912
13913 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13914
13915         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13916         correct files.
13917
13918         * basic.cs: Remove test_0_byte_compares test which was moved to
13919         objects.cs a long time ago.
13920
13921 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13922
13923         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13924
13925 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13926
13927         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13928         handlers are called.
13929
13930         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13931         throwing code.
13932
13933          * mini-ia64.c: Add support for the throw->branch exception 
13934         optimization.   
13935
13936         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13937
13938 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13939
13940         * mini.c: Enabled "fastpath" deadce :-)
13941         
13942 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13943
13944         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13945         alias analysis pass to support it.
13946         * mini.h: Likewise.
13947         * ssa.c: Likewise.
13948         * liveness.c: Likewise (liveness computation can use aliasing
13949         information to be more accurate).
13950         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13951         moreover made so that "--compile-all" uses the given optimization
13952         flags and not the default ones.
13953         * aliasing.c: Alias analysis (new file).
13954         * aliasing.h: Likewise.
13955         * Makefile.am: added "aliasing.c" and "aliasing.h".
13956         
13957 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13958
13959         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13960         OP_L opcodes.
13961
13962 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13963
13964         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13965         fp >= end_of_stack exit condition, as it is not needed, and it might
13966         become true for fp eliminated frames.
13967
13968 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13971         coded offsets.
13972
13973 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13974
13975         * mini-arm.c: fixed alignment of doubles/longs to match
13976         the C ABI (bug #76635).
13977
13978 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13979
13980         * aot.c: fix compilation with --enable-minimal=aot.
13981
13982 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13983
13984         * mini-arm.c: fixed compatibility with the new
13985         floating point emulator package for compares.
13986
13987 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13988
13989         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13990
13991 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13992
13993         * mini-exceptions.c (print_stack_frame): Output to stderr.
13994         (mono_handle_native_sigsegv): Ditto.
13995
13996 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13997
13998         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13999         OP_LCONV_TO_OVF_I implementation.
14000
14001         * mini-amd64.c: Add support for the throw->branch exception 
14002         optimization.
14003
14004         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14005         when the catch clause catches a more general exception, i.e. Object.
14006
14007 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14008
14009         * cpu-ia64.md: Remove unused opcodes.
14010
14011         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14012         specific defines for architectures defining USE_SIGACTION.
14013
14014         * mini-ia64.c: Fix some warnings.
14015
14016         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14017         version seemed to skip a frame.
14018
14019 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14020
14021         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14022         only calls which are made to native code use this flag.
14023
14024 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14025
14026         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14027         varargs methods as well.
14028         
14029         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14030         which have save_lmf set. Reorganize methods prologs a bit.
14031
14032         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14033         debugger to the proper place.
14034
14035 2005-10-29  Martin Baulig  <martin@ximian.com>
14036
14037         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14038         when running inside the debugger until the debugger has support
14039         for it.
14040
14041 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * mini.h: Fix a warning.
14044
14045 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14046
14047         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14048         we expose publicly, this returns the string.
14049
14050 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14051
14052         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14053         with fp elimination.
14054
14055 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14058         native stacktrace using the glibc 'backtrace' function if available.
14059
14060 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14061
14062         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14063
14064         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14065         handle SIGSEGVs received while in native code.
14066
14067         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14068         code, call mono_handle_native_sigsegv which will abort the runtime
14069         after printing some diagnostics, instead of converting it into a
14070         confusing NullReferenceException.
14071
14072 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * cpu-pentium.md: Remove unused opcodes.
14075
14076 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14077
14078         * mini-amd64.h (MonoLMF): Add rsp field.
14079
14080         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14081         the lmf too.
14082
14083 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini-codegen.c (get_register_spilling): Fix some warnings.
14086
14087 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14088
14089         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14090         elimination during exception handling. Enable fp elimination by
14091         default.
14092
14093         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14094         elimination.
14095
14096 2005-10-16  Martin Baulig  <martin@ximian.com>
14097
14098         * mini-exceptions.c
14099         (mono_debugger_run_finally): New public method for the debugger.
14100
14101 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * debug-mini.c (mono_debug_init_method): Fix warning.
14104
14105         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14106         the 'exname' parameter const to fix some warnings.
14107
14108 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14111         introduced by the previous patch.
14112
14113 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14114
14115         * basic-float.cs: Add test for precision of float arithmetic.
14116
14117         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14118         when loading/storing single values from/to memory.
14119
14120         * mini.c (mono_jit_compile_method_with_opt): Create the function
14121         pointers in the correct domain.
14122
14123 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14124
14125         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14126         introduced by previous patch.
14127         
14128         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14129         when out_filter_idx is NULL.
14130
14131         * mini-exceptions.c: Don't run filter clauses twice during exception
14132         handling. Fixes #75755.
14133
14134 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14135
14136         * aot.c: Add support for ldflda wrappers.
14137
14138         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14139         #75902.
14140
14141 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14142
14143         * mini.c, mini.h: do not consider exception handlers blocks when
14144         setting up interface variables.
14145
14146 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
14147
14148         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
14149
14150 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
14151
14152         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
14153         causes a regression.
14154
14155         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
14156
14157 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
14158
14159         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
14160         of the OP_P definitions.
14161
14162         * TODO: Add a proposal for dealing with the CEE/OP mess.
14163
14164         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
14165         optimizations from the x86 port.
14166
14167         * cpu-amd64.md: Ditto.
14168
14169         * basic.cs basic-long.cs: Add tests.
14170
14171 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14172
14173         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14174         Patrik Torstensson's implementation of my exception-handling
14175         optimization idea, when the exception object is not used
14176         (bug #62150).
14177
14178 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14179
14180         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14181         of the mul_imm optimizations from the old jit.
14182
14183 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14184
14185         * mini.c, liveness.c: patch by Patrik Torstensson and
14186         Zoltan Varga to improve performance in methods with
14187         exception clauses.
14188
14189 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14190
14191         * driver.c: Remove 'Globalization' entry from --version.
14192
14193 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14194
14195         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14196         there is a profiler interested in JIT events.
14197
14198         * aot.c: Load profile files produced by the AOT profiling module, and
14199         reorder methods based on the profiling info. Add a 'method_order' table
14200         to the AOT file to make mono_aot_find_jit_info work with the reordered
14201         methods.
14202
14203         * mini.h: Bump AOT file version info.
14204
14205 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14206
14207         * mini-arm.h: work around what looks like a gcc bug when optimizations
14208         are enabled.
14209
14210 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14211
14212         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14213         conditionals.  Use ...
14214         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14215
14216 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14217
14218         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14219         to determine the amount of memory to copy when passing valuetypes.
14220
14221         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14222         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14223
14224 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14225
14226         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14227         information about aot.
14228
14229 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14230
14231         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14232         macros. This will allow a deadlock debugger to easily be plugged
14233         in.
14234
14235 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14236
14237         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14238
14239 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14240
14241         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14242         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14243         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14244         ($(arch_built)) [CROSS_COMPILING]: Error out.
14245
14246 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14247
14248         * aot.c: Add support for the no_special_static flag for classes.
14249
14250 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14251
14252         * Reapply reverted patches.
14253
14254         * *: Revert r50174 as well.
14255
14256         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14257
14258 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14261
14262 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14263
14264         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14265         part of the SIG_HANDLER_SIGNATURE.  
14266
14267 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14268
14269         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14270         statistics.
14271
14272         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14273         introduced by previous patch.
14274
14275 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14276
14277         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14278         saved registers too.
14279
14280         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14281         upon the information returned by get_call_info ().
14282         
14283         * mini-x86.c (add_float): Fix stack size calculation.
14284         (mono_arch_call_opcode): Rewrite this so it works based up the
14285         information returned by get_call_info ().
14286         (mono_arch_get_this_vret_args): Ditto.
14287
14288 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14289
14290         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14291         in cinfo to determine the registers which need to be used.
14292
14293 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14294
14295         * driver.c (mono_main): Add --server and --desktop flags. 
14296
14297 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14298
14299         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14300         registers as global registers.
14301
14302         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14303         longer needed with the new register allocator.
14304
14305         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14306
14307         * cpu-ia64.md: Remove unused opcodes.
14308         
14309         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14310         
14311 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14312
14313         * cpu-amd64.md: Remove unused opcodes.
14314
14315         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14316         needed with the new register allocator.
14317
14318         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14319         reg-reg moves.
14320
14321 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14322
14323         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14324
14325 2005-09-16  Martin Baulig  <martin@ximian.com>
14326
14327         * exceptions-amd64.c
14328         (throw_exception): Don't call mono_debugger_throw_exception() if
14329         we're a rethrow - see the FIXME in the code.
14330
14331 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14332
14333         * mini.c (mono_init_exceptions): This only works on some architectures.
14334         
14335 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14338         on ia64.
14339
14340         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14341
14342         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14343         now in mini-exceptions.c.
14344
14345 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14346
14347         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14348         now in mini-exceptions.c.
14349
14350 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14351
14352         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14353         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14354
14355         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14356         code into mini-exceptions.c. Add some assertions to it.
14357
14358 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14359
14360         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14361         (<software@solmersa.com>). Fix as errors on windows.
14362
14363 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14364
14365         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14366         method info into the LMF.
14367
14368 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14369         
14370         * mini-ia64.c: Add proper unwind info for method epilogs.
14371
14372         * exceptions-ia64.c: Add some code to help debugging.
14373         
14374         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14375
14376         * mini-exceptions.c: Fix warning.
14377
14378 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14379
14380         * mini.c: Really fix build.
14381
14382         * mini-x86.c mini-amd64.c: Fix build.
14383
14384 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14385
14386         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14387
14388         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14389         some Interlocked methods as intrinsics.
14390
14391         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14392         for Thread methods as well.
14393
14394         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14395
14396         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14397
14398         * mini-ia64.c mini-x86.c mini-amd64.c 
14399         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14400         OP_MEMORY_BARRIER.
14401         
14402         * mini.c (mono_init_exceptions): Fix build breakage.
14403
14404 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14405
14406         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14407         of instructions. Use the new ia64_unw_op macros for emitting unwind
14408         info.
14409
14410         * mini.c (mono_init_exceptions): Initialize exception handling
14411         related trampolines at startup.
14412
14413 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14414
14415         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14416
14417 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14418
14419         * mini.c: Handle type loading errors gracefully during compilation and
14420         throw the appropriate exception.
14421
14422 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14423
14424         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14425         for the mono binary.
14426
14427 2005-09-09  Martin Baulig  <martin@ximian.com>
14428
14429         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14430         the release.
14431
14432 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14433
14434         * mini-arm.h: use emulation for conv.r.un for the release.
14435
14436 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14437
14438         * mini-arm.c, objects.cs: more fixes and tests for them.
14439
14440 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14441
14442         * mini-arm.c: align structures to at least 4 bytes to be able
14443         to keep our current optimized memcpy.
14444
14445 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14446
14447         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14448
14449 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14450
14451         * mini.c: ignore SIGPIPE.
14452
14453 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14456
14457         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14458
14459 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14460
14461         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14462
14463 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14464
14465         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14466         exception handling support.
14467         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14468         patch by Brian Koropoff <briank@marakicorp.com>).
14469
14470 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14471
14472         * mini.c: revert another 'optimization' which breaks when
14473         items on the eval stack need to be saved at a basic block end
14474         (bug #75940).
14475
14476 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14477
14478         * jit-icalls.c: for arrays, ensure we always provide
14479         lower bounds.
14480
14481 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14484         
14485         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14486
14487 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14488
14489         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14490         arguments in their original register.
14491
14492 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14493
14494         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14495         memset/memcpy.
14496
14497         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14498         when ssapre is enabled.
14499
14500         * inssel-long.brg: Fix bug in previous patch.
14501
14502         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14503         multiplication by a constant.
14504
14505 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14506
14507         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14508         icc.
14509
14510         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14511         saving registers.
14512
14513 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14514
14515         * inssel-arm.brg: apply changes tested by Brian Koropoff
14516         <briank@marakicorp.com>.
14517
14518 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14519
14520         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14521         
14522 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14523
14524         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14525         to the same register if dreg is just a base register.
14526         (print_ins): Improve printing of membase opcodes.
14527
14528         * inssel-x86.brg: Add optimized ldind(reg) rules.
14529
14530         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14531
14532 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14533
14534         * mini.c: when running under valgrind, set the stack bottom for
14535         the GC at the actual approximate stack for the app (fixes running
14536         mono with valgrind).
14537
14538 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini.c: do no break at the first valuetype to init found
14541         (fixes bug #75791).
14542
14543 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14544
14545         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14546
14547 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14548
14549         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14550
14551 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14552
14553         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14554
14555 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14556
14557         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14558
14559         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14560         code.
14561
14562         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14563         code.
14564
14565         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14566         methods.
14567
14568 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14569
14570         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14571
14572 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14573
14574         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14575         in the tail recursion optimization.
14576
14577         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14578         debug info into the assembly file.
14579
14580         * iltests.il: Add test for filter regions.
14581
14582         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14583         initial stack of filter regions. Fixes #75755.
14584
14585 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14586
14587         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14588         stack requirements.
14589
14590 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14591
14592         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14593         the check for an already compiled method on non-ia64 platforms.
14594         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14595         proper domain.
14596
14597         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14598
14599         * inssel-x86.brg: Add some optimized call rules.
14600
14601 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14602
14603         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14604         method here.
14605
14606         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14607         mono_arch_patch_delegate_trampoline.
14608
14609         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14610
14611         * mini-trampolines.c: Fix build.
14612
14613         * mini-amd64.h: Add delegate trampolines.
14614
14615         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14616
14617         * inssel-amd64.brg: Add optimized call rules.
14618         
14619         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14620
14621         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14622
14623 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14624
14625         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14626         change.
14627
14628         * mini-ia64.c: Remove LMF fixmes.
14629
14630         * mini-ia64.h: Remove most fields from LMF.
14631
14632         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14633
14634         * mini-trampolines.c: Add support for IA64 function descriptors.
14635
14636         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14637         for IA64 function descriptors.
14638
14639 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14640
14641         * tramp-arm.c: patch the vtable for virtual calls. Added
14642         support code to register/unregister the LMF.
14643         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14644         more LMF work.
14645
14646 2005-08-19  Dick Porter  <dick@ximian.com>
14647
14648         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14649         bit value if needed.
14650
14651 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14652
14653         * mini.c (mini_get_method): Move handling of wrapper data here.
14654
14655         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14656
14657         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14658         virtual.
14659
14660         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14661         bblock->code does not remain empty.
14662
14663 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14664
14665         * arrays.cs: Add regression test for #75832.
14666
14667         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14668         rules. Fixes #75832.
14669
14670         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14671         instruction scheduling.
14672
14673 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14674
14675         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14676
14677 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14678
14679         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14680
14681         * mini-codegen.c: Fix VC build.
14682
14683         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14684
14685 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14686
14687         * mini.h: fix signature for mono_register_opcode_emulation.
14688
14689 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14690
14691         * mini.c: Get rid of most of the helper_sig_... constants using
14692         mono_create_icall_signature ().
14693
14694 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14695
14696         * jit-icalls.c (helper_ldstr): New helper function.
14697
14698         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14699
14700         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14701         throw, load the string using a helper call instead of creating a string object.
14702
14703         * aot.c: Update after LDSTR changes.
14704
14705         * mini.h: Bump AOT file version.
14706         
14707         * aot.c: Save class size info into the AOT file. Print more statistics during
14708         compilation.
14709
14710         * mini.h: Bump AOT file version.
14711
14712         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14713         ordering of disasm cases. Fixes #74957.
14714
14715 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14716
14717         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14718         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14719         the generic code needed for the ARM port.
14720
14721 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14722
14723         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14724         inssel-arm.brg: more ARM features and fixes.
14725
14726 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14727
14728         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14729         ARM port work in progress.
14730
14731 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14734
14735         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14736
14737         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14738
14739         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14740
14741         * *-ia64.*: Ongoing IA64 work.
14742         
14743         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14744
14745 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14746
14747         * TODO: Remove out-of-data todo stuff.
14748
14749         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14750         dead code.
14751
14752         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14753
14754         * mini.h: Bump corlib version.
14755
14756 2005-07-27  Martin Baulig  <martin@ximian.com>
14757
14758         * mini-codegen.c
14759         (create_copy_ins): Added `const unsigned char *ip' argument; set
14760         `copy->cil_code' from it.
14761
14762 2005-07-27  Martin Baulig  <martin@ximian.com>
14763
14764         * mini-exceptions.c (mono_handle_exception): Don't call
14765         mono_debugger_handle_exception() for filters.
14766
14767 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14768
14769         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14770         as well.
14771
14772 2005-07-26  Martin Baulig  <martin@ximian.com>
14773
14774         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14775
14776         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14777         helper_compile_generic_method() if the method is actually virtual
14778         and non-final.
14779
14780 2005-07-26  Martin Baulig  <martin@ximian.com>
14781
14782         * mini.c
14783         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14784         public; this is now accessed directly by the debugger.
14785         (mono_generic_trampoline_code): Removed.
14786
14787         * debug-mini.c
14788         (mono_debug_init_method): Also add interncalls and wrappers.
14789
14790 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14791
14792         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14793
14794 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14795
14796         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14797
14798 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14799
14800         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14801
14802 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14803
14804         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14805         getting TLS offsets on AMD64 too.
14806
14807 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14808
14809         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14810
14811 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14812
14813         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14814         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14815
14816 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14817
14818         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14819
14820         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14821         to mini.c.
14822
14823         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14824         mono_sparc_is_virtual_call ().
14825         
14826         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14827
14828         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14829         trampoline parameters.
14830
14831         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14832         
14833         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14834         to mono_arch_get_vcall_slot_addr.
14835
14836         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14837         trampoline code.
14838
14839         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14840
14841 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14842
14843         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14844
14845 2005-07-19  Martin Baulig  <martin@ximian.com>
14846
14847         * exceptions-amd64.c (throw_exception): Call
14848         mono_debugger_throw_exception() here like we're doing it on i386.
14849
14850 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14851
14852         * mini-ia64.c: Add optimized TLS access support.
14853
14854 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14855
14856         * mini-exceptions.c: Ongoing IA64 work.
14857
14858         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14859
14860         * mini.c: Use the default optimization set when embedding. Fixes
14861         #75194.
14862
14863 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14864
14865         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14866         of trampolines to a separate file.
14867
14868         * mini-trampolines.c: New file.
14869
14870         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14871         separate file.
14872         
14873         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14874         amd64/ia64 code.
14875
14876         * mini-codegen.c: Fix cygwin build.
14877
14878 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14879
14880         * mini.c: Add some minor changes needed by the IA64 port.
14881
14882         * *-ia64.*: Ongoing IA64 work.
14883
14884 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14885
14886         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14887         trampolines into arch-independent and arch-dependent parts.
14888
14889         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14890
14891 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14892
14893         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14894
14895         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14896         the xp-regalloc-branch for amd64.
14897
14898         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14899         xp-regalloc-branch for x86.
14900
14901 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14902
14903         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14904
14905 2005-07-06  Martin Baulig  <martin@ximian.com>
14906
14907         * mini.c
14908         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14909         (mono_jit_runtime_invoke): Likewise.
14910
14911 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14914         on x86 too.
14915         
14916         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14917         without loading their metadata. Reorganize the file format so exception handling+
14918         debug info is kept separate from normal method info. Create MonoJitInfo 
14919         structures for methods lazily.
14920
14921         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14922         loading metadata.
14923         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14924
14925         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14926
14927         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14928         in AOT code.
14929
14930         * mini.h: Bump AOT file version.
14931
14932 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14933
14934         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14935
14936 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14937
14938         * Makefile.am (check-local): Call semdel-wrapper.
14939
14940 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14941
14942         * mini-x86.c: Revert the last change as it seems to break the build..
14943
14944 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14945
14946         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14947         
14948         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14949
14950 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14951
14952         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14953         outside of the macro, so strange stuff doesn't happen with gcc4
14954         (NEW_AOTCONST_TOKEN): Likewise.
14955
14956 2005-06-28  Martin Baulig  <martin@ximian.com>
14957
14958         * mini.c (mini_class_is_system_array): New static method; use this
14959         instead of `klass->parent == mono_defaults.array_class' everywhere
14960         since this also works for the new generic array class.
14961
14962 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14963
14964         * inssel.brg: Remove warnings.
14965
14966 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14967
14968         * mini-ia64.c: Ongoing IA64 work.
14969
14970         * basic-float.cs: Add float->i1 conversion test.
14971
14972         * iltests.il: Add conv.u4 test.
14973
14974 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * inssel-long.brg: Fix bug caused by last change.
14977
14978 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14979
14980         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14981         BSDs.  Allows the x86 JIT to work on OSX86
14982
14983 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14984
14985         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14986         u4->i8 conversion.
14987
14988         * mini-ia64.c: Ongoing IA64 work.
14989
14990 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14991
14992         * mini-ia64.c: Ongoing IA64 work.
14993
14994         * driver.c: Clean up jit_code_hash as well when using --regression.
14995
14996         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14997
14998         * basic-long.cs: Add tests for long->u4 conversion.
14999
15000 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15001
15002         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15003         that we do not depend on undefined C behavior: the order stuff
15004         gets evaluated within an expression. Fixes mono when compiled on
15005         GCC 4.
15006
15007 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15008
15009         * *-ia64.*: Ongoing IA64 work.
15010
15011         * aot.c: Lower memory usage while loading AOT methods.
15012
15013         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15014
15015         * mini.h: Bump AOT file format version.
15016
15017 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15020
15021 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15022
15023         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15024         not on callee assembly). Fixed some comments.
15025
15026 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15027
15028         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15029         it gets proper disassembly.
15030         (emit_method_info): Remove some dead code.
15031
15032         * mini.c (mini_method_compile): Allways allocate the GOT var in
15033         mono_method_to_ir for emulating opcodes.
15034
15035 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15036
15037         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15038         before freeing the code memory. Fixes #74990.
15039
15040         * objects.cs: Add regression test for #74992.
15041
15042         * liveness.c: Extend live ranges of arguments to the beginning of the
15043         method. Fixes #74992.
15044
15045         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15046         so it points into the faulting instruction.
15047
15048 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15049
15050         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15051
15052         * *-ia64.*: Ongoing IA64 work.
15053
15054         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15055
15056 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15057
15058         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15059
15060         * *-ia64.*: Ongoing IA64 work.
15061
15062 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15063
15064         * basic-long.cs: Add tests for add/sub.ovf.
15065
15066         * basic.cs: Add tests for sub.ovf.
15067
15068         * *-ia64.*: Ongoing IA64 work.
15069
15070 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15071
15072         * *-ia64.*: Ongoing IA64 work.
15073
15074         * basic.cs: Add conv.ovf.i4.un test.
15075
15076 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15077
15078         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15079         
15080 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15081
15082         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15083
15084 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15085
15086         * *-ia64.*: Ongoing IA64 work.
15087
15088 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15089
15090         * trace.[ch]:
15091         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15092
15093 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15094
15095         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15096
15097 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15098
15099         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15100
15101         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15102         of a call is callable by a near call.
15103
15104 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15105
15106         * mini-ia64.c: Ongoing IA64 work.
15107
15108 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15109
15110         * genmdesc.c: Make the generated array non-static.
15111
15112         * inssel-long.brg: Fix LSHR_IMM rule.
15113
15114         * *-ia64.*: Ongoing IA64 work.
15115
15116         * *-ia64.*: Ongoing IA64 work.
15117
15118 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15119
15120         * *-ia64.*: Ongoing IA64 work.
15121
15122         * *-ia64.*: Ongoing IA64 work.
15123         
15124         * mini-ia64.c: Ongoing IA64 work.
15125
15126         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15127
15128 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15129
15130         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15131         
15132         * objects.cs basic-long.cs: Move some tests to objects.cs.
15133
15134 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15135
15136         * *-ia64.*: Ongoing IA64 work.
15137
15138         * iltests.il: Add a new test.
15139
15140         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15141         newobj. Fixes #75042.
15142
15143 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15144
15145         * *-ia64.*: Ongoing IA64 work.
15146         
15147         * *-ia64.*: Ongoing IA64 work.
15148         
15149         * *-ia64.*: Ongoing IA64 work.
15150
15151         * basic.cs objects.cs: Move tests accessing static variables as well.
15152
15153         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
15154
15155 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
15156
15157         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
15158
15159         * driver.c: Always print failed tests.
15160
15161         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
15162         frame pointer.
15163
15164         * *ia64*: Ongoing IA64 work.
15165
15166 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15167
15168         * basic.cs: Add tests for add.ovf. Fix warnings.
15169
15170 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15171
15172         * driver.c (mono_main): Avoid crash if no argument is passed to
15173         --break;  Do not use g_error, but f_printf.   And fix all other
15174         ocurrences of the same crash.
15175
15176 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15177
15178         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15179         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15180         Fixes #74742.
15181
15182 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15183
15184         * *-ia64.*: Add beginnings of IA64 backend.
15185
15186         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15187
15188 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15189
15190         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15191         Fixes #74925.
15192
15193         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15194
15195         * mini-amd64.c: Fix a warning.
15196
15197 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15200         in float_neg. Fixes #74897.
15201
15202         * mini-amd64.c (emit_call): Fix another near call bug.
15203
15204 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15205
15206         * declsec.c: Keep the appdomain information in the structure. Added a 
15207         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15208         value gets overwritten).
15209         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15210         an MonoAppDomain member to MonoSecurityFrame.
15211         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15212         used in the stack walk. Now use a MonoArray which grow (double) when
15213         it gets full.
15214
15215 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15216
15217         * mini.c: Re-enabled runtime cleanup, since running threads should
15218         now properly stop when exiting.
15219
15220 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15221
15222         * mini-codegen.c: New file contaning the arch-independent local
15223         register allocator. Not used by any architectures yet.
15224
15225         * mini.h linear-scan.c: Merge some changes from the 
15226         mini-xp-local-regalloc branch.
15227
15228 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15229
15230         * mini-amd64.c (emit_call): Fix calls to native functions when the
15231         runtime is compiled as a shared library. Fixes #74756.
15232
15233         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15234         on a literal field. Fixes #74751.
15235
15236 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15237
15238         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15239
15240 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15241
15242         * objects.cs: Add missing null casting test.
15243
15244 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15245
15246         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15247         in wrapper methods. Also rename 'address' variable to 'offset'.
15248
15249 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15250
15251         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15252         warnings.
15253         
15254         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15255
15256         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15257         work on windows.
15258
15259 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15260
15261         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15262
15263 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15264
15265         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15266         just the last bytes.
15267
15268 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15269
15270         * aot.c (mono_compile_assembly): Fix warning.
15271
15272         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15273         by the _MSC_VER stuff.
15274
15275 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15276
15277         * inssel-long.brg: Fix #74588.
15278
15279         * cpu-amd64.md: Fix #74591.
15280
15281         * iltests.il: Add new regression tests.
15282
15283 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15284
15285         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15286         valuetype.
15287
15288 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15289
15290         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15291
15292         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15293         from Bill Middleton <flashdict@gmail.com>.
15294
15295 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15296
15297         * arrays.cs: Add new regression test. Fix warnings.
15298
15299 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15300
15301         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15302         and leakage in CKFINITE.
15303
15304         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15305         this to a null op since it is called on amd64 too.
15306
15307         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15308
15309         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15310         body since this is not used on amd64.
15311         
15312         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15313
15314         * mini-amd64.c: Remove obsolete fixmes.
15315
15316         * mini.c (print_method_from_ip): Fix debugging support.
15317
15318 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15319
15320         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15321         so that expressions that don't give much gain are not reduced.
15322         * ssapre.h: Likewise.
15323
15324 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15325
15326         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15327
15328         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15329
15330         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15331
15332 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15333
15334         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15335
15336         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15337
15338 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15339
15340         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15341         stack touching.
15342
15343         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15344
15345         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15346
15347         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15348
15349         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15350         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15351
15352         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15353
15354         * mini-x86.c: Fix up stack overflow handling.   
15355
15356         * exceptions.cs: Add new regression test.
15357
15358 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15359
15360         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15361         mono_jit_thread_attach.
15362
15363         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15364
15365 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15368         avoid calling constructors using callvirt.
15369
15370         * inssel.brg: Fix #74073.
15371
15372 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15373
15374         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15375         compilation with non-GCC compilers.
15376         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15377         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15378
15379 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15380
15381         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15382         klass->interface_offsets (will likely fix bug#74073).
15383
15384 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15385
15386         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15387
15388 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15389
15390         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15391         to amd64_div_reg_size ().
15392         
15393         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15394
15395 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15396
15397         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15398
15399 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15400
15401         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15402
15403 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15404
15405         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15406         
15407         * mini.c (mono_precompile_assembly): Load and precompile referenced
15408         assemblies as well. Fixes #74015.
15409
15410 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15411
15412         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15413
15414 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15415
15416         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15417         a lot of checks and (anyway) permissions cannot work until corlib is 
15418         loaded.
15419
15420 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15421
15422         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15423
15424 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15425
15426         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15427         calls (fixes bug#72824).
15428
15429 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15430
15431         * mini.c: fix tail recursion elimination (see test in bug#73936).
15432
15433 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15434
15435         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15436         some fp functions in sse2 mode.
15437
15438 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15439
15440         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15441
15442 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15443
15444         * mini.h mini.c: Add mono_get_jit_tls_key ().
15445
15446         * mini-x86.c: Enable fast TLS support on windows.
15447
15448 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15449
15450         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15451         * mini.c: Check for p/invoke method when generating code. If a
15452         p/invoke method, or it's class, isn't decorated with [Suppress
15453         UnmanagedCodeSecurity] then generate code to call System.Security.
15454         UnmanagedDemand (only if the security manager is active).
15455
15456 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15457
15458         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15459         last change as it seems to cause strange crashes.
15460         
15461 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15462
15463         * *.c: handle unsafe function pointers where needed.
15464
15465 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15466
15467         * mini.c (mono_jit_free_method): Remove the fixme too.
15468
15469 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15470
15471         * mini.c: As discussed, make the code actually free the delegate
15472         thunk now, to enable the debugging of delegate problems, use
15473         MONO_DEBUG=1 when running Mono. 
15474
15475         This takes also care of parts of the leaks as seen by Joe.
15476
15477 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15478
15479         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15480         thread_tls_offset calculation.
15481
15482 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15483
15484         * declsec.c: Reworked linkdemand checks for icall. The previous code
15485         was using the declaration code (untrusted) and didn't work as expected
15486         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15487         specific case.
15488
15489 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15490
15491         * iltests.il: Add new localloc test.
15492
15493         * mini-amd64.c: Handle large stack allocations the same way as on
15494         windows if stack overflow handling is working.
15495         
15496         * mini-amd64.c: Allocate the signal stack using mmap.
15497
15498         * mini.c (sigsegv_signal_handler): Fix reading of context.
15499
15500         * mini-exceptions.c: Fix up stack overflow handling.
15501
15502         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15503
15504         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15505
15506         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15507
15508         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15509
15510         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15511         tramp_init functions as they are no longer needed.
15512
15513 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15514
15515         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15516         
15517         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15518
15519         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15520         
15521         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15522         support that now.
15523
15524         * mini-ops.h: Add OP_LMUL_IMM.
15525
15526         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15527         long mul/div opcodes as intrinsic.
15528
15529         * mini-amd64.c (emit_call): Handle the case when the callee might be
15530         an AOT method.
15531
15532 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15533
15534         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15535         extra safe.
15536         
15537         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15538
15539         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15540
15541 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15542
15543         * mini.c (mono_codegen): Don't leak here, to help people running
15544         monogrind.
15545
15546 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15547
15548         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15549         conversions in sse2 mode.
15550
15551         * basic-float.cs: Add regression test.
15552         
15553         * mini-amd64.c: Reenable sse2.
15554
15555 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15556
15557         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15558
15559 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15560
15561         * driver.c: Copyright text should include 2005.
15562         
15563 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15564
15565         * cpu-amd64.md (load_membase): Fix more max lengths.
15566
15567 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * cpu-amd64.md (load_membase): Fix max length.
15570
15571         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15572
15573         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15574
15575         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15576         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15577
15578         * basic-float.cs: Add rounding regression test.
15579
15580         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15581
15582 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15583
15584         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15585         structures in registers for pinvoke wrappers.
15586
15587 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15588
15589         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15590
15591 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15592
15593         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15594         wrapper to mono_jit_thread_attach.
15595
15596         * mini.c (mini_jit_thread_attach): New jit icall.
15597
15598         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15599         native->managed wrappers.
15600
15601         * exceptions.cs: Add new regression test.
15602
15603         * mini.c (optimize_branches): Check regions in the cbranch to throw
15604         block case as well. Fixes #73242.
15605
15606 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15607
15608         * mini.c: thread safety fixes.
15609
15610 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15611
15612         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15613         patching stuff, since delegates use jump trampolines so there is
15614         no caller.
15615
15616         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15617         jump trampolines.
15618         
15619         * tramp-amd64.c: Fix build.
15620
15621         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15622         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15623
15624         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15625         Rename this to mono_arch....
15626         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15627
15628         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15629
15630         * mini-amd64.c (emit_call): If both the caller and the callee is
15631         guaranteed to have 32 bit addresses, emit a normal call.
15632
15633         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15634
15635         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15636         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15637         method_ptr inside delegates.
15638
15639 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15640
15641         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15642         invalidated. Fixes #73001.
15643
15644         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15645
15646         * mini-x86.c: Only use stdcall for pinvokes on windows.
15647
15648 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15649
15650         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15651         * mini-x86.c: remove unreliable __thread var offset detection,
15652         use the correct accessors and enable by default.
15653
15654 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15655
15656         * mini.c (mono_jit_free_method): Fix memory leak.
15657
15658 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15659
15660         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15661
15662 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15663
15664         * cpu-amd64.md: Fix lengths of atomic opcodes.
15665
15666 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15667
15668         * driver.c: try to not imply using ICU is any good.
15669
15670 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15671
15672         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15673         functions as inline ops.
15674
15675         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15676         some Interlocked functions as inline ops.
15677
15678         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15679
15680         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15681
15682         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15683
15684         * mini.c: Add support for OP_NOT_TAKEN.
15685
15686         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15687         structures in registers for pinvoke wrappers.
15688
15689         * mini-amd64.c: Fix warnings.
15690
15691 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15692
15693         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15694
15695         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15696
15697         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15698         address instead of loading the address from it.
15699
15700         * mini-x86.c: Add support for returning small structs in registers
15701         on Win32. Fixes part of #70864.
15702         
15703 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15704
15705         * trace.c (get_token): Improve error checking.
15706
15707 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15708
15709         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15710
15711 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15712  
15713         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15714         it can be reused for MonoClass.
15715         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15716         _LINKDEMAND.
15717
15718 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15719
15720         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15721         instead of a MonoReflectionMethod. The method information wasn't used
15722         when displaying SecurityException details (but will be now).
15723
15724 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15725
15726         * Makefile.am : windows build fix.
15727
15728 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15729
15730         * iltests.il: Add new regression test.
15731
15732         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15733         #72522.
15734
15735 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15736  
15737         * mini.c: Moved linkdemand check into helper function check_linkdemand
15738         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15739         LDFTN, LDVIRTFTN).
15740
15741 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15742
15743         * declsec.c: Added statistics counter for different kinds of 
15744         LinkDemands.
15745         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15746         (and commented) declaration.
15747         * mini.c: Added statistics counter for security Demand code 
15748         generation. Added display of security statistics.
15749
15750 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15751
15752         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15753         Fix compilation errors under gcc-2.95.
15754
15755 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15756
15757         * mini.c, driver.c: Use the new jit trampoline hashtable
15758
15759 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15760
15761         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15762
15763 2005-02-11  Martin Baulig  <martin@ximian.com>
15764
15765         * debug-mini.c (mono_debug_close_method): Free the line number array.
15766
15767 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15768
15769         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15770         icalls.
15771
15772         * mini.h: Bump AOT file format version. 
15773
15774 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15775
15776         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15777         APTC and P/Invoke.
15778         * declsec.h: Added macros to get/set lazyly initialized security 
15779         informations about assemblies. Added new enum for different type of
15780         possible LinkDemand violation. Added function to check LinkDemands.
15781         * mini.h: Added a field to MonoCompile to hold any security violation
15782         detected when JITting a method (so it can be thrown later).
15783         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15784         and CEE_CALLVIRT. Added code to throw exception at the end of
15785         mini_method_compile (note: the exception is unhandled right now).
15786
15787 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15788
15789         * mini.c, jit-icalls.c: use the managed implementation of
15790         memset for initobj and memset, to avoid managed <-> unmanaged
15791         transitions.
15792
15793 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15794
15795         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15796         optimization if it would need a GOT var.
15797
15798         * basic.cs: Add tests for constant propagation and switch statements.
15799
15800         * ssa.c: Fix out-of-range constant propagation and switch statements.
15801
15802 2005-02-09    <vargaz@freemail.hu>
15803
15804         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15805
15806 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15807
15808         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15809
15810 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15811
15812         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15813
15814 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15815
15816         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15817         arithmetic operations.
15818
15819 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini-ppc.c: add a workaround for broken user code that
15822         DllImports vararg functions with non-vararg signatures.
15823
15824 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15827         meaningfull error message for assemblies written in Managed C++.
15828
15829         * tramp-amd64.c mini-amd64.h: Add support for 
15830         create_trampoline_from_token ().
15831
15832         * aot.c mini-x86.c abcremoval.c: Applied patch from
15833         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15834
15835 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15836
15837         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15838         which takes a MonoImage/token as parameter instead of a MonoMethod.
15839
15840         * aot.c: Use the new trampoline for initializing vtables.
15841
15842         * aot.c: Add support for ldfld/stfld_remote wrappers.
15843
15844         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15845         rules for compare <MEM>, IMM.
15846
15847         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15848
15849         * aot.c: Handle inherited finalizers correctly.
15850
15851 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15852
15853         * inssel.brg (stmt): Add a missing _setup_... ().
15854
15855         * aot.c: Save some parts of the class state to the AOT file and use it
15856         to recompute that state when a class is initialized.
15857
15858         * mini.c: Install AOT hooks into the runtime.
15859
15860         * mini.h: Bump AOT file format version.
15861         
15862         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15863         Fixes #72148.
15864
15865         * iltests.il: Add new test.
15866
15867 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15868
15869         * mini.c: fix typo.
15870
15871 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15872
15873         * mini.c: setup the statistical profiler in the thread attach
15874         callback to cope with the new single thread code.
15875
15876 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15877
15878         * mini-ppc.c: ensure we have enough room for the profiler
15879         calls (fixed bug#72084).
15880
15881 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15882
15883         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15884         it.
15885
15886 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15887
15888         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15889
15890 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15891
15892         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15893         to succesfully execute parrotbench).
15894         * ssapre.h: Likewise.
15895
15896 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15897
15898         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15899         variable for stores to method arguments (fixes a SSAPRE issue).
15900
15901 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15902
15903         * mini.c: handle value types in dup, fixes gen-112.cs.
15904
15905 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15906
15907         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15908         sequence for calls in dynamic methods to avoid thunks.
15909
15910 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15911
15912         * mini.c: correctly remove dynamic methods from the hashtable.
15913
15914 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15915
15916         * driver.c: Disabled SSAPRE until fix the bug that appears
15917         in IronPython's parrotbench.
15918
15919 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15920
15921         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15922
15923         * mini.c (mono_method_to_ir): Revert the previous change.
15924         
15925         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15926         when AOT compiling.
15927
15928         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15929         mono_jit_info_table_find () etc. when running under valgrind.
15930
15931         * inssel.brg: Fix warnings.
15932
15933         * mini-exceptions.c: Fix warnings.
15934
15935 2005-01-31  Martin Baulig  <martin@ximian.com>
15936
15937         * driver.c (compile_all_methods_thread_main): Don't try to compile
15938         generic methods or anything which has type parameters.
15939
15940 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15941
15942         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15943
15944         * TestDriver.cs: Add --verbose flags.
15945
15946         * graph.c ssa.c: Fix 64 bit warnings.
15947         
15948         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15949         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15950         Fix 64 bit warnings.
15951
15952         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15953         variable not spotted by gcc.
15954         
15955         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15956         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15957         X86_COMPARE_MEMBASE opcodes.
15958
15959         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15960
15961 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15962
15963         * *: MonoMethod->signature might be NULL now. You *MUST* use
15964         mono_method_signature.
15965
15966 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15967
15968         * driver.c (compile_all_methods_thread_main): Compile the methods
15969         without invoking cctors.
15970
15971 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15972
15973         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15974         * basic-calls.cs: test for the above.
15975
15976 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15977
15978         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15979         MonoJitInfo changes.
15980
15981 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15982
15983         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15984         eagerly if it contains dynamic methods.
15985         
15986         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15987
15988         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15989         trace, it is now computed by an icall from trace_ips.
15990         
15991         * mini-exceptions.c: Fix a warning.
15992
15993 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini-exceptions.c: don't bother getting stack trace info if
15996         it's not going to be used.
15997
15998 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15999
16000         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16001         ssapre-mini-ops.h.
16002
16003 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16004
16005         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16006
16007         * aot.c: Avoid calling mono_method_get_header () if not needed.
16008
16009         * mini.h: Bump AOT file format version.
16010         
16011         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16012
16013         * mini.c (mono_print_tree): Print more info for calls.
16014
16015 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16016
16017         * declsec.h: Remove warning by adding missing include for marshal.h
16018
16019 2005-01-26  Martin Baulig  <martin@ximian.com>
16020
16021         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16022         `ip' twice.
16023
16024 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16025
16026         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16027         flags.
16028
16029         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16030
16031         * aot.c (mono_compile_assembly): Fix a warning.
16032
16033 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16034
16035         * declsec.c: Look for security attributes on the original MonoMethod 
16036         (and not the wrapped one). This fix permissions on icalls.
16037
16038 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16039
16040         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16041
16042         * mini.c (mono_allocate_stack_slots): Add a fixme.
16043
16044         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16045
16046 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16047
16048         * inssel.brg: optimize casts of sealed types (more
16049         optimizations waiting for fixes in remoting).
16050
16051 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16052
16053         * inssel.brg (stmt): Add another dummy rule.
16054
16055         * driver.c: Fix warnings.
16056
16057         * driver.c (mono_main): If running under valgrind, instruct glib to use
16058         the system allocation functions so valgrind can track the memory
16059         allocated by the g_... functions.
16060
16061         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16062
16063         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16064
16065         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16066
16067         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16068         variables in try regions.
16069
16070         * mini.c (mini_method_compile): Don't disable optimizations on large
16071         methods when AOT compiling.
16072
16073         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16074         allocate stack slots. Not yet used.
16075
16076 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16077
16078         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16079
16080 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16081
16082         * mini-ppc.c: make the branch info relative as the code
16083         buffer can be reallocated.
16084
16085 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16086
16087         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16088         * driver.c: Removed the AOT/security restriction. Now initialize the
16089         security manager (in metadata) if --security is used.
16090         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16091         rather than the pointer to declarative security, when AOT is used.
16092
16093 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16094
16095         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16096         basic blocks, reduced intrinsic exception throwing code size.
16097
16098 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16099
16100         * driver.c (mini_usage): Reorder the usage screen.
16101
16102 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16103
16104         * mini.c (mono_resolve_patch_target): Fix warning.
16105
16106 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16107
16108         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16109         previous patch.
16110
16111         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16112
16113         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16114         breaks the amd64 build.
16115
16116         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16117         register allocation. Fixes #71454.
16118
16119         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16120
16121         * arrays.cs: Add new regression test.   
16122
16123 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16124
16125         * ssapre.c: Turned usage of snprintf to GString.
16126         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16127         (I left it on by mistake in my previous commit).
16128
16129 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16130
16131         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16132         on cond branch optimization (fixes bug# 71515).
16133
16134 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16135
16136         * abcremoval.c: Fixed bug 71062.
16137         * abcremoval.h: Likewise.
16138
16139 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16140
16141         * mini.c: Added a new functionality to optimize_branches, the removal
16142         of useless basic blocks, and fixed some problem in the removal of
16143         critical edges; some utility functions added for both purposes.
16144         * ssapre.c: Added complex expression support, and fixed bug 70637.
16145         * ssapre.h: Likewise.
16146         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
16147         enabled in SSAPRE.
16148         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
16149         * driver.c: Re-enabled SSAPRE.
16150
16151 2005-01-19  Martin Baulig  <martin@ximian.com>
16152
16153         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
16154         the result of mono_get_method_constrained().
16155
16156 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
16157
16158         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
16159         manager.
16160
16161 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
16162
16163         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
16164         be detected.  Fixes #59296.
16165
16166 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16167
16168         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16169         which can happen. Fixes #71361.
16170
16171 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16172
16173         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16174         manager.
16175
16176 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16177
16178         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16179         appdomain-unload.exe to fail.
16180         
16181         * mini.c: Fix some memory leaks.
16182
16183 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16184
16185         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16186         Fixed bug and sped up some codepaths.
16187
16188 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16189
16190         * mini.c: Fix some memory leaks.
16191
16192         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16193         conversion.
16194
16195         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16196
16197         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16198         #71320.
16199
16200         * iltests.il: Add regression test for #71320.
16201
16202 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16203
16204         * mini.c (mono_codegen): Fix installation of profiler hooks.
16205
16206         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16207
16208 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16209
16210         * mini.h, mini.c, cfold.c: optimize access to enum
16211         readonly fields, too. Eval conditional branches if possible
16212         to perform unreachable code removal in more cases.
16213
16214 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16215
16216         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16217
16218         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16219         code manager.
16220
16221         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16222         WinXP DEP. Fixes #71244.
16223
16224 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16225
16226         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16227
16228 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16231
16232 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16235         changes.
16236
16237         * mini.h: Bump AOT version.
16238
16239         * mini.h (MonoCompile): Change exvar to a hash table.
16240
16241         * mini.c: Allocate a separate exvar for each handler block.
16242
16243         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16244
16245         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16246         ex var with the pending exception and only throw if the two are equal.
16247         Fixes #68552.
16248         
16249         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16250
16251         * mini-x86.c: Fix warnings.
16252
16253         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16254         used by all the ports now.
16255
16256         * aot.c: Add write-symbols and save-temps options.
16257
16258 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16259
16260         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16261
16262 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16263
16264         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16265         operations.
16266
16267         * tramp-s390.c: Check vtable slot belongs to the domain.
16268
16269         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16270         as per other platforms.
16271
16272         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16273
16274 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16275
16276         * driver.c: we don't run the Main() code in a subthread anymore.
16277
16278 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16279
16280         * mini.c: added experimental rtc support in the statistical
16281         profiler: if the user has the permission, more accurate statistics
16282         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16283         The MONO_RTC value must be restricted to what the linux rtc allows:
16284         power of two from 64 to 8192 Hz.
16285
16286 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16287
16288         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16289
16290 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16291
16292         * mini-ppc.c: better icache flush for smp.
16293
16294 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16295
16296         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16297
16298         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16299         amd64 port, not yet used.
16300
16301 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16304         a struct type.
16305
16306 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16307
16308         * driver.c: Added --security option to activate the security manager.
16309         Right now this will allow code generation for declarative demands and
16310         is disabled when AOT is specified.
16311         * mini.c: Add code generation for declarative security demands.
16312         * mini.h: Add mono_use_security_manager as an extern gboolean.
16313
16314 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16315
16316         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16317         emitting more dense assembly code.
16318
16319         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16320         exception throwing stuff.
16321
16322 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16323
16324         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16325         dead code.
16326
16327         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16328         left in by mistake.
16329
16330         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16331         fixed.
16332
16333         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16334
16335         * tramp-*.c: Only patch vtable slots if the object is in the current
16336         domain. Fixes appdomain-unload.exe.
16337
16338         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16339         
16340         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16341         x86 branch.
16342
16343 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16344
16345         * mini.c (reverse_branch_op): New helper function.
16346
16347         * mini.c (optimize_branches): Run the new optimization only on 
16348         platforms which support it. Also reverse all kinds of branches.
16349
16350         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16351
16352         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16353         a throw statement.
16354
16355         * mini.c (optimize_branches): Reverse not-equals branches if the false
16356         bblock is a throw. This happens a lot of time with argument checking in
16357         corlib.
16358
16359         * mini.c (mono_codegen): Add support for placing basic blocks after
16360         the function epilogue.
16361
16362         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16363         function epilogue.
16364         
16365 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16366
16367         * mini.c (setup_stat_profiler): Only set this up if the platform
16368         supports ITIMER_PROF.
16369
16370 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16371
16372         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16373         previous patch.
16374
16375         * inssel.brg: Fix a warning.
16376
16377 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16378
16379         * mini.c: added support for statistical profiler 
16380         (run with: --profile=default:stat).
16381
16382 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16383
16384         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16385
16386         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16387
16388         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16389         related to global registers from the amd64 port.
16390
16391 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16392
16393         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16394
16395         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16396         with global registers.
16397         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16398
16399         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16400
16401 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16402
16403         * debug-mini.c (encode_value): Fix off-by-one.
16404
16405         * aot.c (encode_value): Likewise.
16406
16407         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16408
16409 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16410
16411         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16412         AOT.
16413
16414         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16415         
16416         * aot.c (emit_method_info): Increase size of temp buffer.
16417
16418         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16419         the AOT case.
16420
16421 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16422
16423         * aot.c (emit_method_info): Fix build.
16424         
16425         * aot.c: Further rework of the AOT file format to reduce the size of
16426         the method info data.
16427
16428         * mini.h: Bump AOT file format version.
16429
16430 2004-12-27  Martin Baulig  <martin@ximian.com>
16431
16432         * mini.c (mini_get_method): New static method; call
16433         mono_get_method_full() and mono_get_inflated_method().
16434         (mono_method_to_ir): Use mini_get_method() instead of
16435         mono_get_method_full(). 
16436
16437 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16438
16439         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16440
16441 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16442
16443         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16444
16445         * inssel-amd64.brg: Add some optimization rules.
16446
16447 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16448
16449         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16450         standard not GC'd stuff is fine.
16451
16452 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * aot.c: Rework the AOT file format to get rid of most of the global
16455         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16456
16457         * mini.h: Bump AOT file format version.
16458         
16459 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16460
16461         * mini.h: Bump AOT file format version.
16462
16463         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16464         address is inside a GOT.
16465
16466         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16467
16468         * cpu-pentium.md: Increase the maximum size of some instructions which
16469         might involve a got access.
16470         
16471         * mini.c (get_method_from_ip): Another debug helper function.
16472
16473         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16474         when got var accesses are created during the decompose phase.
16475
16476         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16477
16478         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16479         argument mini_compile_method and to MonoCompile, and use this to
16480         determine whenever a given method is compiled for AOT. This allows the
16481         other methods compiled during AOT compilation to be free of AOT stuff,
16482         so the backends does not need to add special support for them by
16483         creating a fake GOT etc.
16484
16485         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16486         longer needed.
16487
16488 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16489
16490         * mini.c (mono_method_to_ir): It turns out that some of the
16491         x-appdomain wrappers are lax with types, so just ignore this for
16492         all wrappers.
16493
16494         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16495         at the vtable->klass. If it is non-shared code we can just use the
16496         vtable.
16497
16498 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16499
16500         * mini-ppc.c: access MonoDomain from tls, too.
16501
16502 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16503
16504         * declsec.c: Removed unused variable (and related warning ;-)
16505
16506 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16507
16508         * iltests.il: New test for LDELEMA on an array of ref types.
16509
16510         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16511         all ldelema's on reftypes.
16512         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16513         it was the wrong place to put it.
16514
16515         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16516         register to pop to make this cleaner, at the request of Paolo.
16517
16518 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16519
16520         * mini-ops.h (OP_GETHASHCODE): New op.
16521
16522         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16523
16524         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16525         operation.
16526
16527         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16528         by 25%.
16529         
16530         * mini-x86.c (mono_arch_output_basic_block): Rather than
16531
16532         add ebp, 4
16533
16534         Emit
16535
16536         pop edx
16537
16538         The first is 3 bytes while the second is 1. This saves 36 kb on
16539         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16540         see a small boost because of icache locality.
16541
16542         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16543
16544 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16545
16546         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16547         started code sharing with the generic code.
16548
16549 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16550
16551         * mini-ppc.c, cpu-g4.md: added code for direct access to
16552         tls data slots.
16553
16554 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16555
16556         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16557          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16558         to OP_TLS_GET.
16559
16560 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16561
16562         * declsec.c|h: Added functions to cache the declarative stack modifiers
16563         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16564         structure.
16565         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16566         created. Register internal calls for System.Security.SecurityFrame::
16567         _GetSecurityFrame and _GetSecurityStack.
16568         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16569         the definitions for the new stack walk/callback mechanism.
16570         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16571         first security frame for LinkDemands and InheritanceDemands) and
16572         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16573         from lupus.
16574         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16575         walk initialization (lupus).
16576
16577 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16578
16579         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16580         idiom.
16581         (handle_loaded_temps): Do not create a temporary variable for
16582         things that we know are temps. They will never be modified.
16583         (mono_spill_call): Set MONO_INST_IS_TEMP
16584         (mono_emulate_opcode): ditto
16585         (emit_tree): ditto
16586         (mono_method_to_ir.CEE_DUP): ditto
16587
16588 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16589
16590         * mini.c (type_to_eval_stack_type): Make this handle the void type
16591         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16592         (emit_tree): use ip_in_bb to special case some common idioms
16593         Update all callers to pass in the IP.
16594         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16595
16596         This gives us a nice 2% speedup in mcs bootstrap.
16597
16598         * mini-x86.c (peephole_pass): Peephole pass to make
16599         mov  [foo], eax
16600         push [foo]
16601
16602         into
16603
16604         mov [foo], eax
16605         push eax
16606
16607         * mini.c (ip_in_bb): new method.
16608         (mono_method_to_ir): use this method rather than doing the hash
16609         lookup ourselves.
16610
16611         * linear-scan.c (mono_linear_scan): When expiring actives, you
16612         don't need to keep around variables that expire on this
16613         instruction. This makes it so that:
16614              a = b + 1
16615         will turn into:
16616              store (ebx add (ebx, 1))
16617         which will become
16618              add ebx, 1
16619
16620 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16621
16622         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16623         combination to avoid doing two copies. Fix up problems with previous
16624         patch.
16625
16626         * mini.c: Fix 64 bit warnings.
16627
16628         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16629
16630 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16631
16632         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16633         changes from the x86 code.
16634
16635         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16636
16637 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16638
16639         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16640         throwing code to reduce its size, unify the AOT and non-aot code and 
16641         get rid of relocations in the AOT case.
16642
16643         * mini-x86.h mini.c exceptions-x86.c 
16644         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16645         raise corlib exceptions which doesn't require relocations in the 
16646         caller.
16647
16648         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16649
16650 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16651
16652         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16653         needed.
16654
16655         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16656         in the AOT case.
16657
16658 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16659
16660         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16661         with add function when used from Inc/dec atomic 
16662         functions. Re-enabled optimization on x86.
16663         * mini-ops.h: renamed atomic_add functions to
16664         allow _add to match the Interlocked::Add and
16665         _add_next to match Interlocked::Inc/Dec.
16666
16667 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16668
16669         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16670         linking of BBs to the end BB, and enabled SSAPRE also with
16671         consprop and copyprop (which was prevented by that bug).
16672
16673 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16674
16675         * mini-x86.c: disabling the Interlocked optimizing code. 
16676
16677 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16678
16679         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16680         file version check.
16681         
16682 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16683
16684         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16685         interlocked optimization due lack of support on x86, rewrote 
16686         exchange to take into account that base may be in eax.
16687         
16688         xsp works again; activated Interlocked optimizing code.
16689         
16690 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16691
16692         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16693
16694 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * mini-ops.h: Add new opcodes.
16697
16698         * mini.h: Add new patch types. Add got_var to MonoCompile.
16699
16700         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16701         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16702         make it work with all kinds of patchable code.
16703
16704         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16705         address of the GOT, and referencing entries in the GOT.
16706
16707         * mini.c: Add code to load the GOT address if needed by an opcode.
16708
16709         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16710         independent AOT code on the x86 using an elf-style Global Offset Table.
16711
16712 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16713
16714         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16715
16716 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16717
16718         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16719         when running xsp.
16720
16721 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16722
16723         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16724         of Interlocked:Increment/Decrement/Add as inline ops.
16725         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16726
16727 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16728
16729         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16730         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16731
16732 2004-12-12  Duncan Mak  <duncan@ximian.com>
16733
16734         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16735         again. `patch_info->table_size' is no longer valid after Zoltan's
16736         commit #37636.
16737
16738 2004-12-12  Martin Baulig  <martin@ximian.com>
16739
16740         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16741         if we are the "real" method, ie. not an inlined method inside it.
16742
16743 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16744
16745         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16746         before we look in the special fields table. This fixes
16747         ../tests/thread-static-init.cs.
16748
16749 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16750
16751         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16752         for Array get_Rank and get_Length. Fixes bug #70465.
16753
16754 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16757         separate structure to reduce the size of MonoJumpInfo.
16758
16759 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16760
16761         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16762
16763 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16764
16765         * mini.c (mini_get_inst_for_method): Changed to allow ports
16766         to return a MonoInst instead of opcode 
16767         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16768         
16769         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16770         Allow ports to return a created MonoInst instead of op-code, will enable
16771         new optimizations.
16772         (renamed mini_get_opcode_for_method to better reflected the functionality)
16773
16774 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16775
16776         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16777
16778 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16779
16780         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16781         Fixes #69985.
16782
16783 2004-12-08  Martin Baulig  <martin@ximian.com>
16784
16785         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16786         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16787
16788 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16789
16790         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16791         correctly.
16792
16793         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16794         arithmetic.
16795
16796 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16797
16798         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16799
16800 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16801
16802         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16803         bug introduced by the previous patch.
16804
16805 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16806
16807         * mini-ppc.c, objectc.cs: handle large structs passed by value
16808         (fixes bug #69972).
16809
16810 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16811
16812         * mini-ppc.c: OP_ARGLIST implementation from
16813         Geoff Norton  <gnorton@customerdna.com>.
16814
16815 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16816
16817         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16818         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16819
16820 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16821
16822         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16823
16824 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16825
16826         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16827         support.
16828
16829 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * mini-sparc.c: Zero out localled-ed memory.
16832
16833         * iltests.il: Add tests for zeroing out localloc-ed memory.
16834
16835 2004-12-04  Martin Baulig  <martin@ximian.com>
16836
16837         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16838         mono_method_get_signature_full().       
16839
16840 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16841
16842         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16843         and some utility functions (always for SSAPRE), integrated SSAPRE.
16844         * mini.h: Likewise.
16845         * driver.c: Added ssapre option.
16846         * ssa.c: Small fix on OP_ARG handling.
16847         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16848         * Makefile.am: Likewise.
16849
16850 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16851
16852         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16853         now in the xp code.
16854
16855         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16856         icall.
16857
16858 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16859
16860         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16861         
16862         * cpu-s390.md : Increase instruction length of oparglist.
16863
16864         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16865
16866 2004-11-30  Martin Baulig  <martin@ximian.com>
16867
16868         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16869         virtual generic methods.  We call a special helper_compile_generic_method()
16870         icall to retrieve the method from the vtable, inflate and compile
16871         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16872
16873         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16874
16875 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16876
16877         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16878
16879 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16880
16881         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16882         Fixes #69929.
16883
16884 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16885
16886         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16887         platforms with PIC aot.
16888
16889 2004-11-28  Martin Baulig  <martin@ximian.com>
16890
16891         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16892         Fixes gen-112.cs.
16893
16894 2004-11-28  Martin Baulig  <martin@ximian.com>
16895
16896         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16897         the result of mono_type_get_underlying_type() to check whether
16898         we're byref.
16899
16900 2004-11-26  Martin Baulig  <martin@ximian.com>
16901
16902         * mini.c
16903         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16904         in the g_assert().
16905
16906 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16907
16908         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16909         the same way as the other arguments so they won't get clobbered.
16910
16911         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16912         calls through R11 since it is clobbered by the trampoline code.
16913
16914 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16915
16916         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16917         pick up in-tree mscorlib.dll.
16918
16919 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16920
16921         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16922
16923         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16924         runtime data/code are now stored in a table similar to the GOT in ELF. 
16925         This allows the code itself to be position independent.
16926
16927         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16928         loading changes.
16929
16930         * aot.c: Attach ELF type (object/function) directives to all global
16931         symbols.
16932
16933         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16934
16935         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16936
16937         * mini-amd64.h: Turn on PIC AOT code.
16938
16939         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16940         returning the offset within an OP_AOTCONST instruction where the GOT
16941         offset needs to be added.
16942
16943         * mini.h: Bump AOT file format version.
16944
16945 2004-11-25  Martin Baulig  <martin@ximian.com>
16946
16947         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16948         uninflated generic methods.
16949
16950 2004-11-25  Martin Baulig  <martin@ximian.com>
16951
16952         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16953
16954 2004-11-24  Martin Baulig  <martin@ximian.com>
16955
16956         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16957         original klass (this only applies for generic instances).
16958
16959 2004-11-24  Martin Baulig  <martin@ximian.com>
16960
16961         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16962         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16963         that array).
16964
16965 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16966
16967         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16968         localloc. Fixes #69678.
16969
16970         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16971         
16972 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16975         used SSE registers on pinvoke calls. Fixes #69774.
16976
16977 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16978
16979         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16980         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16981
16982 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16983
16984         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16985         Refer directly to the mcs/ tree.
16986
16987 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16988
16989         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16990         Check if a trampoline for a synchronized method is required. 
16991
16992 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16993
16994         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16995         with localloc if needed. Throe arithmetric exception in
16996         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16997         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16998
16999 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17000
17001         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17002         types before switching on type.  Fixes #69622.
17003
17004 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17005
17006         * Makefile.am (check-local): New.  Integrate into 'make check'.
17007         (MCS,RUNTIME): Define using in-tree mono and mcs.
17008         (ILASM): New.
17009         (%.exe): Use $(ILASM).
17010
17011 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17012
17013         * mini-ppc.c: adjust initial prolog size (bug #69691).
17014
17015 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17016
17017         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17018         #69664.
17019
17020 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17021
17022         * Makefile.am (clean-local): Rename from 'clean'.
17023
17024 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17025
17026         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17027         to mono_arch_is_int_overflow. 
17028         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17029         SIGFPE events.
17030
17031 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17032
17033         * declsec.c|h: New files to support declarative security attributes.
17034         Added function to check if a method has (applicable) security.
17035         * mini.c|h: Add check for declarative security attributes in
17036         mono_method_check_inlining.
17037         * Makefile.am: Added declsec.c and declsec.h to the build.
17038
17039 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17040
17041         * mini.c, mini.h: update to keep dynamic code info per-domain.
17042
17043 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17044
17045         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17046         (mini_init): Get rid of it from here too.
17047
17048 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17049
17050         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17051         implemented OP_RETHROW (patch by Geoff Norton
17052         <gnorton@customerdna.com>).
17053
17054 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17055
17056         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17057         between appdomains.  Fixes appdomain-unload on PPC.
17058
17059 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17060
17061         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17062         mini-exceptions.c: handle the new wrapper types.
17063         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17064         token value as a MonoClass* when compiling a wrapper.
17065         mono_jit_create_remoting_trampoline now takes an additional
17066         MonoRemotingTarget parameter.
17067         
17068 2004-11-10  Martin Baulig  <martin@localhost>
17069
17070         * mini.c (mono_method_to_ir): Use `generic_container->context'
17071         rather than creating a new one.
17072
17073 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17074
17075         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17076
17077         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17078
17079 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17080
17081         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17082         the experimental aot cache stuff.
17083
17084 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17085
17086         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17087         mini-exceptions.c: update to exception clause structure changes.
17088
17089 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * exceptions-x86.c (throw_exception): Fix warnings.
17092
17093         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17094         for OP_RETHROW.
17095
17096 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17097
17098         * exceptions-sparc.c (get_throw_exception): Really fix this.
17099
17100 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17101
17102         * tramp-*.c: we no longer support icalls without wrappers, so
17103         a bit of code can be removed here
17104
17105 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17106
17107         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17108         patch.
17109
17110         * cpu-sparc.md: Add op_rethrow.
17111
17112         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17113
17114         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17115
17116         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17117         * mini-ops.h: Add OP_RETHROW.
17118
17119         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17120
17121         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17122
17123 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17124         
17125         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17126         Makes the output much easier to read
17127
17128 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17129
17130         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17131         prevents another huge leak when compiling with ssa. Secondly, the
17132         performance of doing this rather than freeing the lists is much
17133         better. GList does a lock every time you allocate a list link,
17134         so that it can use a memory pool. So, it is better to just use
17135         a memory pool of our own.
17136         
17137         * ssa.c, linear-scan.c: replace g_list_remove_link with
17138         g_list_delete.  The remove one does not free the GList, so we were
17139         leaking memory. On -O=all --compile-all with corlib, this cut down
17140         3 MB of allocations.
17141
17142 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17143
17144         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17145
17146         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
17147
17148         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
17149         into a new function mono_create_jit_trampoline ().
17150
17151 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17152
17153         * trace.c (get_spec): Allow tracing of classes without a namespace.
17154
17155 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
17156
17157         * mini.c: Fix pointer overwrite in mini_method_compile.
17158
17159 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
17160
17161         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
17162         The darwin ABI needs some special handling for 1 and 2 byte structs
17163         Lets use lbz/lhz instead of lwz everywhere.
17164         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
17165         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
17166         Use stb/sth for the former, and put the latter always on stack instead of in
17167         argument registers.
17168
17169 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * trace.c (is_filenamechar): Add '_'.
17172
17173 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17174
17175         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17176
17177         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17178
17179 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17180
17181         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17182         depends on libmonogc. Fixes #68805.
17183
17184 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17185
17186         * mini.c (mono_jit_free_method): Provide extra information for
17187         this error.  Currently this leaks, but will be turned into a
17188         developer option in the future.
17189
17190 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17191
17192         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17193
17194 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17195
17196         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17197         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17198         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17199
17200 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17203         trampolines for AOT code.
17204
17205 2004-10-22    <vargaz@freemail.hu>
17206
17207         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17208         constructed types. Fixes #68136.
17209
17210 2004-10-21  Martin Baulig  <martin@ximian.com>
17211
17212         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17213         if it returns true, unwind the stack to the call instruction.
17214
17215 2004-10-21    <vargaz@freemail.hu>
17216
17217         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17218
17219         * mini.h: Bump AOT version number.
17220
17221         * objects.cs: Add another test for unbox trampolines.
17222
17223         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17224         valuetype methods.
17225
17226 2004-10-20    <vargaz@freemail.hu>
17227
17228         * driver.c: Add SHARED to the set of optimizations tested.
17229
17230         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17231
17232         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17233         used by CEE_NEWARR.
17234
17235         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17236
17237 2004-10-20  Martin Baulig  <martin@ximian.com>
17238
17239         * mini-exceptions.c (mono_handle_exception): Call
17240         mono_debugger_handle_exception() to tell the debugger about
17241         catch/finally clauses.
17242
17243 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17244
17245         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17246
17247         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17248         #68447.
17249
17250 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17251
17252         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17253         methods as their native size, fixed bug #57543, #57545.
17254         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17255         This saves a temporary register and mullw call down into 1 (minor perf
17256         increase for cases like sum = sum * 5;  This use to translate into:
17257             li r11,5
17258             mullw r28,r28,r11
17259         It now translates to
17260             mulli r28,r28,5
17261
17262 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17263
17264         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17265         #68388.
17266
17267 2004-10-11  Martin Baulig  <martin@ximian.com>
17268
17269         * mini.c (mono_method_to_ir): If we're a generic method, get the
17270         MonoGenericContainer from our MonoMethodNormal and create a
17271         MonoGenericContext from it.
17272
17273 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17274
17275         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17276
17277         * basic-long.cs: Add test for checked i8->i2 cast.
17278
17279 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17280
17281         * inssel-ppc.brg: added a couple of speedup rules.
17282
17283 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17284
17285         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17286         to speed up rebuilds.
17287
17288 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17289
17290         * mini-s390.c: Minor fix to OP_OR_IMM.
17291
17292 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17293
17294         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17295         better. Fixes appdomain-unload.exe on sparc.
17296
17297 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17298
17299         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17300         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17301         see bug 67324.
17302
17303 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17304
17305         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17306
17307 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17308
17309         * mini.c: Always generate a field read/write wrapper for members
17310         of the class MarshalByRefObject since the actual instance could
17311         be a CBO.
17312
17313 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17314
17315         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17316
17317 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17318
17319         * driver.c mini.h trace.c: Move the setting of the main assembly into
17320         a separate function called mono_trace_set_assembly () and call it after
17321         actually loading the main assembly. Fixes #66872.
17322
17323 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17324
17325         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17326         using the code manager.
17327
17328 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17331
17332 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17333
17334         * cpu-amd64.md: Fix bug in previous patch.
17335         
17336         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17337         #66650.
17338
17339 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17340
17341         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17342         mini-exceptions.c: updates for changed stack walk interface.
17343
17344 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17345
17346         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17347
17348 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17349
17350         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17351
17352 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17353
17354         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17355         since assemblies can't be unloaded.
17356         
17357 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17358
17359         * cpu-amd64.md: Fix more instruction lengths.
17360
17361         * cpu-amd64.md: Fix lengths of some instructions.
17362
17363 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17364
17365         * inssel.brg: Make the array ldelema check aot friendly.
17366
17367 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17370
17371         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17372
17373 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * mini-x86.c: Fix build.
17376
17377         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17378         mono_type_get_underlying_type () helper function to simplify code.
17379         
17380 2004-09-09  Martin Baulig  <martin@ximian.com>
17381
17382         * mini-amd64.c: Don't access `type->data.klass' directly, call
17383         mono_class_from_mono_type() instead since the type may be a
17384         generic instance.
17385
17386 2004-09-09  Martin Baulig  <martin@ximian.com>
17387
17388         * mini-amd64.c (get_call_info): Fix support for generic instances.
17389         (add_valuetype): Use mono_class_from_mono_type() to get the class
17390         since we can be a generic instance.
17391
17392 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17393
17394         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17395
17396 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17397
17398         * liveness.c: reset spill costs on each scan: bug 62107
17399
17400 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17401
17402         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17403         unnecessary line that doesn't compile
17404
17405 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17406
17407         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17408         trampolines, make them call an error function so people can fix their
17409         code.
17410
17411 2004-09-06  Martin Baulig  <martin@ximian.com>
17412
17413         * mini.c (mono_method_to_ir): When initializing locals, handle a
17414         generic instances like a valuetype if it's a valuetype and like a
17415         class if it's a class.
17416
17417 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17418
17419         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17420         stack. Fixes #64674.
17421
17422         * exceptions.cs: Add test for unwinding of call arguments.
17423
17424 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17425
17426         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17427         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17428         set the carry/borrow flag). The sparc and s390 implementations
17429         can now use optimized versions (and simplify the code). ppc bugfixes.
17430
17431 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17432
17433         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17434
17435 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17436
17437         * inssel-amd64.brg: Remove leftover 32 bit rule.
17438
17439         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17440
17441 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17442
17443         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17444         mono_arch_find_jit_info functions into a new function. Fix a memory
17445         leak.
17446
17447         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17448         refactored code.
17449         
17450 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17453         as well.
17454         
17455         * exceptions.cs: Add array size tests.
17456
17457         * mini.c: Allocate a separate icall wrapper for each arity of 
17458         mono_array_new_va. Fixes #59509.
17459
17460         * exceptions.cs: Add testcase for 64578.
17461
17462         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17463
17464         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17465         
17466 2004-09-02  Martin Baulig  <martin@ximian.com>
17467
17468         * mini.c (mono_method_to_ir): When initializing the locals, call
17469         handle_initobj() on the generic instance itself, not its
17470         underlying type.
17471
17472 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17473
17474         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17475         MonoJitInfo for dynamic methods.
17476
17477         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17478
17479         * mini.c: Add support for freeing JIT data for dynamic methods.
17480         
17481 2004-09-01  Martin Baulig  <martin@ximian.com>
17482
17483         * mini-x86.c (is_regsize_var): Added support for generic
17484         instances.
17485         (mono_arch_emit_prolog): Make this compile again, use
17486         `x86_push_imm_template (code)'.
17487
17488 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17489
17490         * mini-x86.c: make all push_imm instructions that get
17491         patched always emit the long form
17492
17493 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17494
17495         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17496         in a per-domain hash.
17497
17498         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17499         types.
17500
17501 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17504         work.
17505         
17506         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17507         work.
17508
17509         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17510         Beginnings of SSE2 support.
17511
17512         * exceptions.cs: Add more tests for checked int<->uint casts.
17513
17514 2004-08-28  Martin Baulig  <martin@ximian.com>
17515
17516         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17517         generic instances.
17518
17519         * mini.c
17520         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17521         Handle generic instances recursively.
17522
17523 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17524
17525         * iltests.il: test for conv.u8 on a constant
17526
17527 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17528
17529         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17530         LCONV_x4 (shrun_32 (membase)).
17531
17532 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17533
17534         * inssel-x86.brg: c&p rules for push/setret of long
17535
17536 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17537
17538         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17539         compare (regvar, base)
17540
17541         * inssel-x86.brg: more burg love
17542
17543         * inssel.brg: more cleanup
17544
17545         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17546
17547 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17548
17549         * basic-long.cs, basic-calls.cs: new tests for optimization.
17550
17551 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17552
17553         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17554         patch.
17555
17556 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17557
17558         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17559         
17560 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17561
17562         * inssel.brg (mini_emit_memcpy): use 
17563         NO_UNALIGNED_ACCESS to disable memcpy optimization
17564
17565 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17566
17567         * mini-amd64.c: Handle generic types in various places.
17568
17569         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17570
17571 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17572
17573         * mini.c (handle_box): Fix warning.
17574
17575         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17576
17577         * mini-amd64.h: Enable the emit_state optimization.
17578
17579         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17580
17581         * mini-amd64.c: Add some new 64 bit peephole opts.
17582
17583         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17584
17585         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17586
17587         * mini-amd64.c: Register allocator fixes.
17588
17589         * mini.c: Add an optimization to emit_state to avoid allocation of new
17590         registers on some platforms.
17591
17592 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17593
17594         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17595
17596         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17597         allocation. Fixes #63085.
17598
17599         * basic-long.cs: Add new regression test.
17600
17601         * mini-amd64.c: Register allocator improvements.
17602
17603 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * mini-amd64.c (read_tls_offset_from_method): Add another code
17606         sequence.
17607
17608         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17609         instruction sequence for nullifying class init trampolines.
17610
17611         * objects.cs: Add new regalloc test.
17612
17613         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17614
17615 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17616
17617         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17618         
17619         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17620         arguments.
17621
17622         * driver.c: Fix profiling after TLS changes.
17623         
17624         * driver.c (mono_main): Set mono_stats.enabled if needed.
17625
17626         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17627         CEE_BOX.
17628
17629 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17630
17631         * mini-x86.c: use a 1 op rather than a 2 op tls access
17632         instruction -> faster.
17633
17634 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17635
17636         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17637         x86 backend.
17638
17639 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17640
17641         * exceptions-sparc.c (throw_exception): fix typo
17642
17643 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17644
17645         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17646         set tree->dreg correctly with tls. Allow any
17647         register to be used.
17648
17649         * mini-x86.c (read_tls_offset_from_method): add new code
17650         generation pattern seen with GCC.
17651
17652
17653 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17654
17655         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17656         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17657         exceptions-sparc.c: fix some performance issues in exception
17658         handling and setting of the stack trace for exceptions that were
17659         already thrown.
17660
17661 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17664         x86 backend.
17665         
17666         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17667         registers.
17668
17669 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17670
17671         This patch inlines tls access, when possible.
17672         
17673         * mini.h: new arch functions for TLS intrinsics.
17674         All platforms updated with a stub.
17675
17676         * mini.c: use the new intrinsics
17677
17678         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17679         arch specific intrinsic for tls variables
17680
17681 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17682
17683         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17684         under windows.
17685
17686 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17687
17688         * mini.c: thread local allocation
17689
17690 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17691
17692         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17693
17694         * Makefile.am: Link against the static version of libmonogc.
17695         
17696         * Makefile.am: Link the static versions of the convenience libraries
17697         into the mono executable.
17698
17699         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17700
17701 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17704         on integer overflow.
17705
17706         * mini-amd64.c: Reorganize function call code.
17707
17708         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17709
17710 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17711
17712         * inssel-x86.brg: use xor eax,eax.
17713         
17714         * basic.cs: new tests
17715
17716 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17717
17718         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17719         in exception throwing code.
17720         
17721 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17722
17723         * inssel-x86.brg: use xor esi,esi.
17724
17725 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17726
17727         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17728         can trace methods compiled during mini_init () too.
17729
17730         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17731         CEE_CONV_U4.
17732
17733 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17734
17735         * Makefile.am: static link on x86 (r=zoltan)
17736
17737 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17738
17739         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17740         code since it causes some programs to fail.
17741
17742 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17743
17744         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17745
17746 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17747
17748         * mini.c: ovfops_op_map - add STACK_OBJ case for
17749         CONV_I 
17750         * basic.cs: add test_0_pin_string as test
17751         case for above.
17752
17753 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17754
17755         * Makefile.am: build C# if srcdir != builddir
17756
17757 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17758
17759         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17760         fall-through blocks.
17761
17762 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17763
17764         * driver.c: enable loop by default again and include abcrem in -O=all.
17765
17766 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * iltests.il: Add some localloc tests.
17769
17770         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17771
17772         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17773         Fixes #62574.
17774
17775         * inssel-amd64.brg: Add some optimizations.
17776
17777         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17778         for gcc-3.4.
17779
17780         * Makefile.am: Statically link mono against libmono on AMD64.
17781         
17782         * mini-amd64.c inssel-amd64.brg: Optimizations.
17783
17784 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17785
17786         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17787
17788         * tramp-amd64.c: Patch calling code in trampolines.
17789
17790 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17791
17792         * mini-amd64.c: pinvoke struct passing fixes.
17793
17794 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17795
17796         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17797         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17798
17799 2004-08-05  Duncan Mak  <duncan@ximian.com>
17800
17801         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17802         CEE_LDELEM_ANY.
17803
17804 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17805
17806         * mini-amd64.c (emit_move_return_value): Move return value for normal
17807         calls too.
17808
17809 2004-08-05  Martin Baulig  <martin@ximian.com>
17810
17811         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17812         `type->type'; just modify `type' itself when dealing with enums
17813         and generic instances.
17814         (check_call_signature): Make `simple_type' a `MonoType *'.
17815
17816 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * mini.c: Use OP_PADD to add offsets to addresses.
17819
17820         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17821
17822 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17823
17824         * mini-sparc.c (mono_arch_emit_epilog): fix check
17825         for folding last op into restore instruction
17826
17827 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17828
17829         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17830         helper methods using the code manager.
17831         
17832         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17833
17834         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17835
17836 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17837         
17838         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17839           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17840
17841         * mini-s390.c: fix tail processing
17842
17843 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17844
17845         * mini-ppc.c: mul.ovf.un exception name fix.
17846
17847 2004-08-03  Martin Baulig  <martin@ximian.com>
17848
17849         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17850         instances; before jumping to `handle_enum', also modify `ptype'.
17851
17852 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17853
17854         * cpu-sparc.md: fcall maximal length too small.
17855
17856 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17857
17858         * mini-amd64.c mini.h: Add initial support for passing/returning 
17859         structures to/from pinvoked methods.
17860
17861 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17862
17863         * mini-ppc.c: reg allocator fix.
17864
17865 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17868
17869         * inssel.brg: Optimize memset on 64 bit machines.
17870
17871         * mini-amd64.c: Fix some vararg cases.
17872
17873 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17874
17875         * mini-s390.c: Corrected macro in emit_float_to_int
17876
17877         * s390-abi.cs: Tests to exercise the s390 ABI
17878
17879 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17880
17881         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17882         caller saved regs.
17883
17884         * basic.cs: Add a test for add.ovf.un.
17885
17886 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17887
17888         * mini-sparc.c: add case for OP_IDIV_UN
17889
17890 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17893         
17894         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17895
17896 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17897
17898         * basic.cs: regression tests.
17899
17900         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17901         regressions.
17902
17903 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17904
17905         * basic.cs: Add a new test.
17906
17907         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17908         and AOT. Various fixes and optimizations.
17909
17910         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17911
17912 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17913
17914         * mini-ppc.c: make sure temp regs are not used for global reg
17915         allocation.
17916
17917 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17918
17919         * cpu-sparc.md: conv_i8 fix for 64bits
17920
17921         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17922
17923 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17924         
17925         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17926         add opcode for cmp BYTE PTR [eax], imm.
17927
17928         * inssel.brg: Make memcpy and memset takes bases.
17929
17930 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * *-amd64.*: More AMD64 work.
17933         
17934 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17935
17936         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17937         add a compare-not-equal opcode.
17938         
17939 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17940
17941         * mini.c: Use mono_init_from_assembly instead of mono_init.
17942         
17943 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17946
17947         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17948
17949         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17950
17951         * inssel.brg: 64 bit fixes.
17952
17953         * mini.h (MonoCallInst): Add some AMD64 specific data.
17954
17955         * mini.h: Add some OP_P opcodes.
17956
17957 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17958
17959         * basic.cs: tests for 61797 and 61740
17960
17961 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17962
17963         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17964         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17965
17966 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17967
17968         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17969
17970         * *-amd64*.*: Ongoing AMD64 work.
17971
17972 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17973
17974         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17975
17976         * *-amd64*: Ongoing AMD64 work.
17977
17978         * mini-arch.h: Add AMD64 support.
17979
17980         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17981
17982         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17983
17984         * mini-ops.h: Add new opcodes.
17985
17986         * Makefile.am: Add AMD64 support.
17987
17988         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17989         rules into the inssel-long*.brg files.
17990
17991         * *-amd64.*: Add beginnings of AMD64 backend.
17992
17993 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17994
17995         * mini.c (print_dfn): commenting out the code that prints
17996         the cil. With -O=deadce, this makes -v -v crash.
17997         
17998         * cpu-pentium.md: make checkthis have a length of 2
17999
18000 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18001
18002         * mini-sparc.h: fix implementations of __builtin
18003         functions for Sun compiler for V9.
18004
18005 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18006
18007         * mini.c: use the new stelem.ref wrapper
18008         * exceptions.cs, arrays.cs: new stelem.ref tests
18009
18010 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18011
18012         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18013         new XSP should work with these changes).
18014
18015 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18016         
18017         * inssel-{long32,x86,}.brg: trivial optimizations.
18018         
18019 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18020
18021         * mini.c: load value when emitting box operation in
18022         constrained calls.
18023
18024 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18025
18026         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18027         is one byte shorter than cmp DWORD PTR [eax], 0.
18028
18029 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18030
18031         * inssel-ppc.brg: arguments on the stack are always
18032         relative to the stack pointer (spotted by Neale Ferguson).
18033
18034 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18035
18036         * exceptions-x86.c: delay appending the method name to the trace until
18037         after mono_jit_info_table_find is called, as this gets the real
18038         MonoMethod.
18039
18040 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18041
18042         * aot.c: register roots
18043
18044 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18045
18046         * aot.c : I could just use PLATFORM_WIN32 flag.
18047
18048 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18049
18050         * aot.c : Reverting the previous fix. This time it broke linux build.
18051
18052 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18053
18054         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18055
18056 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18057
18058         * mini.c (handle_stack_args): Remove some more debugging code.
18059         
18060         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18061
18062         * driver.c mini.h aot.c: Allow additional options to be specified with
18063         --aot and pass them to mono_compile_assembly.
18064
18065         * aot.c: Add experimental code to AOT compile all loaded assemblies
18066         on demand and save the code into a cache in the filesystem.
18067
18068         * aot.c: Add support for more wrapper methods.
18069         
18070         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18071         58863.
18072
18073         * cpu-*.md: Remove removed opcodes.
18074
18075         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18076         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18077         related icalls to marshal.c.
18078
18079 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18082
18083         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18084
18085         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18086
18087 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18088         * liveness.c: If liveness is recomputated we need to reset the information
18089         for each variable. This way, if the liveness range has been narrowed
18090         by optimizations that happened after the last computation, we can return
18091         a smaller range.
18092         
18093         For example, if you have
18094         
18095         {
18096                 int i = 0;
18097                 
18098                 // Tons of code that does not affect i
18099                 
18100                 i = foo ();
18101                 ...
18102         }
18103         
18104         i = 0 is dead code and will be removed by SSA. However, when
18105         linear scan gets to the code, i will still appear to be live
18106         throughout the entire block. This prevents good register allocation.
18107
18108 2004-07-06  Martin Baulig  <martin@ximian.com>
18109
18110         * debug-mini.c (mono_debug_init_method): Allow
18111         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18112         (mono_debug_add_icall_wrapper): New method.
18113
18114         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18115
18116 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18117
18118         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18119         optimization.
18120
18121 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * aot.c (mono_aot_load_method): Fix loading of debug info.
18124
18125 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18126
18127         * aot.c: Add logging support.
18128
18129 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18130
18131         * mini.h: Add prototype for mono_print_method_from_ip.
18132
18133         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18134
18135         * inssel.brg: 64 bit fixes.
18136
18137         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18138         inssel-long32.brg.
18139
18140         * Makefile.am: Add SPARC64 support.
18141
18142 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18143
18144         * aot.c: Fix alignment problems on 32 bit platforms.
18145
18146 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18147
18148         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
18149         SPARC64.
18150
18151         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
18152         problems.
18153
18154         * mini.h: Bump AOT file version. Some 64 bit fixes.
18155
18156 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18157
18158         * inssel-sparc.brg: Add new rule to avoid register moves.
18159
18160         * inssel.brg: Add ldind_to_load_membase helper function.
18161
18162 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18163
18164         * mini.c: OffsetToStringData intrinsic.
18165         
18166 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18169
18170         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18171         regression tests.
18172
18173         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18174 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18175
18176         * mini.c: reinstated mono_compile_get_interface_var()
18177         on x86, too, since the change breaks the Gtk# build there as well.
18178
18179 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18180
18181         * driver.c: remove loop from the default optimizations: it seems to
18182         interact badly with some of the other options (see bug #60613).
18183
18184 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18187         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18188
18189 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18190
18191         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18192         vararg-using methods.
18193
18194 2004-06-21  Martin Baulig  <martin@ximian.com>
18195
18196         * mini/mini-exceptions.c
18197         (mono_handle_exception): Added `gpointer original_ip' argument.
18198         After calling mono_unhandled_exception(), call
18199         mono_debugger_unhandled_exception() and if that returns true,
18200         restore the context and return.
18201
18202 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18203
18204         * mini-ppc.c: prefer the use of relative branches so
18205         they won't need to be patched in aot code (patch from Patrick Beard).
18206
18207 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18208
18209         * aot.c: patch from Patrick Beard to make the output assembly
18210         more correct for the MacOSX assembler. Small tweak to
18211         generate sane images on Linux/PPC, too.
18212
18213 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18214
18215         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18216         case until bug #59509 is fixed (shows up in #60332).
18217
18218 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18219
18220         * mini.c: make sure the needed wrappers are compiled, too, with
18221         precomp.
18222
18223 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18224
18225         * driver.c: remove NPTL reference in --version output.
18226
18227 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18228
18229         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18230         generate valid assembly for the Mach-O assembler.
18231
18232 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18233
18234         * driver.c: don't include abcrem in the all optimization specifier
18235         since it slows down jit compilation too much for now.
18236
18237 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18238
18239         * mini.c: use BIGMUL only if both operands have the same signage.
18240         * iltests.il: Test for bug 60056. (errors related to signage in
18241         BIGMUL).
18242
18243         r=lupus.
18244
18245 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18246
18247         * mini.c, aot.c: memory leak fixes.
18248
18249 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18250
18251         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18252
18253 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18254
18255         * Makefile.am: remove the -static hack completely, it links in
18256         statically glib as well.
18257
18258 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18259
18260         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18261         * exceptions.cs: make it compile with new mcs/csc.
18262
18263 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18264         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18265         and added relevant test case.
18266
18267 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18268
18269         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18270         regressions in gtk-sharp.
18271
18272 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * exceptions.cs: New regression tests.
18275
18276         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18277
18278 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18279
18280         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18281
18282 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18283
18284         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18285
18286         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18287
18288 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18289
18290         * mini.c (mono_jit_runtime_invoke): Init class in this
18291         method instead of trusting mono_jit_compile_method to
18292         do the work (because wrappers can be in object class)
18293
18294 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18295
18296         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18297
18298         * basic-long.cs: New regression test.
18299
18300 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18301
18302         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18303         and div/rem checks.
18304
18305 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18306
18307         * Makefile.am: fix miguel's change to build mono statically against
18308         libmono (track build dependencies).
18309
18310 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18311
18312         * cfold.c: Some glib versions do not have G_MININT32.
18313
18314 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18315
18316         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18317         with precision of tan, atan, sin and cos, and implemented related
18318         regressions tests (fixes bug 54467, but one new problem appeared and
18319         is not fixed yet).
18320
18321 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18322
18323         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18324
18325         * exceptions.cs: Add test for constant folding && division by zero.
18326
18327         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18328         since driver.c is in libmono too, so the optimization was useless.
18329
18330         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18331         variable to driver.c so the compiler can emit more efficient code to
18332         access them.
18333
18334 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18335
18336         * Makefile.am: don't distribute generated inssel.[ch] files.
18337
18338 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18339
18340         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18341         into the default appdomain. Fixes #58707.
18342
18343         * jit-icalls.c: Remove the broken approximation for truncl, doing
18344         no conversion is better.
18345
18346         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18347         Fixes #58863.
18348
18349 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18350
18351         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18352         of the mcrxr instruction which is not available on some processors
18353         even if it's documented to be. Implement add and sub overflow correctly
18354         (still not complete for long unsigned). Speed up icalls a bit.
18355
18356 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18357
18358         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18359         we run .cctor in the current domain instead of target_domain.
18360         
18361         Fixes bug #58558, .cctor not being called in -O=shared.
18362
18363 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18364
18365         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18366
18367 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18368
18369         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18370         which can be done with an imm8, do it that way.
18371         (mono_arch_output_basic_block): ditto for a jmp
18372         (mono_arch_emit_prolog): Computate maximum offset of a label.
18373
18374 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18375
18376         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18377         now tries to allocate prefered physical reg's for virtual
18378         regs. This reduces the number of emited spills/loads with
18379         20-30% on our core assemblies.
18380
18381 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18382
18383         * jit-icalls.c: truncl() is not needed and trunc() is
18384         the correct thing to do anyway (bug #58287).
18385
18386 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18387
18388         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18389         if available.
18390
18391 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18392
18393         * driver.c: enable loop optimizations by default.
18394
18395 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18396
18397         * mini-x86.c: fix calc of max loop size when aligning loops start.
18398
18399 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18402         the stack.
18403
18404 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18407         should set carry.
18408
18409         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18410
18411         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18412         
18413         * mini.c (inline_method): Allways inline some wrappers even if the cost
18414         is too large. Fixes #58785.
18415
18416         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18417         
18418 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18419
18420         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18421         (crichton@gimp.org). Beginning of support for sparc/linux.
18422
18423         * mini-sparc.c: Optimize retrieval of LMF address.
18424
18425 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18426
18427         * exceptions-ppc.c:  handle alloca in methods with clauses.
18428
18429 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18430
18431         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18432
18433 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18434
18435         * mini.c: Delegate most of the abort signal work to 
18436           mono_thread_request_interruption, which also handles Stop and Suspend
18437           states.
18438
18439 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18442         supports the save/restore lmf opcodes.
18443
18444 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18445
18446         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18447         by gcc-3.4 as well.
18448
18449         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18450
18451 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18454         methods which contain array accesses.
18455
18456         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18457         boundaries. Fixes #58537.
18458
18459         * iltests.il: Add regression test for #58537.
18460
18461 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18462
18463         * mini-x86.c (mono_arch_local_regalloc): Last part of
18464         fix for bug #58633 (releasing register to early).
18465
18466 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18467
18468         * basic-long.cs: Add new regression test.
18469
18470 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18471
18472         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18473         register too early on the chain.
18474
18475 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18476
18477         * mini.c (create_helper_signature): Use a helper function to reduce
18478         the code which needs to be written. Also set the calling convention of
18479         icalls on windows. Fixes #57840.
18480
18481 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18482
18483         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18484         exceptions-ppc.c: added helper function to get the instruction address
18485         from a signal handler context.
18486
18487 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18488
18489         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18490         from gonzalo.
18491
18492 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18493
18494         * helpers.c: Add new env variable to pass args to objdump.
18495         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18496
18497 2004-05-17  Radek Doulik  <rodo@ximian.com>
18498
18499         * Makefile.am (common_sources): added abcremoval.h so it get
18500         disted and daily mono packages on go-mono.com will build again
18501
18502 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18503
18504         * abcremoval.c: Fixed coding style, added copyright header.
18505
18506         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18507
18508         * mini.h: Added prototype for abc removal main function.
18509
18510         * build_relations_propagation_table.pl: Added copyright header.
18511
18512 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18513
18514         * basic-long.cs: reg test for complex ceq_long bug.
18515
18516 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18517
18518         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18519         reg in long and clob case (bug #58343). Fixed/added comments.
18520
18521 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18522
18523         * mini.c (mono_jit_runtime_invoke): Follow new convention
18524         of calling the invoke method with an function pointer.
18525
18526 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18527
18528         * ChangeLog: Fix author of memory leak patch.
18529
18530 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18531
18532         * Makefile.am: fix make dist as well...
18533
18534
18535 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18536
18537         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18538         on archs where pointers are 4 bytes long.
18539
18540         * Makefile.am: Added abcremoval.c source file.
18541
18542         * abcremoval.c: Added abcremoval.c.
18543
18544         * abcremoval.h: Added abcremoval.h.
18545
18546         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18547
18548         * inssel.brg: Enabled bounds check removal.
18549
18550         * mini.c: Added support for abcrem optimization.
18551
18552         * mini.h: Added abcrem optimization label.
18553
18554         * driver.c: Added support for abcrem optimization.
18555
18556         * propagated_relations_table.def: Added propagated_relations_table.def.
18557
18558 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18559
18560         * mini.c, cfold.c: fix style.
18561
18562 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18563
18564         * mini.c: handle issue with the low-level implementation of
18565         some long opcodes (bug #54209).
18566
18567 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18568
18569         * basic.cs: test for my new cmov stuff.
18570
18571 2004-05-13      Patrik Torstensson
18572
18573         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18574         opt and added peephole documentation.
18575
18576 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18577
18578         * tramp-ppc.c: rewrote the generic trampoline code.
18579
18580 2004-05-11      Patrik Torstensson
18581
18582         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18583
18584 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18585
18586         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18587
18588         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18589         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18590
18591         * mini.c: Add new icalls for AsAny marshalling.
18592
18593 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18594
18595         * tramp-ppc.c, mini-ppc.c: more cleanups.
18596
18597 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18598
18599         * mini.c: no warnings.
18600
18601 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18602
18603         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18604
18605 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18606
18607         * mini.c: In the thread abort signal handler, if the thread is in the
18608         process of being stoped, don't throw the Abort exception, just stop the
18609         thread.
18610
18611 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18612
18613         * tramp-ppc.c: removed old code.
18614
18615 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18616
18617         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18618         do some simple speed optimizations on ppc.
18619
18620 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18621
18622         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18623         and large offsets in load/store.
18624
18625 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18628         it causes regressions.
18629
18630 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18631
18632         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18633         support.
18634
18635 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18636
18637         * jit-icalls.c: remove warnings.
18638         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18639         speedups for unsafe code.
18640
18641 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18642
18643         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18644
18645 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18646
18647         * basic-calls.cs: Add new regression test.
18648
18649         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18650         more portable.
18651
18652         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18653
18654         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18655         is no longer used.
18656
18657 2004-05-06      Patrik Torstensson
18658
18659         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18660         long reg allocation in any reg (not only eax:edx) and implemented 
18661         long shl/shr ops in asm instead of helpers.
18662
18663 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * mini-sparc.h: Fix warnings.
18666
18667         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18668         stack.
18669
18670         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18671         separate statement for clarity.
18672
18673         * mini-sparc.c: Update status.
18674
18675 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18676
18677         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18678         here.
18679
18680 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18681
18682         * inssel-ppc.brg: another small pre-release workaround:
18683         we don't do overflow detection for long_sub_un.
18684
18685 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18686
18687         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18688         (also works around a weird ppc bug: 57957).
18689
18690 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18691
18692         * tramp-ppc.c: trampoline fixes.
18693
18694 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18695
18696         * mini-ppc.c: fixed typos.
18697
18698 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18699
18700         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18701         at the top of the stack. Fixed typos. Use a frame registers
18702         for all the methods with exception clauses.
18703
18704 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18705
18706         * exceptions-ppc.c: restore fp registers.
18707
18708 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18709
18710         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18711         order from the stack top (moved the stack room to save the
18712         return value for trace after the param area). Fixed corruption
18713         in restoring registers on unwind.
18714
18715 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18716
18717         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18718
18719 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18720
18721         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18722         and prolog/epilog for methods that use it. Allow
18723         enough param area room for varargs methods. Fix miguel's
18724         breakage in exception handling.
18725
18726 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18727
18728         * Makefile.am: run genmdesc only on current arch.
18729
18730 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18731
18732         * exceptions-x86.c:
18733         * mini-x86.h: fix the build on windows.
18734
18735 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18736
18737         * 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.
18738
18739         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18740
18741         * mini-exceptions.c: New file.
18742         
18743         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18744         Move some parts of the x86 exception handling code to an 
18745         arch-independent file so it can be shared with other ports.
18746
18747 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18748
18749         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18750
18751 2004-04-26  David Waite  <mass@akuma.org>
18752
18753         * driver.c: remove comma from end of enumeration declaration
18754
18755 2004-04-26  Jackson Harper  <jackson@ximian.com>
18756
18757         * driver.c: parse config file before loading first assembly. This
18758         allows the user gac to be enabled/disabled. 
18759         
18760 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18761
18762         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18763         simpler mechanism: we do not care what is encoded initially
18764         (branch absolute or relative), we care about the code and its
18765         target.  I kept the old code for reference for now.
18766
18767         The new code tries first to determine if the jump is anywhere in
18768         the -/+32 absolute meg range, if it succeeds, it encodes using the
18769         absolute branch;  If not, it tried to find something in the
18770         relative range, if not, it uses the handle_thunk code. 
18771
18772 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18773
18774         * exceptions-ppc.c: use the correct ip register on macosx.
18775
18776 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18777
18778         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18779
18780 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18781
18782         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18783         Raise exception on integer divide by zero by hand since the hw
18784         doesn't support it. Handle NaNs in FP compares.
18785
18786 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18787
18788         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18789         code reducing duplication between the platforms and enabled
18790         signal exception handling (on linux for now).
18791
18792 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18793
18794         * exceptions-ppc.c: more macosx support.
18795
18796 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18797
18798         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18799
18800 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18801
18802         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18803
18804 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18805
18806         * iltests.il: more tests.
18807
18808 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18811         vars as well.
18812
18813 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18814
18815         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18816
18817 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * liveness.c: Mark variables as volatile in all basic blocks reachable
18820         from exception clauses.
18821
18822 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18825         inlining.
18826
18827 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18828
18829         * iltests.il, basic.cs: more tests for regalloc.
18830
18831 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18832
18833         * iltests.il: Some tests for register allocation modifications
18834         I have locally.
18835
18836 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18837
18838         * exceptions.cs: Add regression test for bug #56782.
18839
18840         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18841         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18842         the beauty of fixing the same thing in 5 different files...
18843
18844 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18845
18846         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18847         methods.
18848
18849 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18850
18851         * mini.c: Add support for STRWLPARRAY marshalling convention.
18852
18853 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18854
18855         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18856         to init the context to setup the regs pointer).
18857
18858 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18859
18860         * exceptions-ppc.c: more exceptions work.
18861
18862 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18863
18864         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18865         not allowed.
18866
18867 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18868
18869         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18870         can use the memory directly.
18871
18872         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18873
18874         add x86_add_membase, x86_sub_membase, x86_mul_membase
18875
18876 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18877
18878         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18879         GENERAL_REGS they were also hardcoded for all PPC ports.
18880
18881         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18882
18883         Remove hard-coded limit for floating point registers, use
18884         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18885
18886         Notice that in MacOS X calling conventions you can fit a lot more
18887         floating point values in registers, so I should update the PInvoke
18888         test to excercise the passing of floating point values on the
18889         stack (currently broken).
18890         
18891 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18892
18893         * tramp-ppc.c (create_trampoline_code): Added
18894         JUMP_TRAMPOLINE_SIZE. 
18895         (ppc_magic_trampoline): Follow the pattern from
18896         x86_magic_trampoline: if code is set to zero, return. 
18897         (create_trampoline_code): Always pass MonoMethod to the jump
18898         trampoline, before it was passing a null.
18899         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18900         share the code with mono_arch_create_jit_trampoline. 
18901
18902         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18903         implemented.
18904         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18905         implemented.  
18906
18907         * cpu-g4.md: Added length for jmp instruction, the worst case
18908         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18909         for save_lmf).
18910
18911 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18912
18913         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18914
18915 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18916
18917         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18918         before each IL instruction.
18919
18920         * mini.c (CEE_BOX): Fix warnings.
18921
18922 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18923
18924         * mini.c: removed a few unused vars and extra whitespace.
18925
18926 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18927
18928         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18929         checks.
18930         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18931         index.
18932         (OP_GETCHR): use the above
18933         (CEE_LDELEMA): use the above.
18934
18935         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18936         version of the generic impl.
18937         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18938         (CEE_LDELEMA): use the above.
18939
18940 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18943         Fixes #56317.
18944
18945         * iltests.il: Added new regression test for #56317.
18946
18947 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18950         under NetBSD. Fixes #56450.
18951
18952         * liveness.c (update_gen_kill_set): Fix previous patch.
18953
18954 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18955
18956         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18957
18958 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18959
18960         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18961         ldsfld and ldsflda.
18962
18963         * inssel-sparc.brg: Add more optimizations.
18964
18965         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18966
18967 2004-04-01  Martin Baulig  <martin@ximian.com>
18968
18969         * mini.c (handle_box): New static function; moved the
18970         implementation of CEE_BOX here.
18971         (mono_method_to_ir): Added `constrained_call' variable.
18972         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18973         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18974         mono_method_get_constrained() to get the method.
18975
18976 2004-04-01  Martin Baulig  <martin@ximian.com>
18977
18978         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18979         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18980         (mono_method_to_ir): We don't need these macros anymore since
18981         mono_class_get_full() already takes care of it. 
18982
18983 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18984
18985         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18986         use @function (as doesn't accept #function here) and check the return
18987         value of system and stop if fails.
18988
18989 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18990
18991         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18992
18993 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18994
18995         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18996
18997         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18998
18999         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19000         #56223.
19001
19002         * basic-long.cs: Add test for negation of Int64.MinValue.
19003
19004 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19005
19006         * mini-sparc.c: Update status.
19007
19008         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19009
19010         * exceptions-sparc.c: Fix return value in filters.
19011
19012         * inssel-sparc.brg: Fix register allocation in some rules.
19013
19014 2004-03-28  Martin Baulig  <martin@ximian.com>
19015
19016         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19017         if neccessary.  
19018
19019 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19022         
19023         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19024         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19025         remove unused conv_u4 opcode.
19026
19027         * mini-x86.c: Remove valgrind workaround since it slows down things
19028         even when mono is not run under valgrind.
19029
19030 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * mini-sparc.c: Update status.
19033
19034         * inssel-sparc.brg: Add some optimizations.
19035
19036         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19037         future delay slot filling. Add support for varargs, tail calls and JMP.
19038
19039         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19040         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19041
19042         * inssel.brg: Fix register allocation in OP_ARGLIST.
19043
19044         * inssel.brg: Fix warnings.
19045
19046 2004-03-25  Martin Baulig  <martin@ximian.com>
19047
19048         * mini.c (inflate_generic_field): Removed.
19049         (mini_get_method): Removed, use mono_get_method_full(),
19050         (mini_get_class): Removed, use mono_class_get_full().
19051         (mono_method_to_ir): Pass our generic context to
19052         mono_field_from_token().        
19053
19054 2004-03-25  Martin Baulig  <martin@ximian.com>
19055
19056         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19057         of a `MonoMethod *'.
19058         (mini_get_method): Take a `MonoGenericContext *' instead
19059         of a `MonoMethod *'.
19060         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19061         a new local variable called `generic_context' which holds the
19062         current `MonoGenericContext *'; use it to lookup things.
19063
19064 2004-03-24  Martin Baulig  <martin@ximian.com>
19065
19066         * mini.c (mini_get_class): New static method; if we're inside a
19067         generic instance, inflate the class if neccessary.
19068         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19069
19070 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19071
19072         * iltests.il: New regression test for #55976.
19073
19074         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19075         #55976.
19076
19077 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19080         output.
19081
19082 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19083
19084         * liveness.c: Consider SSA stores as well as loads when making vars
19085         volatile.
19086
19087         * exceptions.cs: New regression tests for register allocation.
19088         
19089 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19090
19091         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19092         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19093           domain lock only to protect puntual access to data structures.
19094           Added access lock for sighash, jit_icall_hash_name, 
19095           jit_icall_hash_addr and domain->code_mp.
19096
19097 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19098
19099         * driver.c: Print SIGSEGV handling method.
19100
19101         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19102
19103         * mini.c (setup_jit_tls_data): Handle case when this is called
19104         multiple times for a thread.
19105
19106         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19107         is different from fbxx_un. Fixes #54303. Also use constants instead of
19108         magic numbers in a lot of places.
19109
19110 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * exceptions.cs: Fix cctor test when --regression is used.
19113
19114 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19115
19116         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19117         for Linux/ppc.
19118
19119 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19120
19121         * inssel-ppc.brg: fixed register assignments for some rules.
19122
19123 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19124
19125         * exceptions.cs: Add test for exceptions in static constructors.
19126
19127         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19128         static constructors outside the domain lock. Fixes #55720.
19129
19130 2004-03-17  Martin Baulig  <martin@ximian.com>
19131
19132         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19133         (inflate_generic_field): Take the `MonoMethod *' instead of the
19134         `MonoClass *' and added support for generic method.
19135         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19136         have a `field->parent->gen_params', only inflate the field if it's
19137         an open constructed type.
19138
19139 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19140
19141         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19142         exception object instead of the preconstructed ones.
19143
19144 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19145
19146         * mini.c: reverted changed to sigsegv_signal_handler commited
19147         accidentally in the previous patch.
19148
19149 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19150
19151         * mini.c:
19152         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
19153         running --aot with an old assembly.
19154
19155 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19156
19157         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
19158         point values.
19159
19160         * mini-sparc.c: Add support for v9 branches with prediction.
19161
19162 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
19163
19164         * mini.c (mini_init): #warning is GNUC only
19165
19166         * mini-sparc.h: implement __builtin_frame_address
19167         and __builtin_return_address for Sun C compiler
19168
19169 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19172
19173 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * basic-calls.cs: Add test for unaligned byref long argument passing.
19176
19177         * mini-ops.h: Add sparcv9 compare and branch instructions.
19178
19179         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19180         v9 instructions if we have a v9 cpu.
19181
19182         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19183         registers for global allocation.
19184
19185         * exceptions-sparc.c: Fixes.
19186         
19187 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * liveness.c (mono_analyze_liveness): Optimized version.
19190
19191         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19192
19193         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19194         sparc work.
19195
19196         * basic-float.cs basic-calls.cs: New regression tests.
19197
19198 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19201         sigaltstack implementation.
19202
19203         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19204         
19205         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19206         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19207
19208 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19209
19210         * mini.c: Fix warnings.
19211         
19212         * mini.c (mono_resolve_patch_target): New function which contains the
19213         arch independent part of the patching process.
19214
19215         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19216         patching code to a separate function.
19217
19218 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19219
19220         * mini.c (add_signal_handler): ifdef out on Windows
19221
19222 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19225         cpu-sparc.md: Add exception handling support + other fixes.
19226
19227         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19228         typed GC detection in --version.
19229
19230         * basic.cs exceptions.cs: New regression tests.
19231
19232         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19233         the arch specific code can store data during a compilation.
19234
19235         * mini-ops.h: Add OP_SETFRET.
19236
19237         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19238         function, register a separate icall for each arity, so the icalls can
19239         get a wrapper.
19240         
19241         * mini.c (mono_print_tree): Print negative offsets in a more readable
19242         form.
19243         
19244         * mini.c: Make signal handling work on sparc.
19245         
19246         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19247
19248         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19249
19250         * jit-icalls.c: Emulate truncl by aintl on solaris.
19251
19252         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19253
19254 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19257
19258 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19259
19260         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19261         a MarshalByRef type, inline a method that performs the check, taking into
19262         account that the object can be a proxy. Also implemented tow new opcodes:
19263         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19264         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19265         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19266
19267 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19268
19269         * mini-ppc.c: if a relative branch displacement is too big
19270         but it points to and area reachable with an absolute branch, 
19271         avoid the thunks.
19272
19273 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19274
19275         * mini.c: optimize small copies in cpblk.
19276
19277 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19278
19279         * basic-calls.cs basic-float.cs: New regression tests.
19280
19281         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19282         negative offsets from %fp. Implement localloc. Fix local register 
19283         allocation. Fix the case when the this argument needs to be saved to
19284         the stack. Implement some missing opcodes.
19285
19286 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * mini.c (mini_method_compile): Reenable global regalloc in methods
19289         with exception handlers.
19290
19291         * linear-scan.c (mono_varlist_sort): Fix warning.
19292
19293         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19294
19295         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19296         regalloc costs.
19297
19298         * liveness.c: Make all variables uses in exception clauses volatile, to
19299         prevent them from being allocated to registers. Fixes #42136.
19300
19301 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19304         causes regressions.
19305
19306         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19307         argument to mono_arch_regalloc_cost.
19308
19309         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19310         precisely.
19311
19312 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19315         Make the cost of allocating a variable to a register arch dependent.
19316
19317         * basic-calls.cs: Fix compilation of tests.
19318         
19319         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19320         helper function to cut back on the number of #ifdefs needed.
19321
19322         * mini-ppc.c: Fix compilation.
19323
19324         * basic-calls.cs: New regression tests.
19325
19326         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19327
19328         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19329         of l0 since that is callee saved.
19330
19331         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19332         to virtual calls.
19333
19334         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19335         of delay instruction.
19336
19337         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19338
19339         * mini.h (MonoCallInst): Add 'virtual' flag.
19340
19341         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19342
19343 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * *.cs: New regression tests.
19346
19347         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19348         work.
19349
19350         * mini.c (mono_runtime_install_handlers): Fix build.
19351
19352         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19353         'signal_stack_size' members.
19354
19355         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19356         alternate signal stack.
19357
19358         * exceptions-x86.c: Add stack overflow handling.
19359
19360         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19361         functions to arch independent code.
19362
19363         * mini.c (mono_print_tree): Print more detailed info for load_membase
19364         opcodes.
19365         
19366 2004-02-23  Martin Baulig  <martin@ximian.com>
19367
19368         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19369
19370 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19371
19372         * mini-x86.c: fixed reg allocation for div/rem.
19373
19374 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19375
19376         * driver.c (mono_main): Report some configuratio options on --version.
19377
19378 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19379
19380         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19381         low in the address space. Correctly flush memory in thunks where we
19382         output native code.
19383
19384 2004-02-20  Martin Baulig  <martin@ximian.com>
19385
19386         * mini.c (mini_get_method): New static method; inflate all generic
19387         methods and methods in open generic instances.
19388         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19389         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19390
19391 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19392
19393         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19394
19395         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19396
19397 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19398
19399         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19400
19401         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19402         it compile using Sun's compiler.
19403
19404 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * 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.
19407
19408         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19409
19410 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19411
19412         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19413         code.
19414         * mini-ppc.c: handle calls outside of the allowed range with thunks
19415         allocated using the code manager.
19416         * tramp-ppc.c: use the code manager to hold generated native code.
19417         Fixed the magic trampoline to just patch vtable entries.
19418
19419 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19422         independent file.
19423
19424 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19425
19426         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19427         PPC.
19428
19429         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19430         if we have a working __thread implementation.
19431
19432         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19433         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19434
19435 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19436
19437         * mini-x86.c: Fix compilation under gcc 2.
19438         
19439 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19440
19441         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19442         contains a call to the wrapped function.
19443
19444         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19445         OP_<CALL>_IMM opcodes, and use them under X86.
19446         
19447         * mini.c (mono_jit_find_compiled_method): Fix warning.
19448
19449         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19450
19451         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19452
19453         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19454         functionality to mini.c.
19455
19456         * mini.c (mono_create_jump_trampoline): New function to create a jump
19457         trampoline. Return a compiled method instead of a trampoline if it
19458         exists. Add a cache for jump trampolines.
19459
19460         * mini.c (mono_jit_find_compiled_method): New function to return a
19461         compiled method if it exists.
19462
19463         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19464         mono_arch_create_jit_trampoline.
19465
19466         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19467         a jump trampoline. Fixes #52092.
19468         
19469 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19470
19471         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19472         which is not up-to-date. Add check_corlib_version () instead.
19473
19474         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19475         have to call it.
19476         
19477         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19478         since newer valgrind versions do not need it.
19479
19480         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19481         compile a method with a given set of optimizations.
19482
19483         * mini.c: Compile icall wrappers on-demand instead of at startup.
19484
19485         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19486         wrapper for an icall.
19487
19488 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19491         #54063.
19492
19493         * iltests.il: Add test for non-empty stack before switch instruction.
19494
19495 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * mini.c: Add support for new stringbuilder marshalling conventions.
19498
19499         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19500
19501 2004-02-01  Martin Baulig  <martin@ximian.com>
19502
19503         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19504         in `ginst->mtype_argv'.
19505
19506 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19507
19508         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19509         facilitate grepping.
19510
19511 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19512
19513         * mini.c: fixed buglet in initobj generic implementation for references.
19514
19515 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19516
19517         * Makefile.am: make the version script conditional.
19518         * jit-icalls.c: handle missing truncl().
19519
19520 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * exceptions.cs: Add more tests for double->int conversion.
19523
19524         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19525         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19526
19527 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19528
19529         * driver.c: make --verbose --version emit an error
19530         if the loaded corlib doesn't match the runtime version.
19531
19532 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19533
19534         * mini-ppc.h: export ppc_patch().
19535         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19536         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19537         on par or better than on MacOSX.
19538
19539 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19542         mono_lookup_pinvoke_call.
19543
19544         * mini-x86.c: Under windows, the default pinvoke calling convention is
19545         stdcall. Fixes #52834.
19546
19547         * mini.c (optimize_branches): Add an upper bound to the number of
19548         iterations to prevent infinite loops on strange loops. Fixes #53003.
19549
19550 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19553         and ISINST. Fixes #52093.
19554
19555         * objects.cs (test_0_vector_array_cast): New tests.
19556         
19557 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19558
19559         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19560         checking in Array.Set ().
19561
19562         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19563         #52590.
19564
19565         * object.cs (test_0_multi_array_cast): New regression test.
19566
19567 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19568
19569         * exceptions-ppc.c: fix build on Linux/PPC.
19570
19571 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19572
19573         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19574         running under valgrind.
19575         (x86_magic_trampoline): Fix build bustage.
19576
19577         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19578         negative values as well. This is needed for the encoding of the line number
19579         info, since sometimes the line numbers are not in increasing order.
19580
19581 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19582
19583         * cpu-pentium.md (localloc): Increase the size of the localloc 
19584         instruction since it is a loop under Win32.
19585
19586         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19587         allocation.
19588
19589 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19590
19591         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19592         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19593         Max Horn (max@quendi.de). Fix file names in comments.
19594
19595 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19596
19597         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19598         avoid stack overflow.
19599         (replace_usage): Avoid uninitialized variable warnings.
19600
19601         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19602         and taking the address of valuetype variables.
19603
19604 2004-01-03  Patrik Torstensson
19605
19606         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19607         for other purposes than FP later on.
19608
19609 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19610
19611         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19612         of tail calls.
19613
19614 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19615
19616         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19617
19618 2003-12-30  Patrik Torstensson <p@rxc.se>
19619
19620         * mini-x86.h: Decreased number of availiable fp regs.
19621         Solves corner cases with FP spilling.
19622
19623 2003-12-23  Patrik Torstensson <p@rxc.se>
19624
19625         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19626         for floating point stack tracking / spilling on x86. 
19627         Fixes bug #49012.
19628         
19629         * basic-float.cs: added float mul overflow test.
19630
19631 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19634
19635 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19636
19637         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19638         supports for cond branches that overflow the immediate
19639         overflow offset. mcs can compile simple programs.
19640
19641 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19642
19643         * exceptions-ppc.c: exception handling support wip:
19644         finally handlers get run on exception.
19645
19646 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19647
19648         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19649         profiling.
19650
19651 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19652
19653         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19654         initial support for stack walking and unwinding.
19655
19656 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * driver.c (mono_main): Make corlib-out-of-sync message more 
19659         descriptive. Also remove verify_corlib call.
19660
19661 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19662
19663         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19664         not overlap with other call's arguments, too.
19665
19666 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19667
19668         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19669         move to arch-specific code the choice of arch-specific
19670         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19671         * mini.c: ensure emulation calls will not interleave
19672         with other calls.
19673
19674 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19675
19676         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19677         the magic trampoline stack frame is dropped before executing
19678         the new method.
19679
19680 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19681
19682         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19683         and integer to fp conversions. Added support for overflowing
19684         arguments on the stack. Reserve a couple more registers as temps.
19685         Added support for aot compilation (as output still needs to be
19686         tweaked, though).
19687
19688 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19689
19690         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19691         Don't overwrite return register in some corner cases.
19692
19693 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19694
19695         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19696         static constructors when AOT compiling.
19697
19698         * driver.c (mono_main): Call mono_check_corlib_version.
19699
19700 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19701
19702         * cpu-g4.md, basic.cs: fixed div target register.
19703
19704 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19705
19706         * mini-ppc.c, basic.cs: shl_imm fix with test.
19707
19708 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19709
19710         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19711         structures by value. Misc fixes.
19712         * objects.cs: more tests.
19713
19714 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19715
19716         * mini-ppc.c: lconv.ovf.i implemented.
19717
19718 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19719
19720         * mini.c:
19721         (mini_init): don't error out if someone already called g_thread_init.
19722
19723 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19724
19725         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19726         to be any type per the spec. Fix abnormal memory usage when
19727         the same object is repeatedly thrown.
19728
19729 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19730
19731         * mini.c: check for overruns in IL code.
19732
19733 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * TODO: Add/remove some todo entries.
19736
19737 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * driver.c (mono_main): Call mono_verify_corlib.
19740
19741 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19742
19743         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19744         This has been moved to mini.c
19745         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19746         type being casted is marshalbyref it could be a proxy, so instead of
19747         emitting the type check code, emit a call to a runtime method that will
19748         perform the check by calling CanCastTo if needed.
19749
19750 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19753         methods with large stack frames under Win32.
19754
19755 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19756
19757         * Makefile.am: Distribute regression tests.
19758
19759         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19760         at the end instead of inserting each variable into the sorted list.
19761
19762         * linear-scan.c (mono_varlist_sort): New helper function.
19763         
19764 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19765
19766         * mini.c: ensure arguments and locals are within bounds.
19767
19768 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19771         related fixes.
19772
19773 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * mini.c (mono_cprop_copy_values): Fix crash.
19776
19777         * aot.c: Set verbosity back to 0.
19778         
19779 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19780
19781         * regalloc.c: complete memory leak fix by Laurent Morichetti
19782         (l_m@pacbell.net).
19783
19784 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * driver.c (main_thread_handler): Revert the previous patch.
19787
19788         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19789         under valgrind.
19790
19791         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19792         memory from the memory pool.
19793
19794         * driver.c (main_thread_handler): Turn on all optimizations when
19795         --aot is used.
19796
19797         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19798         an array for better performance.
19799
19800         * regalloc.c (mono_regstate_assign): Fix memory leak.
19801
19802         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19803         serialize the debug info.
19804
19805         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19806         debug info from the serialized representation.
19807
19808         * aot.c: Save debug info into the generated file and load it when 
19809         loading a method.
19810
19811         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19812
19813 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19814
19815         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19816         More FP-related fixes.
19817
19818 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19819
19820         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19821         and register allocation buglet. Hello world now runs.
19822
19823 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19824
19825         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19826         * tramp-ppc.c: fixed class init trampoline.
19827         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19828
19829 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19830
19831         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19832         mini.c: more ppc changes/fixes.
19833
19834 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19835
19836         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19837         Also optimize the case when the arguments are the same in the caller 
19838         and in the callee.
19839
19840         * iltests.il: Add tests for tail calls with valuetype arguments.
19841
19842 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19843
19844         * mini-ppc.c: fixes for struct return type.
19845
19846 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19847
19848         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19849         mono_spillvar_offset() to arch-specific code.
19850
19851 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19852
19853         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19854
19855 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19856
19857         * exceptions-x86.c: Fix stack space leaks.
19858         
19859         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19860         registers from the lmf if the method has save_lmf set.
19861
19862 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19865         of icall wrappers into InvokeInDomain, since these are now per-domain.
19866
19867 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19868
19869         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19870         make some opcode emulation and intrinsic ops enabled/disabled 
19871         according to the architecture. More fixes.
19872
19873 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19874
19875         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19876
19877 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19878
19879         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19880         arch-specific handling for 'this' and struct return type to
19881         arch-specific code.
19882
19883 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19884
19885         * aot.c: prevent divide by zero error when reporting (it happened with
19886         Accessibility.dll).
19887
19888 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * mini.h (inst_switch): Remove unused macro.
19891
19892 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19893
19894         * aot.c:
19895         (load_aot_module): free 'info->methods' and 'info' properly. No more
19896         "free(): invalid pointer blah" messages when you have an old aot
19897         compiled assembly.
19898
19899 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19900
19901         * jit-icalls.c, mini.c: Added support for context static fields.
19902
19903 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini.c (mono_method_blittable): Methods which set LastError are not 
19906         blittable either. Fixes #51108.
19907         
19908 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19909
19910         * mini.c: flush icache.
19911         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19912
19913 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19916
19917 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19920         safe on IA32.
19921
19922         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19923         vararg calls.
19924
19925         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19926
19927 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19930         instruction when the result is discarded.
19931
19932         * iltests.il (test_0_div_regalloc): New regression test.
19933
19934         * arrays.cs: Fix compilation error.
19935
19936 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19937
19938         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19939         float rules to inssel-x86.brg: sane architectures with FP registers
19940         don't need to implement these rules.
19941
19942 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19945
19946 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19947
19948         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19949         implementation of 32 bit systems.
19950
19951 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19952
19953         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19954         (Jeroen Zwartepoorte).
19955
19956 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19959         the caller and the callee matches.
19960         
19961         * mini.c (mono_method_to_ir): Add comment.
19962
19963         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19964         signbit is missing on some platforms.
19965
19966 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19967
19968         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19969
19970         * mini.c (setup_jit_tls_data): Call the new function.
19971         
19972         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19973
19974         * mini-x86.c: Add experimental support for fast access to the lmf
19975         structure under NPTL/Linux 2.6.x.
19976
19977 2003-11-06  Martin Baulig  <martin@ximian.com>
19978
19979         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19980         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19981         the debugger.
19982
19983 2003-11-02  Martin Baulig  <martin@ximian.com>
19984
19985         * mini.c (inflate_generic_field): New static method.
19986         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19987         generic instance and the field is declared in a generic type, call
19988         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19989
19990 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19991
19992         * mini.h mini.c (mono_method_same_domain): New function to return
19993         whenever the caller and the callee are in the same domain.
19994
19995         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19996
19997 2003-10-30  Martin Baulig  <martin@ximian.com>
19998
19999         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20000         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20001         method parameters.
20002         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20003         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20004
20005 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20008         propagation.
20009
20010         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20011         object here, so it is in the correct appdomain etc.
20012
20013 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20014
20015         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20016         already done.
20017         (mono_method_to_ir): Avoid freeing the type created returned from
20018         mono_type_create_from_typespec, since it is put into an internal cache
20019         by the function. Fixes pointer.exe.
20020
20021         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20022         trampolines for icalls and pinvokes as well. Fixes #33569.
20023
20024 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20025
20026         * mini.c: Update after appdomain changes.
20027
20028         * mini.c (mono_jit_compile_method_inner): Allways compile native
20029         method wrappers in the root domain, since there can only be one
20030         instance of them, whose address is stored in method->info.
20031
20032 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20033
20034         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20035         environment variable. Instead detect automatically whenever running
20036         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20037         valgrind.h.
20038
20039 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20040
20041         * trace.c, trace.h: New files that implement the new trace option
20042         parsing. 
20043
20044         * driver.c: Document new --trace options.
20045
20046         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20047         mini-x86.c: Apply:
20048
20049         -       if (mono_jit_trace_calls)
20050         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20051
20052         * mini.h: prototypes.
20053         
20054 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20057
20058         * mini.c inssel.brg: Implement typedefbyref opcodes.
20059
20060         * mini.c (mono_jit_compile_method): Remove unused local variable.
20061
20062         * mini.c (mono_jit_compile_method_inner): Ditto.
20063         
20064 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20065
20066         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20067         
20068         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20069
20070 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * mini.c (mono_no_aot): Remove unused global variable.
20073
20074         * mini.c: Thread safety fixes.
20075
20076 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * mini.c (mono_create_class_init_trampoline): Add a lock around
20079         class_init_hash_addr.
20080
20081         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20082         #30073.
20083
20084         * mini.c: Decompose the NEWARR instruction before decomposing its
20085         arguments. Fixes #30073.
20086
20087 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20090         convention.
20091
20092 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20095
20096         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20097
20098         * driver.c: Add support for compiling icall wrappers to --compile.
20099
20100 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * inssel.brg: The empty value in class->interface_offsets is -1, not
20103         0. Fixes #49287.
20104
20105 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * objects.cs: New test for 'is' operator on an array of interfaces.
20108
20109 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20110
20111         * tramp-ppc.c: update trampoline code to support jumps
20112         and class initialization.
20113
20114 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20117
20118         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20119
20120         * inssel.brg (OP_UNBOX): Remove unused rule.
20121
20122         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20123         region instead of one for each method. Fixes #47813.
20124
20125 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20126
20127         * exceptions.cs (test_0_nested_finally): New regression test for
20128         nested exception handlers.
20129
20130         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20131
20132         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20133
20134         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20135         inlining.
20136
20137         * mini.c (mono_method_check_inlining): Make the inlining limit 
20138         configurable by an environment variable.
20139         
20140         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20141
20142         * mini.h: Bump AOT file version.
20143
20144         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20145         token, store the image along with the token, since the token might not 
20146         refer to the same image as the method containing the relocation, 
20147         because of inlining.
20148
20149 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
20150
20151         * mini.c (mono_precompile_assemblies): New function to compile
20152         all methods in all loaded assemblies.
20153
20154         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
20155
20156         * regalloc.h regalloc.c (MonoRegState): Change the type of 
20157         iassign and fassign to int*, since they can contain large negative
20158         values if the register is spilled. Also added some comments. Fixes
20159         #45817.
20160
20161         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
20162         under Win32. Fixes #42964.
20163
20164 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
20165
20166         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20167
20168         * aot.c: Added support for AOT compiling methods which contain calls
20169         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20170         handled.
20171         
20172         * driver.c (compile_all_methods): Run the compilation in a thread
20173         managed by mono. Fixes #44023.
20174
20175         * mini.c (mono_codegen): Print full method name in verbose output.
20176
20177         * mini-x86.c (mono_arch_patch_code): Fix warning.
20178         
20179         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20180         jumps, since the method we are jumping to might be domain-specific.
20181
20182         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20183
20184 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20185
20186         * inssel.brg: string chars are unsigned.
20187
20188 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * TODO: New todo item.
20191
20192         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20193         which calls mono_runtime_class_init and patches the call site to
20194         avoid further calls.
20195         (mono_arch_create_class_init_trampoline): New arch specific function 
20196         to create a class init trampoline.
20197         (create_trampoline_code): Generalized so it can create
20198         class init trampolines as well.
20199
20200         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20201         (mono_create_class_init_trampoline): New function to create and cache
20202         class init trampolines.
20203         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20204         vtable given the address of a class init trampoline. Used by the
20205         patching process.
20206         (mono_codegen): Generate a call to a trampoline instead of
20207         mono_runtime_class_init in LDSFLD[A].
20208         (mono_codegen): Add relocations for the new trampoline.
20209         
20210         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20211         MONO_PATCH_INFO_CLASS_INIT.
20212
20213         * mini.h: Bump AOT version number.
20214
20215         * aot.c: Create a copy of the loaded code instead of using the original
20216         so methods which call each other will be close in memory, improving
20217         cache behaviour.
20218         
20219         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20220         patch since it breaks the regression tests.
20221         
20222         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20223         for the register saving instruction sequence since the 
20224         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20225
20226 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * TODO: Fix todo item && remove another.
20229
20230 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20231
20232         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20233         previous checkin.
20234
20235         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20236         function of the module.
20237
20238         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20239         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20240         --no-aot command line option.
20241
20242 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20243
20244         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20245         by Bernie Solomon (bernard@ugsolutions.com).
20246
20247         * inssel.brg: Refactor the interface offset table related code into
20248         its separate functions and add support for the AOT case.
20249
20250 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20251
20252         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20253         
20254         * aot.c: Added mono_aot_verbose variable and made all debugging
20255         output depend on the value of this variable.
20256
20257         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20258         method_label and info_label.
20259
20260         * mini.h mini-x86.c aot.c: Added a new relocation type 
20261         MONO_PATCH_INFO_IID for klass->interface_id.
20262
20263         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20264         the MonoJitInfo structure.
20265
20266         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20267         a non-root appdomain in shared mode.
20268
20269 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20270
20271         * aot.c: make aot loader less verbose. Remove free of unused variable.
20272
20273 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20274
20275         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20276
20277         * .cvsignore: Added *.dll.
20278
20279         * mini.c (mono_print_tree_nl): New function callable while debugging.
20280
20281         * mini.c (mono_print_code): Export this.
20282
20283         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20284         patched code.
20285
20286 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20287
20288         * mini.h (MonoCompile): Added 'jit_info' field.
20289
20290         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20291         the cfg structure, since it is needed by the AOT compiler.
20292
20293         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20294
20295         * aot.c: A major rewrite. Changes include:
20296         - save exception tables for methods which have them.
20297         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20298         to g_module_symbol.
20299         - reworked the file format so it is now much smaller and needs
20300         fewer relocation entries.
20301         
20302 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * aot.c (load_aot_module): Fix build bustage on platforms without
20305         Boehm GC.
20306
20307 2003-09-04  Martin Baulig  <martin@ximian.com>
20308
20309         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20310
20311 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20312
20313         * TODO: Some new optimization ideas.
20314
20315         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20316
20317         * aot.c: Save the optimization flags used to compile the code into
20318         the AOT module.
20319
20320         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20321         support emitting domain specific code.
20322         
20323         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20324         no longer domain neutral. It can be made domain neutral by compiling 
20325         with --optimize=shared.
20326
20327         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20328         between appdomains.
20329
20330         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20331         loading of AOT code.
20332
20333         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20334         
20335         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20336         if there is no domain neutrality information.
20337
20338 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20341         format version into the generated library.
20342
20343         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20344         callee method into the caller since one of them could be shared.
20345
20346         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20347         system exceptions from AOT code now works.
20348
20349         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20350         method if it is domain neutral and the callee is not.
20351
20352         * graph.c (cfg_emit_one_loop_level): Fix warning.
20353
20354 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20355
20356         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20357         last checkin.
20358
20359 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20360
20361         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20362         is needed  by code which is executed before mono_runtime_init ().
20363         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20364         
20365         * mini.c (mono_thread_abort): Fix warning.
20366         (mono_jit_compile_method): Call static constructor in the AOT case too.
20367
20368         * aot.c (mono_compile_assembly): Fix warning.
20369
20370 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20371
20372         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20373
20374 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20375
20376         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20377
20378         * cpu-pentium.md: Fix the length of call opcodes so they include the
20379         ESP restoring instruction. Fixes #47968.
20380
20381 2003-08-28  Martin Baulig  <martin@ximian.com>
20382
20383         * mini-x86.c (mono_arch_call_opcode): Added support for
20384         MONO_TYPE_GENERICINST.
20385
20386         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20387
20388 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20389
20390         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20391         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20392
20393         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20394         metadata_section.
20395
20396 2003-08-26  Martin Baulig  <martin@ximian.com>
20397
20398         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20399         when reporting an error, set this to the actual error location.
20400         (mono_method_to_ir): Report the correct error location if
20401         get_basic_blocks() returned an error.
20402
20403 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * mini.c (mono_type_blittable): OBJECT is not blittable.
20406         (mono_method_blittable): Methods which have marshalling descriptors
20407         are not blittable either. Fixes #47842.
20408
20409 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * driver.c mini.c: Use an environment variable instead of a global 
20412         variable. Also fix the build.
20413
20414         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20415         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20416         reporting this. 
20417
20418         * driver.c mini.c: Added --with-valgrind option to turn off some
20419         code which prevents mono from running under valgrind.
20420
20421         * mini.c (mono_emit_call_args): Fixed warning.
20422
20423         * mini.c (mono_emulate_opcode): Fixed warning.
20424
20425 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20426
20427         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20428         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20429         regalloc.c, regalloc.h: specify available registers in arch-specific
20430         code and support floats in the regallocator (patch by Laurent Morichetti 
20431         <l_m@pacbell.net>)
20432
20433 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20434
20435         * mini.c: mono_thread_current() can be called only after
20436         mono_runtime_init(): rearrange code to not call it early on.
20437
20438 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20439
20440         * mini.c: allocate jump tables in the code mempools.
20441
20442 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20443
20444         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20445         freed.
20446
20447 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20448
20449         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20450         12 to 16.  This fixes bug #47453.
20451
20452
20453 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20454
20455         * mini-ppc.c: fixed indexed load and unsigned compares.
20456
20457 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20458
20459         * mini.c: reenabled installation of handler for
20460           thread abort signal.
20461
20462 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20463
20464         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20465         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20466         until it's fixed and actually useful.
20467
20468 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20469
20470         * inssel-long32.brg: couple more opcodes implemented.
20471
20472 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20473         
20474         * mini-sparc.c: Even more opcodes implemeted.
20475
20476 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20477
20478         * mini-sparc.c: More opcodes implemented.
20479
20480 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20481
20482         * mini-sparc.c: More opcodes implemented.
20483
20484 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20485
20486         * inssel-sparc.brg: Add some needed rules.  Direct
20487         copy from PPC.
20488         * Makefile.am: Use inssel-sparc.brg
20489         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20490         an assert happy for now.
20491
20492 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20493
20494         * mini-sparc.c: Fixed compile errors.
20495         * exceptions-sparc.c: Same.  We now produce a mono binary 
20496         on sparc-linux.  Yea.
20497
20498 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20499
20500         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20501         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20502         They compile, but do not work.
20503
20504 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20505
20506         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20507         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20508         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20509         (ct@gentoo.org).
20510
20511 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20512
20513         * mini.c: more opcodes implemented and better support for generics.
20514
20515 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20516
20517         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20518         * mini.c, mini.h: first cut at generics support: some new instructions 
20519         added and changed the behaviour of some of the existing ones.
20520
20521 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20522
20523         * mini.c: Removed definition of metadata_shared mutex here.
20524
20525 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20526
20527         * mini-x86.c: make vararg calls work for instance methods.
20528
20529 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20530
20531         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20532         returns the arguments in a separte list, now.
20533
20534 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20535
20536         * aot.c, mini.c: updates for array type representation changes.
20537
20538 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20539
20540         * mini.c: register function to perform jit shutdown.
20541
20542 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20543
20544         * mini.c: use a faster allocator if possible.
20545
20546 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20547
20548         * aot.c: some cleanups and portability changes.
20549
20550 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20551
20552         * mini.c: use faster allocation for CEE_BOX if possible.
20553
20554 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20555
20556         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20557         Moved inlined mempcy code to its own function so that is can be
20558         reused. Added an inline memset function as well (optimized initobj).
20559         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20560
20561 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20562
20563         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20564
20565 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20566
20567         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20568         arch code can setup the cpu for CLR execution, if needed.
20569         We use it on x86 to set the precision of FP operations.
20570
20571 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20572
20573         * mini.c: disable some optimizations if we can guess they'll cost too
20574         much for a given method.
20575
20576 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20577
20578         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20579         
20580 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20581         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20582         info collection support.
20583
20584 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20585
20586         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20587         is now implemented in the profiling API. Get rid of a couple of
20588         unnecessary global variables.
20589
20590 2003-06-15  Nick Drochak <ndrochak@gol.com>
20591
20592         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20593         * cpu-g4.md: add op_bigmul and op_bigmul_un
20594         * cpu_pentium.md: add op_bigmul_un
20595         * inssel-long32.brg: add rule for unsigned bigmul
20596         * mini-ops.h: define OP_BIGMUL_UN
20597         * mini-x86.c: THE BUG: handle (un)signed properly
20598         * mini.c: choose unsigned opcode if needed.
20599         This set of patches fixes bug #44291
20600
20601 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20602
20603         * mini.c (optimize_branches): improved to handle all kinds of
20604         conditional branches.
20605
20606 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20607
20608         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20609         don't raise exceptions.
20610
20611 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20612
20613         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20614         to arch-specific files.
20615
20616 2003-06-09  Martin Baulig  <martin@ximian.com>
20617
20618         * Makefile.am (libs): Added $(LIBGC_LIBS).
20619
20620 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20621
20622         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20623         and OP_ATAN (fixes bug#44293).
20624
20625 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20626
20627         * Makefile.am, mini-x86.c: rename cpu description array to
20628         pentium_desc, since some compilers define the 'pentium' preprocessor
20629         symbol.
20630
20631 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20632
20633         * mini.c (mini_select_instructions): add explicit branch if the
20634         following block is not the false target of a conditional branch -
20635         we need this with any optimization that reorder or remove bblocks
20636
20637         * mini.c (optimize_branches): bug fixes
20638
20639 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20640
20641         * mini.c (mono_method_to_ir): inline static readonly fields
20642
20643         * ssa.c (fold_tree): start cfold support for long (very simple
20644         cases only)
20645
20646         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20647
20648 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20649
20650         * inssel.brg: fixed memcpy (bug #44219).
20651
20652 2003-06-05  Dick Porter  <dick@ximian.com>
20653
20654         * driver.c: Set the glib log levels to not abort if g_message
20655         recurses.
20656
20657         g_set_prgname() has to happen before mini_init() so that the
20658         process handle gets the info.
20659         
20660 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20661
20662         * driver.c: add intrins to the default optimizations to get wider
20663         exposure.
20664
20665 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20666
20667         * mini.h: some large basic blocks will overflow a 16-bit
20668         integers for symbolic registers.
20669
20670 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20671
20672         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20673         (mono_arch_output_basic_block): fix bug 43499 
20674
20675 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20676
20677         * mini.c: kill duplicated definition of mono_debug_format.
20678
20679 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20680
20681         * mini-x86.c, arrays.cs: fixed register allocation bug.
20682
20683 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20684
20685         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20686
20687         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20688
20689 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20690
20691         * mini.c:
20692         (print_method_from_ip): also print source location information if
20693         available.
20694
20695 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20696
20697         * mini.c (mono_find_block_region): bug fix in region code
20698         (mini_method_compile): enable removing unreachable code again, but
20699         only in methods without exception clauses.
20700
20701 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20702
20703         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20704         Implemented arglist opcode and handling of TypedReference type.
20705         Fixed x86 call convention when a structure is returned.
20706         Minimal support for calling static vararg methods.
20707
20708 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20709
20710         * mini.c (mini_method_compile):  always remove unreachable code,
20711         because the code in them may be inconsistent  (access to dead
20712         variables for example).
20713
20714 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20715
20716         * driver.c, debug-mini.c: warning fixes.
20717
20718 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20719
20720         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20721
20722 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20723
20724         * mini.c: thread-static fields are registered in mono_class_vtable(),
20725         so ensure the function is called before checking for them.
20726
20727 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20728
20729         * mini.c (optimize_branches): fix for bug 43586
20730
20731         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20732         overflow (fixes Bug #43639)
20733
20734 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20735
20736         * mini.c, objects.cs: allow the use of stobj for primitive types.
20737
20738 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20739
20740         * mini.c: be less strict about argument checking until we support
20741         running the verifier.
20742
20743 2003-05-27  Nick Drochak <ndrochak@gol.com>
20744
20745         * basic-long.cs: tests for (ulong)int * (ulong)int also
20746         * mini.c: use the same trick for (ulong)int * (ulong)int
20747
20748 2003-05-27  Nick Drochak <ndrochak@gol.com>
20749
20750         * basic-long.cs: add regression test for (long)int * (long)int
20751         * cpu-pentium.md: add op_bigmul specification
20752         * inssel-long32.brg: add OP_BIGMUL rule
20753         * mini-ops.h: add OP_BIGMUL
20754         * mini-x86.c: register allocator: handle case where src1 needs to be
20755         in EAX.
20756         * mini.c: substitute special BIGMUL opcode in the tree for 
20757         (long)int * (long)int
20758
20759 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20760
20761         * jit-icalls.c: call the type ctor on field access if needed.
20762
20763 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20764
20765         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20766         to a method (including results of ldelema, bug#43207).
20767
20768 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20769
20770         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20771         colors to show exception handler blocks.
20772
20773         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20774         (fix for pinvoke7.cs).
20775
20776 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20777
20778         * mini.h, mini.c: ensure correct initialization order for types that
20779         require it. Prepare for lazy compilation of jit icall wrappers.
20780         Provide a name for opcode emulation to reduce unneeded mallocing.
20781
20782 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20783
20784         * mini-x86.c: better register restoring code and profiling
20785         support for tail calls.
20786
20787 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20788
20789         * mini.h, driver.c: prepare for leaf methods optimization.
20790
20791 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20792
20793         * mini.c: get targets of branches before converting a method.
20794
20795 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20796
20797         * mini.c (optimize_branches): added some experimental code (disbaled) 
20798
20799 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20800
20801         * mini.c (optimize_branches): fix branch to branch optimization 
20802
20803         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20804
20805         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20806
20807         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20808
20809         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20810         if needed.
20811
20812 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20813
20814         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20815         enable use of interface variables again.
20816
20817         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20818         I1 to registers because there is no simply way to sign extend 8bit
20819         quantities in caller saved registers on x86.
20820
20821         * inssel-float.brg: set costs of some rules to 2 so
20822         that monobure always select the arch. specific ones if supplied,
20823         regardless of the order we pass the files to monoburg.
20824
20825 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20826
20827         * mini.c, mini-x86.c: since the magic trampoline for jumps
20828         can't patch the code directly, we do it as soon as the
20829         method gets compiled.
20830
20831 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20832
20833         * mini-x86.c, mini.h: introduce a new patching method
20834         to support CEE_JMP and tail calls.
20835         * mini.c: obey tail.call. Don't precompile methods target
20836         of CEE_JMP.
20837         * tramp-x86.c: new trampoline code to handle methods
20838         reached through a jump.
20839
20840 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20841
20842         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20843         bit values to registers
20844
20845 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20846
20847         * mini.c (mono_compile_get_interface_var): share interface
20848         variables if possible.
20849
20850 2003-05-16  Martin Baulig  <martin@ximian.com>
20851
20852         * debug-mini.c (mono_init_debugger): New function to initialize
20853         the debugger.  This is not in the debugger since it needs to
20854         access some of mini's internals.
20855
20856 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20857
20858         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20859
20860 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20861
20862         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20863         for value type handling.
20864
20865 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20866
20867         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20868         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20869
20870 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20871
20872         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20873           the constructor through a proxy.
20874
20875 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20876
20877         * jit-icalls.c, inssel.brg: fixes to array element address
20878         calculations.
20879
20880 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20881
20882         * mini-x86.c (is_regsize_var): allocate pointer to registers
20883
20884 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20885
20886         * driver.c: fixed typo, added intrins to the set of optimizations
20887         tested with regressions.
20888
20889 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20890
20891         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20892         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20893         test case.
20894
20895 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20896
20897         * inssel.brg: remove some common pop instructions without side effects
20898
20899 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20900
20901         * inssel-x86.brg: fixed thinko in int to double conversions.
20902
20903 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20904
20905         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20906
20907 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20908
20909         * inssel-long32.brg: two more missing instructions.
20910
20911 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20912
20913         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20914         if not already set.
20915
20916 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20917
20918         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20919         correctly.
20920
20921         * basic-float.cs: Added tests for negative zero.
20922
20923 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20924
20925         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20926         a couple of missing operations for long casts, with test cases.
20927
20928 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20929
20930         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20931
20932 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20933
20934         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20935         code size estimation.
20936
20937 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20938
20939         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20940         abstract methods (fix bug 42542)
20941
20942         * aot.c: add ability to handle array types
20943         
20944 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20945
20946         * mini.c: Call the _specific versions of the object allocation
20947         functions if possible.
20948
20949 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20950
20951         * driver.c: call setlocale ().
20952
20953 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20954
20955         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20956         windows build.
20957
20958 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20959
20960         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20961
20962         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20963         wrappers (fix bug 42122)
20964
20965 2003-05-04  Martin Baulig  <martin@ximian.com>
20966
20967         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20968
20969         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20970         s/mini_set_defaults/mono_set_defaults/g.
20971
20972 2003-05-04  Martin Baulig  <martin@ximian.com>
20973
20974         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20975
20976 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20977
20978         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20979         (reported by Don Roberts).
20980
20981 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20982
20983         * mini.c: temporarily work around two bugs for this release.
20984
20985 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20986
20987         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20988         that contains -export-dynamic and it makes using the ld script
20989         useless.
20990         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20991
20992 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20993
20994         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20995         specific cpu.
20996
20997 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20998
20999         * mini.c: make sure leave calls all the needed finally blocks,
21000         even when the target jumps out of multiple exception clauses.
21001
21002 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21003
21004         * ldscript, Makefile.am: add linker script to reduce the number of
21005         exported symbols (should also fix the issues with libwine defining
21006         some of the same symbols in io-layer).
21007
21008 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21009
21010         * driver.c (mini_main): Avoid assertion when no file name is given on 
21011         the command line.
21012
21013 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21014
21015         * driver.c: added --version/-V command line option.
21016         Added the inline optimization in the regression tests.
21017
21018 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21019
21020         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21021         to the type in the method signature (fixes bug#42134).
21022
21023 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21024
21025         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21026
21027 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21028
21029         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21030
21031 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21032
21033         * driver.c: fixed bug #42100.
21034
21035 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21036
21037         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21038
21039 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21040
21041         * mini.c: moved most of the code required to do inlining to its own
21042         function so it can be reused. Inline also ctors if appropriate.
21043
21044 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21045
21046         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21047         the runtime can call mono API functions.
21048
21049 2003-04-27  Martin Baulig  <martin@ximian.com>
21050
21051         * debug-mini.c (mono_debug_init_method): Added
21052         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21053         send a notification to the debugger.
21054
21055         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21056         running in the Mono Debugger, just pass the breakpoint number to
21057         mono_debug_init_method().
21058
21059         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21060
21061 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21062
21063         * mini.c: allow some more unsafe compares.
21064
21065 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21066
21067         * mini-x86.c, Makefile.am: make distcheck works (partially from
21068         a patch by Richard Lee <r.h.lee@attbi.com>).
21069         * regset.c, regset.h: removed, they are unused.
21070
21071 2003-04-25  Dick Porter  <dick@ximian.com>
21072
21073         * driver.c: Usage reports the name as 'mono' not 'mini'
21074         * exceptions-x86.c: Build and run on freebsd
21075
21076 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21077
21078         * Makefile.am: install the program with the 'mono' name and
21079         the library as libmono instead of mini and libmini.
21080
21081 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21082
21083         * driver.c: provide the APIs for the embedding interface of the old jit.
21084
21085 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21086
21087         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21088
21089 2003-04-23  Martin Baulig  <martin@ximian.com>
21090
21091         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21092
21093         * driver.c: Added `--debug' command line argument to enable
21094         debugging support.
21095
21096 2003-04-23  Martin Baulig  <martin@ximian.com>
21097
21098         * debug.[ch]: Removed.  The code is now in
21099         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21100
21101         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21102         last six months.
21103
21104 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21105
21106         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21107
21108 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21109
21110         * mini.c:
21111         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21112         mono_domain_finalize.
21113         (mini_method_compile): use mono_method_profile* if the the option is
21114         enabled.
21115
21116 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21119         methods with their wrapper.
21120
21121         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21122         methods with their wrapper.
21123
21124         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21125         their wrapper.
21126
21127         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21128         wrapper.
21129
21130         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21131         methods.
21132
21133 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21134
21135         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21136
21137 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21138
21139         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21140         of the mempool. This is slightly faster and uses less memory
21141
21142 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21143
21144         * mini.c: avoid O(n) allocation for variables.
21145
21146 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21147
21148         * mini.c: handle items on the stack after inlining methods.
21149
21150 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21151
21152         * mini.c: make the method->opcode optimization dependent
21153         on MONO_OPT_INSTRINS and do it lazily.
21154
21155 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21156
21157         * driver.c: print overall results at the end of regression run.
21158
21159 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21160
21161         * inssel.brg: don't overwrite symbolic registers.
21162
21163 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21164
21165         * inssel-x86.brg: fix conversion from long to float.
21166
21167 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21168
21169         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21170
21171 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21172
21173         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21174
21175         * driver.c: Added --print-vtable option as in the old JIT.
21176
21177 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21178
21179         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21180
21181 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21182
21183         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21184
21185 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21186
21187         * mini.c regalloc.c regalloc.h: Fix memory leak.
21188
21189 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21190
21191         * aot.c (mono_aot_get_method): register all used strings
21192
21193 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21194
21195         * mini.c: always intern strings references with ldstr at compile time.
21196
21197 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21198
21199         * Makefile.am: add BUILT_SOURCES.
21200
21201 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21202
21203         * driver.c: give a better error message when the assembly to execute
21204         doesn't have an entry point.
21205
21206 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21207
21208         * Makefile.am: added hack for automake
21209
21210         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21211         correct sematics.
21212
21213         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21214
21215 22003-04-07  Martin Baulig  <martin@ximian.com>
21216
21217         * Makefile.am: Added Makefile.am.
21218
21219         * debugger-main.c: Removed, this is now in the debugger where it
21220         belongs.
21221
21222         * mini.pc.in: Call this package `mini' for the moment.
21223
21224
21225
21226
21227
21228
21229
21230
21231
21232
21233
21234
21235
21236
21237