2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4         
5         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
6         wrappers.
7
8         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
9         remoting-invoke-with-check wrappers, which are not needed when running with
10         full-aot, since it doesn't support remoting.
11         
12 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
13
14         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
15
16         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
17         method info, it is not used anymore.
18
19         * mini.h: Bump AOT file format version.
20         
21         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
22         word smaller.
23
24         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
25         change above.
26         
27         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
28
29         * mini.h: Bump AOT file format version.
30         
31 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
32
33         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
34         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
35         iphone.
36
37         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
38         of CKFINITE and FBGE for VFP.
39
40 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c: Don't align code to 16 bytes on arm.
43         
44         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
45         before the methods they belong to.
46
47         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
48         the full-aot case if possible, since the trampoline will be called right 
49         away.
50
51         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
52         trampolines to 1024 after the change above.
53
54         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
55         trampoline to save 8 bytes per trampoline.
56
57         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
58         change above.
59
60 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
61
62         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
63
64 2009-06-08  Martin Baulig  <martin@ximian.com>
65
66         * debug-mini.c
67         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
68         (_mono_debugger_throw_exception): Don't make this static.
69         (_mono_debugger_unhandled_exception): Likewise.
70         (mono_debugger_handle_exception): Moved to mini-exceptions.c
71
72         * debug-mini.c
73         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
74         (_mono_debugger_throw_exception): Add function prototype.
75         (_mono_debugger_unhandled_exception): Likewise.
76
77         * mini-exceptions.c
78         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
79         arg; return the first exception handler if the exception is caught
80         and we're running inside the debugger.
81         (mono_debugger_handle_exception): Moved here from debug-mini.c;
82         improve exception handle inside runtime-invoke, check whether the
83         exception is actually caught in the method being invoked and not
84         by the runtime-invoke-wrapper.
85
86 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
87
88         * image-writer.c: Improve support for the osx assembler.
89
90         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
91         support them.
92
93 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
94
95         * image-writer.c (append_subsection): Don't align subsections of the
96         debug_line section as a workaround.
97
98         * dwarfwriter.c: Emit line number info in the AOT case as well.
99
100 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
101
102         This patch is contributed under the terms of the MIT/X11 license
103
104        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
105        code_len <= code_size
106
107 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
108
109         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
110
111 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
112
113         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
114         invoke wrappers, we now use trampolines instead.
115
116 2009-06-04  Mark Probst  <mark.probst@gmail.com>
117
118         * mini-darwin.c: The exception thread must not be registered with
119         the GC.
120
121 2009-06-04  Mark Probst  <mark.probst@gmail.com>
122
123         * mini-gc.c: Disable the code because it makes SGen crash.
124
125 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
126
127         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
128         instead of asserting.
129
130 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
131
132         * aot-compiler.c (mono_compile_assembly): Move the creation of the
133         output file after the code has been compiled.
134
135 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
136
137         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
138
139 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
140
141         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
142         entries distinction to simplify the code.
143
144         * mini.h: Bump AOT file format version.
145         
146 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
147
148         * objects.cs: Fix the signature of one of the tests.
149
150         * mini.c (mini_create_ftnptr): New helper function, moved here from
151         object.c.
152         (mini_get_addr_from_ftnptr): Ditto.
153         (mini_init): Install the new helpers.
154
155 2009-05-28  Martin Baulig  <martin@ximian.com>
156
157         Correctly initialize the debugger when embedding Mono.
158
159         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
160         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
161         see documentation in mini_debug_running_inside_mdb().
162
163         * debug-debugger.c
164         (mini_debug_running_inside_mdb): New function to check whether
165         we're running inside mdb.
166
167         * mini.c (mini_init): Call mini_debugger_init() if we're running
168         inside the debugger.
169
170         * driver.c (mono_main): Moved the call to mini_debugger_init()
171         into mini_init() to make this work when embedding Mono.
172
173         * debug-debugger.c (mini_debugger_init): Warn about duplicate
174         calls to mini_debugger_init().
175
176         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
177         mono_debugger_main() -> mini_debugger_main() and put them inside a
178         `MONO_DEBUGGER_SUPPORTED' conditional.
179
180 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
183         this is no longer in use.
184         * mini.h: Same.
185
186 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
187
188         * mini-sparc.c (add_outarg_load): Fix the sparc build.
189
190         * aot-compiler.c (emit_method_code): Always write out C style symbols for
191         methods.
192
193 2009-05-27  Martin Baulig  <martin@ximian.com>
194
195 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
198         long_conv_to_r_un to 64 bits.
199
200         * cpu-x86.md: Increase the instruction size due to the changes.
201
202         * iltests.il.in: Add regression test.
203
204         Fixes #467201.
205
206 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
207
208         * objects.cs: Move the previous test from basic.cs to here.
209
210 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
211
212         * basic.cs: Add regression test for #506915.
213
214 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
215
216         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
217         optimization we must check the bb of the first byte of stobj as
218         it's the only one set in cil_offset_to_bb.
219
220         Fixes #506915.  
221
222 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
223
224         * image-writer.c: Fix pointer directive on ppc64.
225
226 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
227
228         * image-writer.c (asm_writer_emit_section_change): Avoid using
229         .bss subsections on ppc too.
230
231 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
232
233         * image-writer.c: Fix the definition of TARGET_ASM_....
234         
235         * image-writer.c: Fix the emission of assembler directives in the last
236         change.
237
238         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
239         exception throwing code to accomodate ppc64.
240
241         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
242         size to work on ppc64 too.
243
244         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
245         too.
246
247         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
248         the assembler dialect instead of using platform specific defines.
249
250 2009-05-22  Geoff Norton  <gnorton@novell.com>
251
252         * mini-arm.c (get_call_info): If a structure is split between the stack
253         and argument registers, we should not advance the stack pointer by the entire
254         native size, but just by the amount that spilled.
255
256 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
257
258         * mini-arm.c (get_call_info): Handle structures with alignment requirements
259         correctly.
260
261 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
262
263         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
264         wrappers normally.
265         
266         * aot-compiler.c (add_extra_method): Fix up the collection of extra
267         methods so wrapper don't get added twice.
268         (add_generic_instances): Don't add methods of arrays.
269
270         * generics.cs: Mark one test as !FULLAOT.
271
272 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
273
274         * mini-x86.c (emit_move_return_value): Remove unused vars.
275
276 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
277
278         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
279         decomposing 8 bytes structs into a LCALL.
280
281         * mini-x86.c (emit_move_return_value): We no longer push the vtype
282         pointer for where to store the returned regs.
283
284         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
285         state the concern.
286
287         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
288
289 2009-05-20  Miguel de Icaza  <miguel@novell.com>
290
291         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
292         without getenv.
293
294 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
295
296         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
297
298         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
299         generics.
300
301 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
302
303         * local-propagation.c (mono_local_cprop): Avoid local propagation
304         across paired add/sub if the first instruction dest reg is it's
305         source reg. For example:
306
307         int_add_imm R12 <- R12 [1] clobbers: 1
308         int_sub_imm R42 <- R12 [1] clobbers: 1
309
310         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
311         maintain the math identify.
312
313         Fixes #505375.
314
315 2009-05-20  Andreia Gaita  <avidigal@novell.com>
316
317         * Makefile.am: avoid going on the network just to get the revision,
318         use git log instead
319
320 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
321
322         Fixed estimate for short branches on amd64 (they were off mark, and
323         enabling call prolog-epilog instrumentations caused assertions).
324         * mini.h (struct MonoBasicBlock): added max_length field to hold the
325         estimate for the maximum length of this basic block.
326         * mini-amd64.c:
327         - mono_arch_emit_prolog: compute max_length for each basic block
328           (instead of max_offset), and inflate size estimate also for entry bb
329           in case of code instrumentation.
330         - mono_arch_output_basic_block: get rid of "cpos" (the current
331           estimated "position" in the code), and always use "offset" instead,
332           which is accurate; at the beginning of the function quickly recompute
333           max_offset for all the remaining blocks, starting from the current
334           cfg->code_len (which is correct, and not estimated) and using the
335           estimated block lengths computed previously.
336
337 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
338
339         * exceptions-ppc.c: Remove the caching from the trampoline creation 
340         functions, it is already done in the caller.
341
342         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
343
344         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
345         MONO_ARCH_GSHARED_SUPPORTED define.
346
347         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
348
349         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
350         function.
351
352 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
353
354         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
355         call to mono_marshal_get_rgctx_invoke ().
356
357         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
358         mono_marshal_get_static_rgctx_invoke (), all platforms which support
359         gshared use the static rgctx trampolines now.
360         
361         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
362         platform supports it.
363
364 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
365
366         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
367
368         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
369
370 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
371
372         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
373
374         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
375         for ppc.
376
377 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
378
379         Made it possible for mono_arch_instrument_epilog to preserve
380         argument registers, otherwise instrumenting the "epilogue" before
381         a tail call would clobber them.
382         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
383         if like mono_arch_instrument_epilog but with an additional parameter
384         that states if argument registers must be preserved.
385         * mini.c: implemented mono_arch_instrument_epilog as a call to
386         mono_arch_instrument_epilog_full without asking to preserve argument
387         registers (this makes the existing code work as usual).
388         * mini-amd64.c:
389         - mono_arch_instrument_epilog: add parameter to transform it into
390         mono_arch_instrument_epilog_full, and preserve argument registers
391         when required.
392         - mono_arch_output_basic_block, OP_TAILCALL case: call
393         mono_arch_instrument_epilog_full.
394         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
395         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
396         only transformed mono_arch_instrument_epilog into
397         mono_arch_instrument_epilog_full.
398
399 2009-05-15  Geoff Norton  <gnorton@novell.com>
400
401         * mini-darwin.c: This works on arm now.
402
403 2009-05-14  Geoff Norton  <gnorton@novell.com>
404
405         * jit.h, driver.c: Allow full-aot to be decided programatically by the
406         embedding api.
407
408 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
409
410         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
411         label names.
412
413         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
414         wrappers during full aot mode correctly.
415
416         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
417         methods correctly.
418
419         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
420         mono_metadata_type_hash ().
421
422 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
423
424         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
425         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
426         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
427         Removed MONO_INST_BRLABEL from the instruction flags, and the
428         remaining code that used it, because we do not support branches inside
429         basic blocks (and branch target labels) anymore.
430         * Makefile.am: As part of the above cleanup, remove reference to
431         BURG files which don't exist anymore.
432
433 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
434
435         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
436         osx.
437
438         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
439         to use mono_arch_throw_corlib_exception.
440
441         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
442         mono_arch_throw_corlib_exception for throwing corlib exceptions.
443
444         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
445         domain mempool.
446
447         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
448
449         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
450         for the got to make debugging easier and to avoid confusing it with the
451         system got.
452         
453         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
454         method so a breakpoint can be set when using gdb.
455
456 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
457
458         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
459         on mono_method_get_imt_slot ().
460
461         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
462         num_decodes variables.
463
464         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
465         change as it doesn't seem to work.
466         
467         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
468         wrappers.
469
470 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
471
472         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
473         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
474
475         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
476         builder when using full aot.
477
478         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
479         here, it is already handled.
480         
481         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
482         correctly for IMT.
483
484         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
485
486         * mini-arm.h: Enable IMT for full aot.
487         
488         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
489         arch doesn't support it.
490
491         * mini.c (mini_init): Don't disable IMT for full aot if the
492         architecture supports it.
493
494         * mini.h (MonoAotTrampoline): New enum containing the different types
495         of 'numerous' trampolines.
496         (MONO_AOT_FILE_VERSION): Bump this.
497
498         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
499         static rgctx trampolines. Add support for full-aot IMT thunks.
500
501         * mini-amd64.h: Enable IMT for full aot.
502
503         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
504         to exclude tests belonging to a category.
505
506         * generics.cs: Mark some tests with a !FULLAOT category.
507
508         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
509         generics tests.
510
511 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
512
513         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
514         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
515         (emit_plt): Fix a warning.
516
517 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
518
519         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
520         back into aot-compiler.c to a place where the other functions shared by
521         the runtime and aot compiler are.
522         
523         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
524         as done previously, instead of in MonoAotFileInfo, since pointers might have
525         alignment requirements.
526
527         * mini.h: Bump AOT file format version.
528
529 2009-05-10  Miguel de Icaza  <miguel@novell.com>
530
531         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
532         that is used at runtime from the aot-compiler.c, this makes it
533         work on setups that remove the AOT compiler from the output
534         image. 
535
536 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
537
538         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
539         PPC.
540
541         * mini-ppc.h: Enable static rgctx trampolines for ppc.
542
543         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
544
545         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
546         stuff to mono_arch_decompose_long_opts ().
547         (mono_decompose_opcode): Remove some dead code.
548
549 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
550
551         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
552         cmethod can be null for quite a some reasons.
553
554 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
555
556         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
557
558 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
559
560         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
561
562 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
563
564         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
565         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
566         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
567         calls returning structures by addr on amd64.
568
569         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
570
571         * iltests.il.in: Restructure the tail call tests a bit.
572         
573 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
574
575         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
576         for virtual methods too.
577
578 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
579
580         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
581         due to regression in verifying System.dll.
582
583 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
584
585         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
586         in dynamic methods.
587
588         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
589         instances.
590
591         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
592         g_str_hash () which can change.
593
594         * driver.c (mini_regression): Disable optimizations not supported by
595         the cpu. Fixes #500019.
596
597         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
598         build.
599
600 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
601
602         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
603         to the latest LLVM code.
604
605 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
606
607         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
608
609 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
610
611         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
612         x86/amd64.
613
614         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
615         no longer saving offsets, so just save the patch types along with the other
616         info.
617         * aot-runtime.c (load_patch_info): Update after the changes to 
618         encode_patch_list ().
619         (decode_got_entry): Removed, merged into load_patch_info ().
620         (is_shared_got_patch): Removed, call the same function from
621         aot-compiler.c.
622
623         * mini.h: Bump aot file format version.
624         
625         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
626         half-finished no-dlsym code.
627
628         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
629         option.
630
631         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
632         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
633
634 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
635
636         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
637         buffer length to work with AOT code.
638
639         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
640         ldfld/stfld opcodes.
641
642         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
643         as it is not used.
644
645         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
646
647         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
648
649         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
650         LLVM API.
651
652         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
653         if needed. Don't decompose long operations when using llvm.
654
655 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
656
657         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
658         PAGESIZE constant.
659
660         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
661
662 2009-05-03  Martin Baulig  <martin@ximian.com>
663
664         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
665         mono_debugger_insert_method_breakpoint() since the class init
666         handler we're inserting at the top of the method already gives us
667         a notification.
668
669 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
670
671         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
672         to mono_arch_decompose_long_opts () for x86 and arm.
673
674 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
675
676         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
677         TARGET_AMD64 here.
678
679 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
680
681         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
682         JIT code.
683
684 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
685
686         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
687         number of trampolines used in full-aot mode.
688
689         * aot-compiler.c: Add an ntrampolines option to set the number of 
690         trampolines emitted in full-aot mode.
691
692 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
693
694         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
695         a volatile load. Get rid of get_tempname (), llvm assigns names
696         automatically.
697
698         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
699         builder function.
700
701         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
702         a value.
703
704         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
705         level 1.
706
707         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
708         to the same register as a fixed sreg2. Fixes #497271.
709
710         * iltests.il.in: Add a new test.
711
712 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
713
714         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
715         stack, since pushes complicate exception handling.
716
717         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
718         the stack if they are passed using moves.
719
720         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
721
722         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
723         when using llvm.
724
725         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
726         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
727         of FMOVE if it is an R4.
728
729 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
730
731         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
732
733         * mini.h (LLVMCallInfo): New structure to store calling convention 
734         information for the LLVM back end similar to the CallInfo structures in 
735         the back-ends.
736
737         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
738         call information in a format usable by LLVM.
739         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
740
741         * method-to-ir.c (mono_emit_call_args): Emit calls using 
742         mono_llvm_emit_call () when compiling using LLVM.
743
744         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
745         comments to all functions. Fix memory leaks. Add a public init/cleanup
746         function.
747
748         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
749
750         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
751         mono_array_new_va () jit icall.
752         
753 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
754
755         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
756         multiple machine description files to be specified.
757         * mini-ops.h: fixes for cross-compilation.
758
759 2009-04-22  Miguel de Icaza  <miguel@novell.com>
760
761         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
762         some porting work.
763
764 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
765
766         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
767         to prevent asserts in various passes. Fixes #497220.
768
769 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
770
771         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
772         a racy assert.
773
774         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
775         table to avoid duplicates.
776
777         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
778         
779         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
780         option is used.
781
782 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
783
784         * mini.c (mini_method_verify): Fail fulltrust code if the exception
785         is for method or field access.
786
787 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
788
789         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
790         a Value to stdout.
791
792         * mini-llvm.c (mono_llvm_emit_method): Use it.
793         
794         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
795         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
796         on volatile values.
797
798         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
799         synchronized methods.
800
801         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
802
803         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
804
805         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
806         OP_LOADI8_MEM.
807
808         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
809         allowing some options to be set dynamically.
810
811 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
812
813         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
814         unconditional branch.
815
816         * mini.h (MonoTrampolineType): Add new trampoline type 
817         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
818         compiled code.
819
820         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
821         function.
822
823         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
824         creation function.
825
826         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
827         is enabled. Instead, use the llvm vcall trampoline.
828         
829         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
830
831         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
832         
833         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
834         functions.
835
836         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
837         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
838
839         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
840         OP_IA64_CSET opcode.
841
842         * mini.c: Fix a warning.
843
844         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
845         THROW to the appropriate llvm type.
846
847 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
848
849         * mini.c (mini_method_compile): Add statistics for methods JITted
850         with/without LLVM.
851
852 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
853
854         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
855         OP_IA64_CMP_<cond>_IMM opcodes.
856
857 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
858
859         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
860         corlib exceptions.
861
862         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
863         correctly.
864
865         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
866         GENERICINST.
867
868 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
869
870         * mini-exceptions.c : add thread id to EXCEPTION trace message.
871
872 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
873
874         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
875         support.
876
877         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
878         rgctx invoke trampolines for x86.
879
880         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
881         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
882         (mono_arch_get_vcall_slot): Simplify this.
883
884 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
885
886         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
887         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
888
889 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
890
891         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
892         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
893
894         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
895
896         * liveness.c (visit_bb): Remove a needless assert.
897
898 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
899
900         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
901         full aot support to the arch specific code.
902
903         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
904
905         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
906
907         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
908         
909         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
910         collect information about the delegate invoke impl trampolines.
911
912         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
913         to save trampolines during full-aot mode.
914
915         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
916         creation function which returns a trampoline which sets the rgctx
917         argument.
918         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
919         wrapper if possible.
920         (mono_delegate_trampoline): Ditto.
921
922         * mini.c (mono_jit_runtime_invoke): Ditto.
923
924         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
925         
926         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
927
928         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
929         
930 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
931
932         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
933         just setting the opcode to OP_NOP.
934
935 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
936
937         * mini.c (mini_method_compile): Put the last change inside an 
938         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
939         
940         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
941         and extend live ranges to cover the whole method when using xdb.
942
943         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
944         do it in the trampolines.
945
946         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
947         needed.
948
949         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
950         
951         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
952         call code in full-aot mode since IMT is disabled there.
953         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
954         new JIT no longer has that restriction.
955
956         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
957
958         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
959         a more compact format.
960         (mono_aot_wrapper_name): New function to return a unique name for a
961         wrapper method, also used by the AOT runtime.
962
963         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
964         aot-compiler.c.
965
966         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
967         when a ICollection<T> etc is encountered.
968         (add_generic_instances): Process method arguments/locals too.
969         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
970         trampoline names.
971
972         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
973         
974 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
975
976         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
977
978         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
979
980         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
981         representing the result of the decomposition. Nullify instructions
982         instead of setting them to OP_NOP since nops can't have registers
983         set.
984
985 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
986
987         * aot-compiler.c (mono_compile_assembly): Split this huge function into
988         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
989         info. Strip 'mapping symbols' on ARM.
990
991         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
992         
993         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
994         this with the native genmdesc.
995
996 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
997
998         * aot-runtime.c:  Fixing the MSVC build.
999
1000         Code is contributed under MIT/X11 license.
1001
1002 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
1005         JITted code depends on it.
1006
1007 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1008
1009         * aot-compiler.c: Use new MonoGenericParam accessors.
1010
1011 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1012
1013         Reduce memory usage and improve correctness wrt MonoGenericParam
1014         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
1015         handing.  Avoid allocating MonoGenericParams, but use the ones in
1016         the container itself.
1017
1018 2009-04-07  Miguel de Icaza  <miguel@novell.com>
1019
1020         * tasklets.c: Return exceptions in the out argument.
1021
1022 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
1023
1024         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
1025         opcode. Use pointer types in more places instead of casting them to 
1026         integers.
1027
1028         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
1029         optimizations.
1030         (mono_llvm_optimize_method): New helper function to optimize a method.
1031
1032         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
1033         widening code so it could be called from more places.
1034         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
1035         code paths in the call opcodes.
1036
1037 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
1038
1039         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
1040
1041 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1042
1043         * dwarfwriter.c: Use _ to separate class name 
1044         components as gdb can't handle '.'. Represent reference variables
1045         as 'class <NAME>&'.
1046         
1047         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
1048
1049         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
1050         
1051         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
1052
1053         * gc-test.cs: New file with GC stack marking tests.
1054         
1055         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
1056         negative numbers for vfp.
1057
1058         * basic-float.cs: Add a test.
1059         
1060 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
1061
1062         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
1063
1064 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
1065
1066         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
1067         part of tasklet/continuation support.
1068
1069 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
1072         amd64 opcodes inside an ifdef.
1073
1074         * dwarfwriter.c: Emit inheritance information for classes, emit fields
1075         of complex types.
1076         
1077         * dwarfwriter.c (emit_type): Emit the class info for classes.
1078
1079 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
1080
1081         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
1082
1083         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
1084
1085         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
1086
1087         * ssa.c (mono_ssa_compute): Fix some memory leaks.
1088
1089 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
1092
1093         * mini-llvm.c: Update comments.
1094
1095         * mini.h (COMPILE_LLVM): New macro.
1096
1097         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
1098
1099         * ssa.c (mono_ssa_compute): Ditto.
1100         
1101         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
1102         the unwind ops from a DWARF FDE.
1103
1104         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
1105         methods by extracting the dwarf unwind ops from the unwind info generated
1106         by LLVM.
1107         
1108         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
1109         calls.
1110
1111         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
1112         addressing modes.
1113
1114 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * Makefile.am (llvm_sources): Enable this.
1117
1118         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
1119         failing back to the JIT if something cannot be handled.
1120
1121         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
1122         compiling with LLVM.
1123
1124         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
1125         compiling with LLVM.
1126
1127         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
1128         compiling with LLVM.
1129
1130         * mini-ops.h: Add a few opcodes needed by LLVM.
1131
1132         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
1133         has no unwind info.
1134
1135         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
1136         backend.
1137
1138         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
1139
1140         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
1141
1142 2009-04-01  Mark Probst  <mark.probst@gmail.com>
1143
1144         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
1145         ridiculously large methods.
1146
1147 2009-03-31  Martin Baulig  <martin@ximian.com>
1148
1149         * debug-debugger.c (debugger_remove_breakpoint): Call
1150         mono_debugger_remove_class_init_callback ().
1151
1152 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
1155         right before emitting code, not at the start.
1156
1157         * mini.c (mono_postprocess_patches): Extract this into a separate function
1158         from mono_codegen ().
1159
1160         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
1161         byref types correctly.
1162
1163 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
1166         by the last change.
1167
1168 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
1171         indirect calls, this avoids problems where get_vcall_slot () would get
1172         confused by the native code for the instruction preceeding the call.
1173         (mono_arch_get_vcall_slot): Simplify this.
1174         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
1175
1176         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
1177         register allocator now seems to depend on them instead of the data in
1178         cpu-<ARCH>.md.
1179
1180         * mini.c (mini_method_compile): Throw the correct type of exception if
1181         mono_method_get_header () fails because of a loading error.
1182
1183 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * mini.c (mini_method_compile): Clear the loader error if the method
1186         header cannot be decoded.
1187
1188         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
1189         interface methods on proxies correctly.
1190
1191         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
1192         this argument for vtype methods. Add precise liveness info for arguments.
1193
1194         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
1195         LIVERANGE_START/END opcodes.
1196
1197         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
1198         for arguments and values in registers.
1199
1200 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
1203         return a valuetype. Fixes #487518.
1204
1205         * iltests.il: Add a test.
1206         
1207         * aot-compiler.c: Use mono_thread_create () to create helper threads.
1208
1209         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
1210         closed over a null reference correctly.
1211
1212 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1213
1214         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
1215
1216 2009-03-25  Mark Probst  <mark.probst@gmail.com>
1217
1218         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
1219         allocated to the same registers as fixed sregs.
1220
1221 2009-03-24  Mark Probst  <mark.probst@gmail.com>
1222
1223         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
1224         ATOMIC_CAS_IMM ops.
1225
1226         * method-to-ir.c: Handle more cases for
1227         Interlocked.CompareExchange.
1228
1229         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
1230         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
1231         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
1232
1233 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * aot-runtime.c (decode_method_ref): Fix a warning.
1236
1237         * unwind.c (mono_unwind_frame): Ditto.  
1238
1239 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
1242         (mono_compile_assembly): Enable the binary writer for full-aot as well.
1243
1244         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
1245         fix the handling of large values in the ALU_PC_G0_NC relocation.
1246
1247 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1248
1249         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
1250
1251 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1252
1253         * method-to-ir.c (mono_spill_global_vars): Support for ternary
1254         ops.
1255
1256 2009-03-22  Mark Probst  <mark.probst@gmail.com>
1257
1258         * method-to-ir.c: MINI_OP3 needs a comma.
1259
1260         * method-to-ir.c, mini.h, mini.c: Remove
1261         mono_init_op_sreg_counts ().
1262
1263 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
1264
1265         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
1266         OP_JMP.
1267         
1268         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
1269         assertion.
1270
1271         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
1272
1273         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
1274         code somewhat.
1275
1276 2009-03-21  Mark Probst  <mark.probst@gmail.com>
1277
1278         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
1279         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
1280         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
1281         operations.
1282
1283 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * driver.c: Change location of gc_wrapper.h.
1286
1287         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
1288         inside finally clauses correctly. Fixes #485721.
1289
1290         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
1291         after the change above.
1292
1293         * exceptions.cs: Add a test.
1294         
1295 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
1298
1299         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
1300         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
1301         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
1302
1303         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
1304         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
1305
1306 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
1307
1308         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
1309         Simplify logic for ensure_method_is_allowed_to_call_method. 
1310         Handle wrappers on callers.
1311
1312 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
1315         them don't run yet.
1316
1317         * basic-simd.cs: Fix the names of some test methods.
1318
1319 2009-03-18  Geoff Norton  <gnorton@novell.com>
1320
1321         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
1322
1323 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1324
1325         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
1326
1327 2009-03-17  Jb Evain  <jbevain@novell.com>
1328
1329         * driver.c: remove now uneeded call to mono_gc_base_init before
1330         mono_profiler_load.
1331
1332 2009-03-17  Jb Evain  <jbevain@novell.com>
1333
1334         * dwarfwriter.c (token_handler): handle more cases.
1335
1336 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
1337
1338         * method-to-ir.c: Remove more dead code (that was required only
1339         because of method_is_safe). Fix compiler warnings.
1340
1341 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1342
1343         * method-to-ir.c: Remove unneeded/useless method_is_safe
1344         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
1345
1346 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1347
1348         * mini.c (mini_method_compile): Print the method been compiled with
1349         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
1350         for people not familiar with the runtime.
1351
1352 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
1355         a managed object which is later put into a GList. Return its class instead.
1356
1357         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
1358         stack slots when using sgen.
1359
1360 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
1363
1364 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
1367         > so it works on the first vreg as well.
1368
1369 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
1370
1371         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
1372         trigger randomly.
1373
1374         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
1375         
1376         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
1377         implement GArray.
1378
1379 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
1382         native->IL offset mapping.
1383
1384 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
1387
1388         * basic.cs: Add a test.
1389
1390 2009-03-11  Mark Probst  <mark.probst@gmail.com>
1391
1392         * mini-x86.c (mono_arch_output_basic_block): Use different
1393         registers in case the ones we want to overwrite are used by the
1394         other operand.  Fixes regression in #480807.
1395
1396 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
1399
1400         * dwarfwriter.c (emit_line_number_info): The line number info for
1401         IL code was off by one. Fix that.
1402
1403         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
1404         stack.
1405
1406 2009-03-09  Mark Probst  <mark.probst@gmail.com>
1407
1408         Contributed under the terms of the MIT/X11 license by Steven
1409         Munroe <munroesj@us.ibm.com>.
1410
1411         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
1412         Fixes #483462.
1413
1414 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
1417         as well.
1418
1419 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1420
1421         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
1422         the delegate ctor handling code. Fixes #482638.
1423         
1424         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
1425         #481458.
1426
1427         * iltests.il.in: Add a test.
1428         
1429         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
1430         mini-posix.c.
1431
1432 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1433
1434         * mini-trampolines.c (mono_create_jump_trampoline): If the method
1435         is shared generic code, return the trampoline, even if the method
1436         has already been compiled.  Fixes #479763.
1437
1438         * mini.c, mini.h: New function
1439         mono_jit_find_compiled_method_with_jit_info() which is the same as
1440         mono_jit_find_compiled_method() but also returns the jit info.
1441
1442 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1443
1444         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
1445         for methods which actually have one.  For all other methods, make
1446         sure the this argument var is live the whole method.
1447
1448         * mini.c (mini_method_compile): Every shared method has a
1449         this/vtable/mrgctx info.  Fixes #480807.
1450
1451 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1452
1453         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
1454         generic/imt thunks where some entries branch through the vtable,
1455         while other entries branch directly.
1456
1457 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
1460
1461         * mini-windows.c: Ditto.
1462         
1463         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
1464         ctors.
1465
1466 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
1469         down an assert.
1470
1471 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1472
1473         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
1474         #481403.
1475
1476 2009-03-04  Mark Probst  <mark.probst@gmail.com>
1477
1478         * exceptions-x86.c: Include debug-mini.h - fixes build.
1479
1480 2009-03-04  Martin Baulig  <martin@ximian.com>
1481
1482         * debug-mini.c: Clean up the exception API and add documentation.
1483         (mono_debugger_handle_exception): New public method; this is
1484         called when throwing an exception or encountering an unhandled one.
1485         (mono_debugger_call_exception_handler): Formerly known as
1486         mono_debugger_handle_exception(); this is used to tell the
1487         debugger that we're about to invoke an exception handler.
1488
1489 2009-03-04  Martin Baulig  <martin@ximian.com>
1490
1491         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
1492         ../metadata/mono-debug-debugger.c; save and reset exception state.
1493
1494 2009-03-02  Martin Baulig  <martin@ximian.com>
1495
1496         * debug-mini.c: Moved the debugger exception handling here from
1497         ../metadata/mono-debug-debugger.c.
1498
1499         * debug-mini.h
1500         (MonoDebuggerExceptionAction): New exception typedef.
1501
1502         * debug-mini.c
1503         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
1504
1505         * exceptions-amd64.c
1506         (mono_amd64_throw_exception): Use the new debugger exception
1507         handling code.
1508
1509         * mini-exceptions.c
1510         (mono_handle_exception_internal): Don't call
1511         mono_debugger_unhandled_exception() here.
1512
1513 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * mini.c aot-compiler.c: Update after the changes to 
1516         mono_marshal_get_runtime_invoke ().
1517
1518         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
1519         Virtual generic methods might not have method->slot set, work around
1520         that.
1521
1522         * generics.cs: Add a test.
1523
1524 2009-03-02  Geoff Norton  <gnorton@novell.com>
1525
1526         * mini.c:
1527         * driver.c: Allow signal chaining of SIGFPE as well.
1528
1529 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
1532         this since it now receives the method not its generic context in the
1533         IMT reg.
1534
1535         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
1536         generic/imt thunks where some entries branch through the vtable, while
1537         other entries branch directly.
1538
1539         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
1540
1541         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
1542         support for interface methods as well.
1543
1544         * mini-trampolines.c: Add support for virtual generic methods in interfaces
1545         using the normal IMT thunks.
1546
1547         generics.cs: Add new tests.
1548         
1549         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
1550         the generic inst to the generic imt thunks. This fixes AOT support, 
1551         improves consistency with the normal IMT thunks, and makes it easier to
1552         add support for interface generic virtual methods later.
1553
1554         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
1555         
1556 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * driver.c (mono_set_signal_chaining): New public API function to enable
1559         signal chaining on POSIX platforms.
1560
1561         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
1562         (si@lindenlab.com) to implement signal chaining. The original patch was
1563         contributed under the MIT X/11 license:
1564         https://bugzilla.novell.com/show_bug.cgi?id=318894
1565
1566 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
1569         too until it can be made to run on amd64.
1570
1571 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1572
1573         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
1574         to  get_generic_context_from_code () + get_call_info () if possible.
1575
1576 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
1579         suspend-on-sigsegv functionality.
1580
1581         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
1582         to suspend when a native SIGSEGV is received. This is useful for debugging
1583         crashes which don't happen under gdb, since a live process contains more
1584         information than a core file.
1585
1586         * mini-exceptions.c (mono_print_thread_dump): Use 
1587         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
1588
1589         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
1590
1591         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
1592         
1593         * basic-float.cs: Disable the tests which currently fail on amd64.
1594
1595         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
1596         value to mono_arch_patch_callsite () to fix crashes.
1597         
1598         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
1599
1600 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
1603         nop code by patching the call address to point to the nullified class init
1604         trampoline, as the former does not seem to be safe on SMP machines.
1605
1606 2009-02-23  Mark Probst  <mark.probst@gmail.com>
1607
1608         * mini-ops.h: Fix the argument types for a few x86 opcodes where
1609         they were wrong.
1610
1611 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * basic-float.cs basic-calls.cs: Fix warnings.
1614
1615 2009-02-22  Mark Probst  <mark.probst@gmail.com>
1616
1617         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
1618         correct frame pointer in the LMF.  Should fix #478394.
1619
1620 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
1623
1624         * image-writer.c: Make the binary writer less verbose.
1625
1626 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1627
1628         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
1629         are called from runtime invoke wrappers.
1630
1631 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * cpu-ppc.md (store_memindex): Increase the size of this.
1634
1635 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1636
1637         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1638
1639         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
1640
1641         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
1642         OP_LCONV_TO_R_UN.
1643
1644         Last fix for of #467201.
1645
1646
1647 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1650
1651         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
1652         and long_conv_to_r8_2:
1653
1654         Fixed part of #467201.
1655
1656 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1659
1660         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
1661         conversion to 32 bits.
1662
1663         * cpu-x86.md: Increase the size of int_conv_to_r4.
1664
1665         * basic-float.cs: Add a test for this.
1666
1667         Fixed part of #467201.
1668
1669 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1670
1671         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1672
1673         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
1674         conversion to 64 bits.
1675
1676         * basic-float.cs: Add a test for this.
1677
1678         Fixed part of #467201.
1679
1680 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1681
1682         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1683
1684         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
1685         This behavior is compatible with MS.
1686
1687         * iltest.il.in: Add a test for this.
1688
1689         Fixed part of #467201.
1690
1691 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
1692
1693         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
1694
1695         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
1696         change the precision of the value.
1697
1698         * cpu-x86.md: Define len for float_conv_to_r4.
1699
1700         * basic-float.cs: Add a test for this.
1701
1702         Fixed part of #467201.
1703
1704 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1705
1706         * mini.c: Adjust locking order to the new semantics where the loader lock
1707         comes first.
1708
1709 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
1710
1711         * aot-runtime.c:
1712         * mini-amd64.c:
1713         * mini-arm.c:
1714         * mini-ia64.c:
1715         * mini-mips.c:
1716         * mini-ppc.c:
1717         * mini-sparc.c:
1718         * mini-trampolines.c:
1719         * mini-x86.c:
1720         * mini.c:
1721         * tramp-alpha.c:
1722         * tramp-amd64.c:
1723         * tramp-arm.c:
1724         * tramp-hppa.c:
1725         * tramp-ia64.c:
1726         * tramp-mips.c:
1727         * tramp-ppc.c:
1728         * tramp-s390.c:
1729         * tramp-s390x.c:
1730         * tramp-sparc.c:
1731         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
1732
1733 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
1736         as it is incorrect.
1737
1738 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
1741         for cctors if needed.
1742
1743 2009-02-17  Mark Probst  <mark.probst@gmail.com>
1744
1745         * mini-ppc.c: Fix build on Darwin.
1746
1747 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1748
1749         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
1750         version instead of 3 as valgrind doesn't like version 3.
1751
1752         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1753
1754         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
1755         usable for hashing methods.
1756         (emit_extra_methods): Use the new hash to avoid putting every method in the
1757         same hash bucket.
1758
1759         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
1760
1761         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
1762         whenever a method ref could match a method.
1763         
1764         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
1765         test to fail.
1766         
1767         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
1768         methods refs.
1769
1770         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
1771
1772         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
1773         the encoding buffer.
1774
1775         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
1776         mono_method_get_header () on inflated methods as an optimization.
1777
1778 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * ssa.c (fold_ins): Fix another crash if the instruction following the
1781         switch was optimized away.
1782
1783 2009-02-16  Mark Probst  <mark.probst@gmail.com>
1784
1785         Contributed under the terms of the MIT/X11 license by Steven
1786         Munroe <munroesj@us.ibm.com>.
1787
1788         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
1789
1790 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
1793         around the mono_domain_alloc calls, it is now done by the functions
1794         themselves.
1795
1796         * aot-compiler.c (compile_method): Only add wrappers referenced by
1797         the method if compiling with full AOT.
1798         (mono_compile_assembly): Error out if --aot=full is specified on
1799         a platform where it is not supported.
1800
1801         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
1802         on ARM too.
1803
1804         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
1805         AOT support.
1806
1807         * aot-runtime.c (load_named_code): Handle 
1808         mono_arm_throw_exception_by_token.
1809
1810         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
1811
1812         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
1813         unaligned.
1814
1815         * Makefile.am (fullaotcheck): Exit if a test fails.
1816
1817         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
1818         on ARM.
1819         (mono_compile_assembly): Handle the assembler failing.
1820
1821         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
1822         accepting subsections of .bss.
1823
1824         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
1825         was optimized away.
1826
1827         * aot-compiler.c: Remove some unused includes.
1828         
1829         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
1830         now in MonoImageWriter.
1831
1832         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
1833         code sequence which matches a non-virtual call. Fixes #472654.
1834
1835 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1836
1837         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
1838         xdebug code.
1839         
1840         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
1841         use the image/dwarf writers directly.
1842
1843         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
1844         field.
1845
1846         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
1847         MonoDwarfWriter.
1848
1849         * image-writer.h: Fix some typos.
1850
1851         * dwarfwriter.h dwarfwriter.c: New files.
1852         
1853         * aot-compiler.c: Extract the DWARF info writing functionality into a 
1854         separate module.
1855
1856         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
1857         argument to return unwind info.
1858
1859         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
1860
1861         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
1862         
1863         * aot-runtime.c (decode_method_ref): Add a case for 
1864         MONO_AOT_METHODREF_WRAPPER_NAME.
1865
1866         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
1867         for AOT.
1868
1869         * aot-compiler.c (encode_method_ref): Use the new constants.
1870
1871         * aot-runtime.c (decode_method_ref): Ditto.
1872
1873         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
1874         be compiled, not the icall itself.
1875
1876 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
1879         using decode_method_ref ().
1880
1881         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
1882         convert it to an in32. Fixes #475859.
1883
1884         * arrays.cs: Add a test.
1885
1886 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
1889         OP_LCONV_TO_U2.
1890
1891         * basic-long.cs: Add a test.
1892
1893 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1894
1895         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
1896         remove the frame pointer in leaf methods which don't receive any
1897         arguments, don't throw exceptions and don't do dynamic stack
1898         allocations.
1899
1900 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
1903         the fail_tramp changes. Hopefully fixes #475132.
1904
1905 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1906
1907         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
1908         instead of mono_metadata_signature_dup_full.
1909
1910 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
1913         for processing jump tables. Fixes #473787.
1914
1915 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1916
1917         * mini-generic-sharing.c: mini_method_get_context() just calls
1918         mono_method_get_context_general() now.
1919
1920         * mini.c, mini.h: Moved get_object_generic_inst(),
1921         construct_object_context_for_method() and
1922         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
1923
1924 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
1927         basic block fell through to its successor bblock without a branch. Fixes
1928         #474718.
1929
1930         * iltests.il.in: Add a test.
1931         
1932         * aot-compiler.c (encode_method_ref): Encode methods of array types.
1933         (can_encode_patch): We can now handle arrays of generic parameters and
1934         array methods.
1935
1936         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
1937
1938         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
1939         the AOT file to avoid some #ifdefs in aot-runtime.c
1940
1941         * mini.h: Bump AOT file format version.
1942
1943 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1944
1945         * Makefile.am (fullaotcheck): Make this run the tests.
1946
1947         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
1948
1949 2009-02-10  Mark Probst  <mark.probst@gmail.com>
1950
1951         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
1952         individually.  Fixes #473482.
1953
1954 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1955
1956         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
1957
1958 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
1959
1960         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
1961         (mono_compile_assembly): Hush compile warnings about
1962         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
1963         code path.
1964
1965 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1966
1967         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
1968
1969         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
1970
1971         * aot-compiler.c: Fix arm support.
1972
1973         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
1974         img_writer_emit_unset_mode () function.
1975
1976         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
1977         (mono_unwind_get_dwarf_pc_reg): Ditto.
1978
1979         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
1980         Move almost all platform specific code to a set of arch_ functions, 
1981         and document them to ease porting.
1982         
1983         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
1984
1985         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
1986
1987         * aot-compiler.c: Extract the image writing functionality into a separate
1988         module to reduce the size of this file.
1989
1990 2009-02-09  Geoff Norton  <gnorton@novell.com>
1991
1992         * mini-s390.c: Fix the signature of emit_sig_cookie.
1993
1994 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
1997
1998         * aot-runtime.c (is_shared_got_patch): Ditto.
1999
2000         * aot-runtime.c (load_named_code): Cope with the fact that 
2001         decode_got_entry () won't decode the patch fully if its corresponding got
2002         entry is already filled.
2003         
2004         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
2005         Initialize *ji.
2006         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
2007
2008         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
2009         as the moving pointer instead of 'buf' for consistency with the rest of the
2010         codebase.
2011         (mono_arch_create_monitor_exit_trampoline): Ditto.
2012
2013         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
2014         generic_class_init trampolines.
2015         (add_generic_class): Extract some code from add_generic_instances () into a
2016         separate function so it can be called from other places too.
2017         (compile_method): Call add_generic_class () for the classes of inflated methods
2018         referenced by the method.
2019         (can_encode_patch): Allow references to generic parameters.
2020
2021         * aot-runtime.c: Add support the patches required by the new trampolines.
2022         
2023         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
2024         support.
2025
2026         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
2027         full-aot support.
2028
2029         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
2030         this from get_throw_pending_exception, make the signature full aot compatible.
2031
2032         * Makefile.am (fullaotcheck): New target to run full-aot tests.
2033
2034         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
2035
2036         * exceptions.cs: Add a test.
2037
2038 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
2041         use the DWARF_DATA_ALIGN constant instead.
2042
2043         * exception-<ARCH>.c: Update after the above change.
2044
2045         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
2046         dwarf unwinder.
2047
2048         * mini-arm.c: Enable the dwarf unwinder.
2049
2050         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
2051         instead of mono_class_setup_vtable ().
2052
2053 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
2056         dwarf unwinder.
2057
2058         * mini-x86.h: Enable the dwarf unwinder.
2059
2060 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
2061
2062         Fix mcs/tests/test-7.cs
2063         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
2064         2009-02-03.
2065
2066 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * mini.c (print_jit_stats): Remove some unused statistics.
2069
2070 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
2073
2074 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2075
2076         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
2077         the method we get from mono_object_get_virtual_method() because
2078         that function does it properly, now.
2079
2080 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
2083         opcodes. Fixes #472775.
2084
2085 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2086
2087         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
2088         fact that mono_find_jit_info() sometimes returns the context
2089         corresponding to the jit info in new_ctx.  Fixes #472600.
2090
2091 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
2094         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
2095         klass->enum_basetype directly.
2096
2097         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
2098         enum subtypes.
2099
2100         * unwind.c: Avoid 0 sized arrays.
2101
2102 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2103
2104         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
2105         size on systems with 64k pages. Fixes #471389.
2106
2107 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2108
2109         Contributed under the terms of the MIT/X11 license by Steven
2110         Munroe <munroesj@us.ibm.com>.
2111
2112         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
2113         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
2114         necessary.
2115
2116 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2117
2118         Contributed under the terms of the MIT/X11 license by Steven
2119         Munroe <munroesj@us.ibm.com>.
2120
2121         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
2122         comparison fix.
2123
2124         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
2125         The trampoline can be longer on PPC64.
2126
2127 2009-02-04  Mark Probst  <mark.probst@gmail.com>
2128
2129         Contributed under the terms of the MIT/X11 license by Steven
2130         Munroe <munroesj@us.ibm.com>.
2131
2132         * mini-ppc.c: Compiler warning fixes and trivial code
2133         simplifications.
2134
2135 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2136
2137         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
2138         ins->dreg which could be a hardware register, not a vreg.
2139
2140         * aot-compiler.c (emit_method_dwarf_info): Ditto.
2141         
2142         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
2143         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
2144
2145         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
2146         
2147         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
2148         ->dreg, that is not the vreg we are looking for.
2149
2150         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
2151
2152         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
2153         LIVERANGE_END.
2154
2155         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
2156         strange crashes.
2157
2158 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
2161
2162         * aot-compiler.c (emit_line_number_info): Fix line number emission when
2163         the line diff is 0.
2164
2165         * aot-compiler.c: Add xdebug support on x86.
2166
2167         * unwind.c: Add x86 support.
2168         
2169         * aot-compiler.c (emit_exception_debug_info): Control the emission of
2170         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
2171
2172         * mini.c (mini_method_compile): Ditto.
2173         
2174         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
2175         the variable index.
2176
2177         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
2178         which mimic .push_section/.pop_section in GAS.
2179         
2180         * aot-compiler.c: Emit precise live range information for variables.
2181
2182         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
2183
2184         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
2185         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
2186         them.
2187
2188         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
2189         the live ranges of variables.
2190
2191         * mini.h (struct MonoMethodVar): Add two fields containing the live range
2192         of the variable in terms of native offsets.
2193
2194 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
2195
2196         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
2197         
2198 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2199
2200         Contributed under the terms of the MIT/X11 license by Steven
2201         Munroe <munroesj@us.ibm.com>.
2202
2203         * exceptions-ppc.c (restore_regs_from_context): Correct operand
2204         order (offset then base reg) for ppc_load_multiple_regs.
2205         (emit_save_saved_regs) Correct operand order for
2206         ppc_store_multiple_regs.
2207         (mono_arch_get_call_filter): Correct operand order for
2208         ppc_load_multiple_regs.
2209
2210         * mini-ppc.c (emit_memcpy): Fix operand order for
2211         ppc_load_reg_update and ppc_store_reg_update.
2212         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
2213         (mono_arch_emit_epilog): Correct operand order for
2214         ppc_load_multiple_regs.
2215
2216         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
2217         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
2218
2219 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2220
2221         * cpu-ppc64.md: Fixed storer4_memindex length.
2222
2223 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
2226         line number info.
2227         
2228         * aot-compiler.c (emit_line_number_info): Optimize this.
2229
2230 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * aot-compiler.c: Disassemble tokens in the IL disassembly.
2233         
2234         * aot-compiler.c: Add debug info for methods without debug info by
2235         emitting an IL file and having the line number info referencing that file.
2236
2237         * aot-compiler.c: Optimize the size of the generated line number info.
2238
2239         * aot-compiler.c: Emit line number info in xdebug mode.
2240
2241         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
2242         million arguments.
2243
2244 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
2247
2248         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
2249         is used.
2250
2251 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2252
2253         * basic-calls.cs: Test for the weird crash found on arm.
2254         
2255 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * cpu-arm.md: Increase the size of storer8_membase_reg and
2258         loadr8_membase_reg to 24 bytes to accomodate the extra add.
2259
2260         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
2261         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
2262         reg to LR otherwise we'll be loading/storing from just the offset.
2263
2264 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2265
2266         Question: if we are storing gint32's inside the "*native_offset",
2267         should we change the signature to "gint32 *native_offset" to
2268         ensure that we do not have type definition problems?
2269         
2270         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
2271         an int * as this is what the other function expects, causes
2272         problems with Freescale's compiler that defined int32_t to be a
2273         long and makes int incompatible 
2274
2275 2009-01-30  Miguel de Icaza  <miguel@novell.com>
2276
2277         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
2278         filename conflict with bjam.
2279
2280 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2281
2282         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
2283         as it might use decomposed ops.
2284
2285 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
2288
2289         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
2290         is defined.
2291
2292         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
2293
2294         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
2295         offsets.
2296
2297         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
2298         way registers are stored in MonoContext on arm.
2299
2300         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
2301         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
2302
2303         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
2304
2305         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
2306
2307         * mini.c (mini_init): Register mono_isfinite.
2308
2309         * jit-icalls.c (mono_isfinite): New jit icall.
2310
2311         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
2312         
2313         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
2314         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
2315         the parent frame.
2316
2317 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2318
2319         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
2320         separate frame and stack pointers, so we must use FP to find the register
2321         spill area.
2322         The FP reg is retrieved from the MonoContext::regs array.
2323
2324 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2325
2326         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
2327         as FPA requires it.
2328
2329 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
2330
2331         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
2332         return R4 and R8 when not running under softfloat.
2333
2334         Fixes basic-calls.exe
2335
2336 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * mini-arm.c: Implement some overflow opcodes.
2339
2340 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2341
2342         * ssa.c: handle another alloca.h
2343
2344         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
2345         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
2346         MONO_ARCH_USE_SIGACTION. 
2347
2348         * aot-runtime.c, mini-exceptions.c: Replace platform define with
2349         capability defines.
2350
2351         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
2352
2353         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
2354         PPC targets as sigaction does not exist on all platforms, define
2355         this on a per-platform basis.
2356
2357         Instead of erroring out if the platform is not defined, include
2358         mini-ppc-os.h, and expect that the OS specific setting provides
2359         the required information.   
2360
2361 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * aot-compiler.c: Fix --enable-minimal=aot.
2364
2365 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
2366
2367         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
2368         previous change.
2369
2370 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * exceptions-arm.c: Fix warnings.
2373
2374         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
2375         ARM.
2376
2377         * mini-x86.c: Fix --enable-minimal=jit build.
2378
2379         * mini.c: Really fix --enable-minimal=jit build.
2380         
2381         * mini.c (construct_object_context_for_method): Move this outside
2382         the DISABLE_JIT block to fix the --enable-minimal=jit build.
2383
2384         "Backported" of r124984 from 2.0 branch.
2385         
2386         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
2387
2388         "Backport" of r124977 + r124978 from 2.0 branch.
2389         
2390         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
2391         to avoid calling mono_exception_from_token () from the throw trampoline.
2392         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
2393         for throwing corlib exceptions, this fixes full-aot support for corlib
2394         exceptions.
2395
2396         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
2397
2398 2009-01-29  Miguel de Icaza  <miguel@novell.com>
2399
2400         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
2401         part of the changes to split the code in mini into operating
2402         system specific files.
2403
2404         This patch was done by copying mini.c to the respective files to
2405         preserve SVN history.
2406
2407 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
2410
2411 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
2414         remoting-invoke-with-check wrappers of shared methods.
2415
2416         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
2417
2418 2009-01-27  Mark Probst  <mark.probst@gmail.com>
2419
2420         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
2421         optimization if the top of stack is the last instruction in the
2422         bblock.  Otherwise it might have been used after its definition.
2423         Fixes #469742.
2424
2425 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
2428         method as well when get_vcall_slot () fails to match a code sequence.
2429
2430         * mini-arm.c: Fix the android build, which doesn't have
2431         __aeabi_read_tp.
2432
2433 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2434
2435         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
2436         the s390x build.
2437
2438 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
2439
2440         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
2441
2442 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
2445         and put its id into jinfo->used_regs. This is only used on amd64,
2446         which is currently the only platform generating unwind info.
2447
2448         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
2449         the dwarf unwinder. This is required to correctly handle async exceptions
2450         like thread abort and stack overflows, which can happen while a method
2451         is in the middle of its prolog or epilog.
2452         
2453         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
2454         the unwind info belonging to an AOTed method.
2455
2456         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
2457         into cfg->unwind_ops.
2458         
2459         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
2460
2461         * mini.c (mini_init): Call mono_unwind_init ().
2462         (mini_cleanup): Call mono_unwind_cleanup ().
2463
2464         * unwind.c: Add functions for managing a set of unwind info entries, allowing
2465         unwind info to be shared between methods.
2466
2467         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
2468         saved in the LMF.
2469
2470         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
2471         get_throw_pending_exception () to avoid initialization races.
2472
2473         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
2474         mono_arch_exceptions_init () function.
2475
2476         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
2477
2478 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * mini.c (mono_get_domain_intrinsic): New helper function.
2481         (mono_get_thread_intrinsic): Ditto.
2482
2483         * mini-arm.c mini-ia64.c: Use the new helper functions.
2484         
2485         * method-to-ir.c (mono_method_to_ir): Fix the comment for
2486         the last constrained_call change, since it is needed in the non-AOT
2487         case as well.
2488
2489         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
2490         
2491         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
2492         mono_get_lmf_addr () on arm eabi linux.
2493
2494 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
2497         code sequence which matches a non-virtual call.
2498
2499 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2500
2501         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
2502         stack pointer (r1).
2503
2504 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
2507         runtime-invoke wrappers, since they are also shared based on signature.
2508
2509 2009-01-22  Mark Probst  <mark.probst@gmail.com>
2510
2511         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
2512         info from the (correct) context.
2513
2514 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
2517         
2518         * unwind.c (mono_unwind_frame): New function to unwind through a frame
2519         using dwarf unwinding info. Not yet used.
2520
2521         * mini.c (mini_init): When using xdebug, disable freeing of domains.
2522
2523 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2524
2525         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
2526         descriptors.
2527
2528         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
2529         special case and handle mono_arch_delegate_invoke_impl() returning
2530         function descriptors.
2531
2532         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
2533         trampolines return function descriptors, too.
2534
2535 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2536
2537         * method-to-ir.c (handle_alloc): Avoid generic instances in the
2538         out_of_line optimization.
2539
2540 2009-01-21  Martin Baulig  <martin@ximian.com>
2541
2542         * mini.h
2543         (MonoCompile): Added `disable_deadce_vars' to disable removing
2544         unused variables.
2545
2546         * mini.c
2547         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
2548         inside the debugger.
2549
2550         * liveness.c (mono_analyze_liveness): Don't remove any unused
2551         variables if `cfg->disable_deadce_vars' is set.
2552
2553 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2554
2555         * method-to-ir.c: Only apply exception constructor optimization if
2556         the the method actually belongs to an exception class.  Fixes
2557         #467456.
2558
2559 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
2562         change inside a #ifdef __mono_ppc64__.
2563
2564         * aot-compiler.c (compile_method): Remove the previous limitation.
2565
2566         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
2567         on type variables in AOTed code.
2568         
2569         * aot-compiler.c (compile_method): Skip generic methods having type 
2570         constraints on their generic parameters.
2571
2572         * aot-compiler.c (compile_method): Check for methods which cannot be
2573         encoded inside RGCTX_FETCH patches as well.
2574
2575         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
2576         build.
2577
2578 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2579
2580         * method-to-ir.c: Force the vtable variable in shared generic code
2581         for the case that they might show up on a stack trace where they
2582         are needed.
2583
2584         * mini-exceptions.c: Save and use generic sharing info as well as
2585         IP in stack traces to resolve shared generic instantiations.
2586
2587 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
2590         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
2591
2592 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2593
2594         * method-to-ir.c: Do generic sharing for array constructors.
2595
2596 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * mini-exceptions.c (mono_print_thread_dump): Add information
2599         about the thread state using wapi_current_thread_desc.
2600
2601 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2602
2603         * basic-simd.cs: Tests for the new constructors. 
2604
2605 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
2606
2607         * mini-ops.h: Added OP_EXPAND_*
2608
2609         * cpu-x86.md: Same.
2610
2611         * mini-x86.c (mono_arch_output_basic_block): Same.
2612         
2613         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
2614
2615 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * iltests.il.in: Add a test for #467385.
2618
2619 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
2620
2621         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
2622         thread been cleaned up is not the same currently in execution.
2623
2624         Fixes appdomain-unload crashes on windows, osx and linux variants
2625         without the __thread keyword.
2626
2627 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
2630         (koush@koushikdutta.com). Implement this for android.
2631
2632         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
2633         begins with a digit.
2634
2635         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
2636         mono_marshal_get_write_barrier ().
2637
2638 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
2641         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
2642         that pass them on a register pair.
2643
2644         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
2645         test was crashing due to that.
2646
2647 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
2648
2649         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
2650         trampoline code. Include ucontext.h only if available.
2651
2652 2009-01-15  Mark Probst  <mark.probst@gmail.com>
2653
2654         * mini.c: mono_domain_lookup_shared_generic() takes an open method
2655         and doesn't check whether it's sharable, like it was before
2656         removing the shared generics hash.  This brings IronPython
2657         performance back to what it was before that change.
2658
2659 2009-01-14  Mark Probst  <mark.probst@gmail.com>
2660
2661         * method-to-ir.c: Handle delegate invocation optimization earlier,
2662         otherwise it would be handled (much more slowly) by the
2663         final/sealed optimization.
2664
2665 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
2668         domain is not set. Fixes #465864.
2669
2670 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2671
2672         * method-to-ir.c: Don't stop sharing of generic methods with catch
2673         clauses - we already handle those.
2674
2675 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2676
2677         * mini.c, mini.h: lookup_generic_method() is now
2678         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
2679         making the shared_generics_hash obsolete.
2680
2681 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2682
2683         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
2684         use the red zone.  Make room on the stack first and then use it,
2685         not the other way around.
2686
2687 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * mini.c (mini_init): Call mono_xdebug_init ().
2690
2691         * aot-compiler.c (mono_xdebug_init): Make this non-static.
2692
2693 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * TestDriver.cs: Add an --iter argument to run tests multiple times.
2696
2697         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
2698         trampolines.
2699
2700         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
2701         debug+unwind info for trampolines.
2702
2703         * mini.c (mono_create_unwind_op): New helper function.
2704
2705         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
2706
2707 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * aot-compiler.c: Fix the build.
2710
2711 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2712
2713         * Makefile.am: Update dtrace-prelink.sh location.
2714
2715 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
2718         optimization. Fixes #464520.
2719
2720 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
2721
2722         * mini-amd64.c : Adding code to save/restore non-volatile registers
2723            on Winx64.
2724
2725         * exceptions-amd64.c : Adding code to save/restore non-volatile 
2726           registers on Winx64.
2727
2728         Contributed under MIT/X11 license.
2729
2730 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
2731
2732         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
2733         __GNUC_MINOR__ which can break when the major version changes.
2734
2735 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2736
2737         * basic-simd.cs: Add tests for usage of the sizeof opcode.
2738
2739 2009-01-07  Geoff Norton  <gnorton@novell.com>
2740
2741         * helpers.c:  Allow mono -v -v -v to work on darwin.
2742
2743 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
2744
2745         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
2746           pattern. 
2747
2748         Contributed under MIT/X11 license.
2749
2750 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
2753         instead of directly accessing type->data.klass. Fixes #462016.
2754         (mono_allocate_stack_slots_full): Ditto.
2755
2756         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
2757         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
2758
2759         * aot-compiler.c (emit_plt): Fix ARM build.
2760
2761 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
2764         
2765         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
2766         change.
2767
2768         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
2769         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
2770         #463357.
2771
2772         * iltests.il.in: Add a regression test.
2773
2774 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2775
2776         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
2777
2778 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2779
2780         * basic-simd.cs: Add a regression test for #462457.
2781
2782 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2783
2784         * mini-ops.h: Add a definition of XPHI.
2785
2786         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
2787
2788         * ssa.c (op_phi_to_move): Handle XPHI.
2789
2790         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
2791
2792         Fixes #462457
2793
2794 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2795
2796         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
2797
2798 2008-12-31  Geoff Norton  <gnorton@novell.com>
2799
2800         * mini-ppc.c: The prolog size allocated can be too small for darwin
2801         ppc32 under certain circumstances.  Also fix a small logic bug.
2802
2803 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
2806         while loading AOT methods.
2807
2808         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
2809         since only the former is nulled out after a successful cast. This prevents
2810         crashes with rethrown exceptions when using --debug=casts.
2811
2812 2008-12-24  Mark Probst  <mark.probst@gmail.com>
2813
2814         * mini.h: New macro for checking whether a method is final,
2815         i.e. whether the method or its class is marked final.
2816
2817         * method-to-ir.c: Use the new macro for all final-checks
2818         consistently.  Fixes the crash in the System.ServiceModel tests.
2819
2820 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2821
2822         * mini-exceptions.c (get_exception_catch_class): Corrected another
2823         overly strict assertion.
2824
2825 2008-12-23  Mark Probst  <mark.probst@gmail.com>
2826
2827         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
2828         Clobbering it is not allowed because the caller might use it as
2829         the vtable register in the interface call.
2830
2831 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2832
2833         * mini-exceptions.c (get_exception_catch_class): Corrected an
2834         overly strict assertion.
2835
2836 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
2837         
2838         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
2839
2840         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
2841
2842         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
2843
2844         * cpu-mips.md: correct lengths for certain long_ opcodes.
2845
2846         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
2847
2848         * 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().
2849         
2850 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2851
2852         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
2853         
2854 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
2855         
2856         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
2857         
2858 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
2859
2860         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
2861         next basic block.
2862         
2863 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
2864
2865         * 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
2866
2867         * 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)
2868         
2869 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
2870         
2871         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
2872         
2873 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
2874
2875         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
2876         gshared code. Fixes #458947.
2877
2878         * generics.cs: Add a test.
2879
2880 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2881         
2882         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2883         
2884         * mini-mips.c: first pass n32 code generation.
2885
2886         * mini-mips.h: datatypes and defines for n32 support.
2887
2888         * exceptions-mips.c: first pass n32 code generation.
2889         
2890         * tramp-mips.c: first pass n32 code generation.
2891         
2892         * cpu-mips.md: add long_ opcodes.
2893         
2894 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
2895
2896         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2897
2898         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2899         
2900         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2901         
2902         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2903
2904         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2905
2906         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2907
2908         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2909
2910         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
2911
2912         * helpers.c: for mips/n32, don't pass -mips32 to objdump
2913
2914 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
2917
2918 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
2919
2920         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
2921
2922 2008-12-12  Mark Probst  <mark.probst@gmail.com>
2923
2924         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
2925         descriptors for helper functions directly in front of the code.
2926
2927 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2928
2929         * method-to-ir.c: Removed an unnecessary assertion.
2930
2931 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * method-to-ir.c: Merge SGEN changes from the old JIT.
2934
2935 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * driver.c (compile_all_methods_thread_main): Handle failure of
2938         mono_get_method ().
2939
2940 2008-12-10  Mark Probst  <mark.probst@gmail.com>
2941
2942         * mini-ppc.c: Merged with mini-ppc64.c.
2943
2944         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
2945
2946         * Makefile.am: Use the same sources for PPC and PPC64.
2947
2948         * mini-ppc64.c: Removed.
2949
2950 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2951
2952         * branch-opts.c (remove_block_if_useless): Extract fall through detection
2953         code to mono_bb_is_fall_through.
2954         
2955         * branch-opts.c (mono_remove_critical_edges): Same.
2956
2957 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
2960         expect that an OP_BR_REG will be there.
2961
2962 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
2963
2964         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
2965         for the many branch ops. The original check miss OP_BR_REG.
2966
2967         Fixes #457574.
2968         
2969 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2970
2971         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
2972
2973 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
2976         while holding the aot lock.
2977
2978 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
2979
2980         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
2981         
2982 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2983
2984         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
2985           to release all runtime callable wrappers held by the runtime.
2986
2987         Contributed under MIT/X11 license.
2988
2989 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2990
2991         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
2992           for Winx64.
2993
2994         Contributed under MIT/X11 license.
2995
2996 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2997
2998         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
2999         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
3000
3001 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3002
3003         * cpu-mips.md: fix ckfinite length
3004
3005         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
3006         (mono_arch_lowering_pass): cleanup, rearrange for clarity
3007         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
3008         
3009 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
3010
3011         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
3012         
3013 2008-12-08  Geoff Norton  <gnorton@novell.com>
3014
3015         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
3016         size by 8 bytes as well.
3017
3018 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3019
3020         * basic-simd.cs: Fix method names for Vector16b.
3021         
3022 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3023
3024         * basic-simd.cs: Fix method names for Vector16sb.
3025
3026 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3027
3028         * basic-simd.cs: Fix method names for Vector8us.
3029         
3030 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3031
3032         * basic-simd.cs: Fix method names for Vector8s.
3033         
3034 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3035
3036         * basic-simd.cs: Fix method names for Vector4ui.
3037
3038 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3039
3040         * basic-simd.cs: Fix method names for Vector2l.
3041
3042 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3043
3044         * basic-simd.cs: Fix method names for Vector2d.
3045
3046 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3047
3048         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
3049         that are extension methods.
3050
3051 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
3052
3053         * basic-simd.cs: Fix method names for Vector4f.
3054
3055 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
3058         as such. Fixes #456669.
3059
3060 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3061
3062         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
3063         
3064 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
3065
3066         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
3067         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
3068         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
3069         (mips_adjust_stackframe): handle FP spills
3070                 
3071         * mini-ops.h: add mips_mtc1_s2
3072         
3073         * cpu-mips.md: add mips_mtc1_s2
3074         
3075 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * unwind.c: New file, move the unwind info encoding functions here from
3078         aot-compiler.c, so they could be used at runtime too.
3079
3080 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3081
3082         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
3083         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
3084         
3085 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
3086
3087         * mini-mips.c: cleanup warnings
3088         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
3089         (mips_adjust_stackframe): handle case of taking the address of stack locals
3090         
3091 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3092
3093         * aot-compiler.c: Implement a few functions missing from the asm writer.
3094         (emit_method_code): Only write symbols for methods when using the bin
3095         writer, since the assembler can't deal with the characters in our method
3096         names.
3097
3098         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
3099
3100         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
3101         call.
3102
3103         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
3104         a bit to also restore %rax.
3105
3106 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3107
3108         * mini-ppc.c: Some simple merges from mini-ppc64.c.
3109
3110 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
3113         arguments.
3114
3115 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3116
3117         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
3118
3119         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
3120         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
3121
3122         * exceptions-ppc64.c: Removed.
3123
3124         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
3125
3126 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3127
3128         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
3129         tramp-ppc64.c.
3130
3131         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
3132
3133         * tramp-ppc64.c: Removed.
3134
3135 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
3138         the TYPESPEC table.
3139
3140 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3141
3142         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
3143
3144         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
3145         mini-ppc.h instead of mini-ppc64.h.
3146
3147         * mini-ppc64.h: Removed.
3148
3149 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3150
3151         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
3152         
3153         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
3154         
3155 2008-12-05  Mark Probst  <mark.probst@gmail.com>
3156
3157         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
3158         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
3159         code easier.
3160
3161 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3162
3163         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
3164
3165 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3166
3167         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
3168
3169 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3170
3171         * basic-simd.cs: Tests for operator == and != on Vector4f.
3172
3173 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
3174
3175         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
3176
3177         * simd-intrinsics.c: Kill useless enum.
3178
3179 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3180
3181         * cpu-mips.md: add long_conv_to_ovf_i4_2
3182         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
3183
3184 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3185
3186         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
3187         
3188         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
3189
3190 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3191
3192         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
3193         
3194 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3195
3196         * basic-simd.cs: Add tests for new methods.
3197
3198 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3199
3200         * simd-intrinsics.c: Add support for operator == and !=
3201         on Vector4(u)i.
3202
3203         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
3204
3205 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
3206
3207         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
3208
3209 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3210
3211         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
3212
3213         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
3214         MONO_PATCH_INFO_ICALL_ADDR.
3215
3216         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
3217
3218         * aot-compiler.c: Resurrect full-aot support.
3219
3220 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3221
3222         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
3223         
3224 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
3225
3226         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
3227         
3228 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
3229
3230         * basic-simd.cs: Fix tests to work under ppc.
3231         Remove tests for methods that will be removed.
3232
3233 2008-12-03  Mark Probst  <mark.probst@gmail.com>
3234
3235         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
3236         generic type (via a typedef or typeref) correctly.
3237
3238 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
3241         diagnose an assertion failure.
3242
3243 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3244
3245         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
3246         Fix trampoline size.
3247
3248         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
3249         conversion opcodes are implemented natively instead via emulation.
3250
3251 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3252
3253         * cpu-mips.md: remove mips_xori
3254
3255         * mini-ops.h:  remove mips_xori
3256
3257         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
3258
3259         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
3260         
3261         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
3262         
3263 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3264
3265         * cpu-mips.md: fix instruction lengths.
3266
3267         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
3268
3269         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
3270
3271         * mini-ops.h: fix slti / sltiu op profiles.
3272         
3273 2008-12-02  Martin Baulig  <martin@ximian.com>
3274
3275         * method-to-ir.c (mono_method_to_ir): Disable debugging
3276         information for the init locals block to make the debugger stop
3277         after all locals have been initalized.
3278
3279 2008-12-02  Martin Baulig  <martin@ximian.com>
3280
3281         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
3282         running inside the debugger.
3283
3284 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
3285
3286         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
3287         is enabled.
3288
3289         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
3290         alu->alu imm optimization which only shows if deadce is disabled.
3291
3292         * aot-compiler.c: Rename the function names for the binary and asm writers
3293         so they can coexist in the same process. Rework the xdebug code to use the
3294         asm writer. This avoids the need to call into the runtime to dump the
3295         debugging info. Add more debugging info for types.
3296
3297         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
3298
3299         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
3300         cpu description tables, they can't occur in cpu-<ARCH>.md.
3301
3302         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
3303         the stack in CEE_LDFLDA. Fixes #450542.
3304
3305         * generics.cs: Add a new test.
3306
3307 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
3308
3309         * mini-ops.h: updated MIPS opcodes
3310         * mini-mips.c: decompose long opts
3311         * mini-mips.h: decompose long opts
3312         
3313 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
3314
3315         * cpu-mips.md: fix length on int_rem_un
3316         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
3317         
3318 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
3321
3322         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
3323
3324 2008-11-29  Martin Baulig  <martin@ximian.com>
3325
3326         * mini-exceptions.c (mono_handle_native_sigsegv): Check
3327         mono_debug_using_mono_debugger() in addition to the
3328         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
3329
3330 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3331
3332         * mini-ops.h: updated more MIPS opcodes
3333         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
3334         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
3335         
3336 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3337
3338         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
3339
3340 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3341
3342         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
3343         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
3344         * mini-ops.h: correct selected mips opcode entries
3345         
3346 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3347
3348         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
3349         make them work.
3350
3351 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3352
3353         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
3354
3355 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
3356
3357         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
3358         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
3359         * mini-mips.h: disable IMT
3360         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
3361         
3362 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3363
3364         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
3365
3366 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3367
3368         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
3369
3370 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
3371
3372         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
3373         consistency.
3374
3375 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3378         for Set/GetVector aligned versions.
3379
3380 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3381
3382         * basic-simd.cs: Add tests for Get/SetVector.
3383
3384 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3385
3386         * mini.c: Removed g_slist_append_mempool().  Now in
3387         metadata/mempool.c.
3388
3389 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
3390
3391         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
3392         size properly and make the bounds check optional.
3393
3394         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
3395         for SetVector and IsAligned.
3396
3397 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * mini.c: Remove unused mono_normalize_opcodes () function.
3400
3401 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3402
3403         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
3404         using the new atomic add ops now.
3405
3406         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
3407         add.
3408
3409 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3410
3411         * mini-ppc64.c: Several fixes.
3412
3413 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3414
3415         * cpu-mips.md: added jump_table
3416         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
3417
3418 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3419
3420         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
3421
3422 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3423
3424         * mini-ops.h: corrected a handful of MIPS opcodes.
3425
3426 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3427
3428         * aot-compiler.c: MIPS to use ELF writer
3429
3430 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
3431
3432         * mini-codegen.c: remove MIPS specific assert.
3433
3434 2008-11-25  Mark Probst  <mark.probst@gmail.com>
3435
3436         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
3437         fixes.  PPC64 now passes most of the runtime regressions.
3438
3439 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
3442         volatile intervals a bit.
3443
3444 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3445
3446         * basic-long.cs: New test case.
3447
3448 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * mini.c (mini_method_compile): Disable globalra for large methods for 
3451         now.
3452
3453         * regalloc2.c (order_moves): Add fp support.
3454
3455         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
3456         source bblock ends with an OP_BR_REG.
3457
3458         * ratests.cs: Add a new test.
3459
3460 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3461
3462         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
3463         sharing.  PPC64 now passes generics.exe.
3464
3465 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3466
3467         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
3468
3469 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
3472         memory when mono_jit_info_table_find () can't find the method in the
3473         LMF case.
3474
3475         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
3476         AOTed code too.
3477         
3478         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
3479         writer too.
3480
3481 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3482
3483         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
3484         Several fixes.  PPC64 now runs exceptions.exe and
3485         devirtualization.exe.
3486
3487 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3488
3489         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
3490         arrays.exe and basic-math.exe.
3491
3492 2008-11-22  Mark Probst  <mark.probst@gmail.com>
3493
3494         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
3495         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
3496
3497 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3498
3499         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
3500
3501 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3502
3503         * method-to-ir.c: Move bounds checking macros to ir-emit.h
3504
3505         * ir-emit.h: Move macros from method-to-ir.c to here.
3506
3507 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
3508
3509         * mini-ops.h: Correct the long simd ops to use LREG.
3510
3511 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
3514         
3515         * mini-ops.h: Correct the dreg type of a few long opcodes.
3516
3517         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
3518         Add netbsd support.
3519
3520 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
3521
3522         * mini-ppc.c: remove negative stack references in epilog
3523         for platforms that don't support the red zone.
3524
3525 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3526
3527         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
3528         point regs.  Now PPC64 passes basic-calls.exe.
3529
3530 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3531
3532         * basic-simd.cs: Add tests for accessors of Vector2l.
3533
3534 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3535
3536         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
3537
3538         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
3539         
3540         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
3541
3542 2008-11-21  Mark Probst  <mark.probst@gmail.com>
3543
3544         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
3545         PPC64 passes basic-long.exe.
3546
3547 2008-11-20  Mark Probst  <mark.probst@gmail.com>
3548
3549         * decompose.c: Decompose carry and overflow add on PPC64 like on
3550         other 64 bit archs.  Don't decompose sub at all on PPC64.
3551
3552         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
3553         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
3554         basic-long.exe.
3555
3556 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * basic-simd.cs: Add tests for accessors of Vector2d.
3559
3560 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3561
3562         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
3563
3564         * cpu-x86.md: Same.
3565
3566         * mini-x86.c (mono_arch_output_basic_block): Same.
3567         
3568         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
3569
3570 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * basic-simd.cs: Add tests for accessors of Vector4f.
3573
3574 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3575
3576         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
3577
3578         * cpu-x86.md: Same.
3579
3580         * mini-x86.c (mono_arch_output_basic_block): Same.
3581         
3582         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
3583
3584 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3585
3586         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
3587
3588 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3589
3590         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
3591
3592         * cpu-x86.md: Same.
3593
3594         * mini-x86.c (mono_arch_output_basic_block): Same.
3595         
3596         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
3597
3598 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3599
3600         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
3601
3602 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3603
3604         * simd-intrinsics.c: Enable setters for Vector16sb.
3605
3606 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
3607
3608         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
3609
3610         * cpu-x86.md: Same.
3611
3612         * mini-x86.c (mono_arch_output_basic_block): Same.
3613         
3614         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
3615
3616 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
3617
3618         * simd-intrinsics.c: Implement setter for Vector8us.
3619
3620 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
3623         for dead variables.
3624
3625 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3626
3627         * mini-ppc.c: remove references to the red zone in the prolog
3628         (for systems that don't support it).
3629
3630 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3631
3632         * cpu-ppc64.md: Fixed a few instruction lengths.
3633
3634         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
3635         now.
3636
3637 2008-11-19  Mark Probst  <mark.probst@gmail.com>
3638
3639         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
3640         basic.exe now.
3641
3642 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
3643
3644         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
3645
3646 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
3647
3648         * mini-ops.h: Added OP_INSERT_I2.
3649
3650         * cpu-x86.md: Same.
3651
3652         * mini-x86.c (mono_arch_output_basic_block): Same.
3653         
3654         * simd-intrinsics.c: Implement setter for Vector8s.
3655
3656         * simd-methods.h: Add the names of get setters of Vector8s.
3657
3658 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
3661         
3662         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
3663         parameters.
3664
3665         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3666
3667 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3668
3669         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
3670         for PPC64.  An empty program runs now.
3671
3672 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
3675
3676         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
3677         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
3678         info for JITted code is emitted into a shared library, loadable into gdb.
3679
3680 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3681
3682         * Makefile.am: Changes to build PPC64.
3683
3684         * mini-arch.h: Include mini-ppc64.h on PPC64.
3685
3686 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3687
3688         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
3689         in PPC code up to r119147.
3690
3691 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3692
3693         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3694         cpu-ppc64.md: Changes for PPC64.
3695
3696         Based on code submitted by andreas.faerber@web.de at
3697         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
3698         X11/MIT license.
3699
3700 2008-11-18  Mark Probst  <mark.probst@gmail.com>
3701
3702         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
3703         cpu-ppc64.md: Copied from the corresponding PPC files from
3704         r118846.
3705
3706 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
3707
3708         * mini-ops.h: Added OP_ROUND.
3709
3710         * cpu-x86.md: Added round.
3711
3712         * mini-x86.c: Added support for intrinsicing Math.Round (double).
3713
3714         * basic-math.cs: Added test_0_round to test rounding.
3715
3716         Contributed under MIT/X11 license.
3717
3718 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3719
3720         * aot-compiler.c : Fix the Winx64 build.
3721
3722         Contributed under MIT/X11 license.
3723
3724 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3725
3726         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
3727         in OP_EXTRACT_R8 to avoid possible stack corruption.
3728
3729 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3730
3731         * mini-ops.h: Added OP_EXTRACT_R8/I8.
3732
3733         * cpu-x86.md: Added extract_r8.
3734
3735         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
3736         
3737         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
3738         a couple of OP_EXTRACT_I4.
3739
3740         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
3741
3742         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
3743
3744 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
3745
3746         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
3747         and not 4.1. 
3748
3749 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
3752         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
3753
3754         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
3755         are not needed any more.
3756
3757         * mini.h: Remove the unused INS_LIST macros.
3758
3759         * mini.c (mini_method_compile): Remove a disable globalra case which is no
3760         longer needed.
3761
3762         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
3763         ir-emit.h.
3764
3765         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
3766         mono_alloc_ireg () instead.
3767
3768         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
3769         macros.
3770
3771         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
3772         on amd64.
3773
3774         * aot-runtime.c (load_aot_module): Disable AOT when running under
3775         CAS.
3776
3777         * mini-amd64.h: Change the monitor fastpath defines to check for
3778         !PLATFORM_WIN32 so they work on *bsd too.
3779
3780         * mini.h mini.c mini-hhpa.c: Remove more unused code.
3781
3782         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
3783
3784         * mini.h (MonoCompile): Remove new_ir flag.
3785
3786         * regalloc.h regalloc.c: Remove unused code.
3787
3788         * cpu-*.md: Remove more unused opcodes.
3789
3790         * simple-cee-ops.h simple-mini-ops.h: Removed.
3791
3792         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
3793         
3794 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * aliasing.h: Removed.
3797
3798         * *.c: Remove references to aliasing.h and inssel.h.
3799
3800         * mini.c: Remove additional unused functions.
3801
3802         * mini-ops.h cpu-*.md: Remove unused opcodes.
3803
3804 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3805
3806         Remove the old JIT code.
3807
3808         * inssel*.brg: Removed.
3809
3810         * ssa.c abcremoval.c aliasing.c: Removed.
3811
3812         * ssa2.c: Renamed to ssa.c.
3813
3814         * abcremoval2.c: Renamed to abcremoval.c.
3815
3816         * *.c: Removed all !cfg->new_ir code.
3817
3818         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
3819         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
3820
3821         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
3822         
3823 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
3826         to simplify the code and cut back on the number of global symbols in the AOT
3827         file.
3828         
3829         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
3830
3831 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
3834         with the got/got_info tables.
3835
3836         * mini.h: Bump AOT file format version.
3837         
3838         * unwind.h: New file, contains definitions for stack unwinding.
3839
3840         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
3841         to cfg->unwind_ops.
3842         
3843         * aot-compiler.c: Generalize the emitting of unwind information to use the
3844         information in cfg->unwind_ops.
3845
3846         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
3847
3848         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
3849         AOT method frames. Enable writing symbols for methods by default.
3850
3851 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
3852
3853         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
3854         and make it work with vectors of element sizes 1, 2 and 4.
3855
3856         * simd-intrinsics.c: Enable getter for all vectors with element size
3857         1, 2 or 4.
3858
3859         * simd-methods.h: Add the names of other getters.
3860
3861         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
3862
3863         * cpu-x86.md: Same.
3864
3865         * mini-x86.c: Same.
3866
3867 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
3868
3869         * mini-ppc.h: portability fix.
3870
3871 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3872
3873         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
3874         buggy and will overwrite it.
3875
3876 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3877
3878         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
3879         Use it to emit local symbols for all methods so AOTed methods show up with
3880         their full name in gdb/valgrind output.
3881
3882 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
3883
3884         * mini-ppc.c: portability fixes.
3885
3886 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
3889         entries out of the if (!generic_shared...) code so it is always done.
3890         (mono_class_init_trampoline): Do the patching when running under valgrind
3891         too, newer versions of valgrind have no problems with it.
3892
3893 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
3896         further sections.
3897
3898 2008-11-13  Mark Probst  <mark.probst@gmail.com>
3899
3900         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
3901         filters.
3902
3903 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3904
3905         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
3906
3907 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3908
3909         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
3910
3911         * cpu-x86.md: Same.
3912
3913         * mini-x86.c: Same.
3914
3915         * simd-intrinsics.c: Same.
3916
3917 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3918
3919         * simd-intrinsics.c: Enable constructor intrinsics for all types.
3920
3921 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
3924         to work with more Vector types.
3925
3926 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
3927
3928         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
3929         store the elemens directly instead of using and intermediate.
3930
3931 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
3934
3935         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
3936         to preserve %eax for aot plt trampolines.
3937
3938         * aot-compiler.c (compile_method): Don't skip synchronized methods.
3939         (encode_method_ref): Flag synchronized methods so they won't go through
3940         the AOT trampoline.
3941
3942         * aot-compiler.c: Additional work to support AOTing synchronized methods/
3943         wrappers.
3944
3945         * cpu-ia64.md (jmp): Increase max length.
3946
3947 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3948
3949         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
3950         open generic classes.
3951
3952         * aot-compiler.c: Enable the ELF writer on ELF platforms.
3953
3954         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
3955         box+brtrue optimization since it causes test failures on x86.
3956
3957 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3958
3959         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
3960
3961         * cpu-x86.md: Same.
3962
3963         * mini-x86.c: Same.
3964
3965         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
3966         for simd ctor values. 
3967
3968         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
3969         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
3970
3971 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
3972
3973         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
3974         LogicalRightShift.
3975
3976         * simd-instrincs.c: Same.
3977
3978         * basic-simd.cs: Same.
3979
3980 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
3981
3982         * ratests.cs: Add more tests.
3983
3984         * regalloc2.c (add_spill_code): Handle more corner cases.
3985
3986 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
3987
3988         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
3989         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
3990         both the source an destination of an instruction.
3991
3992 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
3993
3994         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
3995         wapihandles.c: more portability changes.
3996
3997 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
3998
3999         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
4000         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
4001         safe to execute in a signal handler and the kernel provides better
4002         the info in /proc/self/smaps. Avoid the assert on sigaction during
4003         cleanup.
4004
4005 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
4008         do the bblock linking hack if it is actually needed.
4009
4010         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
4011         up linking.
4012
4013         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
4014         crash problem is fixed.
4015
4016         * branch-opts.c (mono_remove_critical_edges): Link up newly added
4017         bblocks.
4018
4019         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
4020         for catch clauses.
4021         (mini_method_compile): Set the starting value of next_vreg to 
4022         MAX_IREGS + MAX_FREGS when using globalra.
4023
4024         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
4025         filter clauses with BB_EXCEPTION_HANDLER.
4026
4027         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
4028
4029 2008-11-10  Mark Probst  <mark.probst@gmail.com>
4030
4031         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
4032         space for stdcall.  Fixes regressions on Win32.
4033
4034 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
4037         bblocks.
4038         (linear_scan): Remove an assert which doesn't seem to be needed.
4039
4040         * local-propagation.c (mono_local_deadce): Avoid a call to
4041         MONO_DELETE_INS which would screw up the instruction linking.
4042
4043         * mini.c (mono_decompose_op_imm): Make this work with globalra.
4044
4045         * regalloc2.c: Upgrade to work the current JIT code.
4046
4047 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
4048
4049         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
4050         case.
4051
4052         * aot-runtime.c: Remove some dead code.
4053
4054         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
4055         consistency.
4056         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
4057
4058         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
4059         trampolines using sscanf since atoi doesn't work on large unsigned values.
4060
4061         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
4062         Initialize code_size.
4063
4064 2008-11-08  Mark Probst  <mark.probst@gmail.com>
4065
4066         * method-to-ir.c (mini_emit_inst_for_method): Make
4067         Interlocked.CompareExchange work for Int arguments on 32 bit
4068         archs, as well.
4069
4070 2008-11-07  Mark Probst  <mark.probst@gmail.com>
4071
4072         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
4073
4074 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
4075
4076         * main.c Fix MSVC build.
4077
4078         Contributed under MIT/X11 license.
4079
4080 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4081
4082         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
4083         alignment larger than 8 bytes are aligned correctly, too.
4084
4085         * mini.c: Honor the min_align field of MonoClass when laying out
4086         the stack.
4087
4088 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
4091
4092         * aot-compiler.c (emit_plt): Fix a warning.
4093         
4094         * aot-compiler.c: Implement ARM support in the binary writer.
4095
4096 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4097
4098         * basic-simd.cs: Add test for getter with byref arg.
4099         Fix the naming of a few tests.
4100         Add missing checks to a test.
4101
4102 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4103
4104         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
4105
4106         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
4107         most of the full-aot support for monitor enter/exit trampolines.
4108
4109         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
4110         enter/exit trampoline creation functions.
4111
4112         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
4113         make dist.
4114
4115 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
4116
4117         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
4118         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
4119         implement the needed functionality without adding crap to the runtime.
4120
4121 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
4122
4123         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
4124         non-x86 builds.
4125
4126         * mini.c (mono_build_date): New global version holding the build date in
4127         string format.
4128         
4129         * Makefile.am (buildver.c): Generate a file containing the build date.
4130
4131         * main.c: Set the build date from the generated file.
4132
4133         * mini.c (mono_get_runtime_build_info): New helper function returning build
4134         information in a string format.
4135         
4136         * driver.c (mono_main): Print the build date in --version.
4137
4138         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
4139         file when the bind-to-runtime-version option is used.
4140
4141 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4142
4143         * simd-intrinsics.c: Fix bug when using getters and byref args. 
4144
4145 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
4146
4147         * simd-methods.h: Rename prefetch methods.
4148
4149         * simd-intrinsics.c: Same.      
4150
4151 2008-11-05  Mark Probst  <mark.probst@gmail.com>
4152
4153         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
4154         sizes.
4155
4156 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * aot-compiler.c: Use the bundled elf header files instead of depending on
4159         the system one.
4160         
4161         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
4162         mempool.
4163
4164         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
4165         on every call.
4166
4167 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
4168
4169         * cpu-x86.md: Add store nta ops.
4170
4171         * mini-ops.h: Same.
4172
4173         * mini-x86.c: Same.
4174
4175         * mini.h: Add an enum for simd prefetch modes.
4176
4177         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
4178         of store. Use the changed code to support store nta.
4179
4180         * simd-intrinsics.c: Add prefetch ops for all vector types.
4181
4182 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4183
4184         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
4185         threads.
4186         
4187         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
4188         names.
4189
4190         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
4191         trampolines.
4192
4193 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4194
4195         * mini-x86.c: Fixed commit.
4196
4197 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * aot-compiler.c (emit_plt): Align the plt section only on x86.
4200
4201 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4202
4203         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
4204         and MONITOR_EXIT, for the ASM fastpaths.
4205
4206         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
4207         available.
4208
4209         * mini.c, patch-info.h: Signature and patch infos for
4210         Monitor.Enter/Exit trampolines.
4211
4212         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
4213
4214         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
4215         Monitor.Enter/Exit ASM fastpath for Linux.
4216
4217 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4218
4219         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
4220
4221         * objects.cs: Add a new test.
4222         
4223         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
4224
4225         * aot-runtime.c (load_method): Run class initialization in the PLT case even
4226         if MONO_LOG_LEVEL is set.
4227
4228         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
4229
4230         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
4231
4232         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
4233         
4234         * aot-compiler.c: Change the relocation code to use virtual addresses instead
4235         of file offsets. Align the sections belonging to the data segment to 
4236         PAGESIZE.
4237
4238 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4239
4240         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
4241         elf.h. Port it to amd64.
4242
4243 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4244
4245         * driver.c: Enable SIMD by default.
4246
4247 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
4248
4249         * cpu-x86.md: Add prefetch op.
4250
4251         * mini-ops.h: Same.
4252
4253         * mini-x86.c: Same.
4254
4255         * mini.h: Add an enum for simd prefetch modes.
4256
4257         * simd-methods.h: Add prefetch function names.
4258
4259         * simd-intrinsics.c: Add prefetch ops for all vector types.
4260
4261 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * aot-compiler.c (emit_bytes): Speed this up a little.
4264
4265 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * aot-compiler.c: Add JIT time etc. statistics.
4268         
4269         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
4270
4271         * mini.h (MonoCompile): Add 'got_offset' field.
4272
4273         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
4274         method_got_offsets array.
4275
4276         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
4277         wrappers.
4278
4279         * aot-compiler.c (compile_method): Add generic method instances referenced
4280         by the method to the list of methods to be compiled, this is required so if
4281         A<T> references B<T>, and another assembly references A<int>, then it will
4282         also get a copy of B<int>.
4283
4284         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
4285         when checking for monitor enter/exit.
4286
4287 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4288
4289         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
4290         for Monitor.Enter and Monitor.Exit if enabled.
4291
4292         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
4293         Solaris.
4294
4295 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
4298         of an OP_MOVE. Fixes #440046.
4299
4300         * basic-long.cs: Add a new test.
4301
4302 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4303
4304         * mini.h: Add synchronization note for the managed counter-part.
4305
4306         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
4307         returns the simd caps of the current cpu.
4308
4309 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
4310
4311         * basic-simd.cs: Remove Console.WriteLine.
4312
4313 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4314
4315         * basic-simd.cs: New tests for Vector2ul.
4316
4317 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4318
4319         * simd-intrinsics.c: Add new vector type Vector2ul.
4320
4321 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4322
4323         * basic-simd.cs: New tests for Vector2l.
4324
4325 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4326
4327         * cpu-x86.md: Add long version of most packed int ops.
4328
4329         * mini-ops.h: Same.
4330
4331         * mini-x86.h: Same.
4332
4333         * simd-intrinsics.c: Add new vector type Vector2l.
4334
4335 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4336
4337         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
4338
4339         * simd-methods.h: Remove SN_op_BitwiseXor.
4340
4341 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4342
4343         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
4344         alignment.
4345
4346 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * basic-simd.cs: Test for Vector2d.
4349
4350         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
4351         value.
4352
4353 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4354
4355         * cpu-x86.md: Add double version of all packed float ops.
4356
4357         * mini-ops.h: Same.
4358
4359         * mini-x86.h: Same.
4360
4361         * simd-intrinsics.c: Add new vector type Vector2d.
4362
4363         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
4364
4365         * simd-methods.h: Add Duplicate.
4366
4367 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4368
4369         * basic-simd.cs: Test for packing with signed saturation.
4370
4371 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
4374         found in the TYPESPEC table.
4375
4376 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4377
4378         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
4379         too.
4380
4381         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
4382
4383         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
4384         instead of the RVA, since the RVA can be changed by tools like the cil 
4385         stripper.
4386
4387         * method-to-ir.c (mono_method_to_ir2): Ditto.
4388
4389         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
4390         (deserialize_variable): Ditto.
4391
4392 2008-10-25  Martin Baulig  <martin@ximian.com>
4393
4394         * debug-mini.c (write_variable): Use
4395         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
4396
4397 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4398
4399         * cpu-x86.md: Add unsigned variants of packd and packw.
4400
4401         * mini-ops.h: Same.
4402
4403         * mini-x86.h: Emit the right instruction for packd and packw.
4404         Add unsigned variants of packd and packw.
4405
4406         * simd-intrinsics.c: Packd and packw were used in place of their
4407         unsigned variants. Change that.
4408         Add intrinsics for (Signed)PackWithSignedSaturation.
4409
4410         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
4411
4412 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4413
4414         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
4415
4416 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4417
4418         * mini-ops.h: Remove dword packed add/sub with saturation ops.
4419
4420         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
4421
4422         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
4423         sse instructions.
4424
4425         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
4426
4427 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4428
4429         * method-to-ir.c, mini.c: Special casing for the synchronized
4430         wrapper for the ldtoken+GetTypeFromHandle case.
4431
4432 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * mini.c (mono_replace_ins): Move this to branch-opts.c.
4435
4436         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
4437         created/split bblocks.
4438
4439 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4440
4441         * mini-ops.h: Add packed signed mul high.
4442         
4443         * cpu-x86.md: Same.
4444
4445         * mini-x86.c (mono_arch_output_basic_block): Same.
4446
4447         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
4448
4449         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
4450
4451 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4452
4453         * basic-simd.cs: Tests for Vector16sb.
4454
4455 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
4458
4459 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4460
4461         * mini-ops.h: Add packed signed min, max and compare greater.
4462         
4463         * cpu-x86.md: Same.
4464
4465         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
4466         saturation.
4467
4468         * simd-methods.h: Add CompareGreaterThan.
4469
4470         * simd-methods.h: Remove CompareEquals.
4471
4472         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
4473
4474         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
4475
4476         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
4477         CompareEqual.
4478
4479 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * basic-simd.cs: Fix tests due to change in the API.
4482
4483 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4484
4485         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
4486
4487 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4488
4489         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
4490
4491         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
4492         inst_offset as this has invalid values for LDADDR.
4493
4494 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4495
4496         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4497
4498         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
4499
4500 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
4503         for accessing field->data.
4504
4505 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4506
4507         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
4508
4509 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
4510
4511         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
4512
4513         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
4514
4515 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4516
4517         * dominators.c (mono_compute_natural_loops): Allocate GList enties
4518         from the cfg mempool.
4519
4520 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4521
4522         * basic-simd.cs: Tests for new methods in Vector8us.
4523
4524 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         * mini-ops.h: Add multiply and store high.
4527         
4528         * cpu-x86.md: Same.
4529
4530         * mini-x86.c (mono_arch_output_basic_block): Same.
4531
4532         * simd-methods.h: Same.
4533
4534         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
4535         and CompareEqual.
4536
4537 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
4540         mono_class_setup_vtable ().
4541
4542         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
4543         mono_class_get_vtable_entry () for accessing klass->vtable.
4544
4545         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
4546
4547         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
4548         found.
4549
4550         * method-to-ir.c (mono_save_token_info): Don't save references made from
4551         wrappers.
4552
4553         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
4554         of generic instances.
4555
4556         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
4557
4558 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4559
4560         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
4561         OP_JMP depends on the method signature.  Calculate it properly.
4562
4563 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4564         
4565         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
4566         called directly.
4567
4568         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
4569         instances.
4570         (emit_extra_methods): Add another table mapping method indexes to 
4571         offsets in the extra_method_info table.
4572
4573         * mini.h: Bump AOT file format version.
4574         
4575         * aot-runtime.c: Merge most of the code from mono_aot_get_method
4576         and mono_aot_get_method_from_token () into one function.
4577
4578 2008-10-19  Mark Probst  <mark.probst@gmail.com>
4579
4580         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
4581         separate counter.
4582
4583 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
4586         methods.
4587
4588         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
4589         disable_aot.
4590
4591         * mini.c (mono_patch_info_equal): Compare the generic context as well.
4592
4593         * mini.h: Bump aot file format version.
4594
4595         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
4596         AOT file can contain native code for methods which are not in the METHOD
4597         table. Generate code for non-sharable generic instances of generic methods
4598         found in the METHODSPEC table.
4599         
4600         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
4601         encoding generic type handles.
4602
4603         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
4604         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
4605
4606         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
4607         macros + MONO_ADD_INS.
4608
4609         * mini.c (mono_jump_info_token_new2): New function which takes a generic
4610         context as well.
4611
4612         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
4613
4614         * mini.h: Bump aot file format version.
4615
4616         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
4617
4618 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4619
4620         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
4621         platforms, with definable stack alignment value.  Set to 16 now
4622         for all platforms.
4623
4624         * mini.c, mini.h, driver.c: Command line option for disabling
4625         stack alignment.
4626
4627 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * basic-simd.cs: Tests for new methods in Vector4ui.
4630
4631 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4632
4633         * mini-ops.h: Add packed int shuffle.
4634         
4635         * cpu-x86.md: Same.
4636
4637         * mini-x86.c (mono_arch_output_basic_block): Same.
4638
4639         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
4640         extract mask, max, min, shuffle.
4641
4642         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
4643
4644 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
4645
4646         * basic-simd.cs: Tests for new methods in Vector8us.
4647
4648 2008-10-17  Mark Probst  <mark.probst@gmail.com>
4649
4650         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
4651         RuntimeTypeHandle, not a TypedReference.
4652
4653 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
4654
4655         * simd-intrinsics.c: remove relocations.
4656
4657 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
4660         optimizations from the x86 backend.
4661
4662 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
4663
4664         * simd-methods.h, simd-intrinsics.c: debloat method names and
4665         prepare for no relocations.
4666
4667 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4668
4669         * mini-ops.h: Add packed min/equal and sum of absolute differences.
4670         
4671         * cpu-x86.md: Same.
4672
4673         * mini-x86.c (mono_arch_output_basic_block): Same.
4674
4675         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
4676         extract mask, max, min and sum of absolute differences.
4677
4678         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
4679         method name.
4680
4681 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4682
4683         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
4684         Renamed one test for consistency.
4685
4686 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
4689         fix to the code that deal with other blocks.
4690
4691 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4692
4693         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
4694
4695 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
4696
4697         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
4698         that deals with vreg interference. Explicitly check for OP_LDADDR to be
4699         able to process the source reg.
4700
4701 2008-10-16  Martin Baulig  <martin@ximian.com>
4702
4703         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
4704
4705         * inssel.brg: Add `OP_HARD_NOP'.
4706
4707         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
4708
4709         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
4710         `OP_HARD_NOP' instruction when running inside the debugger.
4711
4712         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
4713         `OP_HARD_NOP' instruction when running inside the debugger.
4714
4715 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
4718         now works. The issue with the regalloc tripping up no longer
4719         happens.
4720
4721         * simd-intrinsics.c (load_simd_vreg): Same.
4722
4723 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4724         
4725         * basic-simd.cs: Tests for new Vector8ui methods.
4726
4727 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4728
4729         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
4730         only for type. This fixes crashes where MonoInst::klass is checked
4731         for ops of type != VTYPE or OBJ.
4732
4733         * simd-intrinsics.c (load_simd_vreg): Same.
4734
4735 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * mini-ops.h: Add ops for packed shuffle/max/avg and
4738         extract mask.
4739         
4740         * cpu-x86.md: Same.
4741
4742         * mini-x86.c (mono_arch_output_basic_block): Same.
4743
4744         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
4745         extract mask.
4746
4747         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
4748         to emit extract mask op.
4749
4750         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
4751         to emit word shuffles.
4752
4753 2008-10-15  Mark Probst  <mark.probst@gmail.com>
4754
4755         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
4756         the largest alignment needed by a variable, but at least
4757         sizeof(gpointer).
4758
4759 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         * basic-simd.cs: Tests for the fixes in the last commit.
4762
4763 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4764
4765         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
4766         no longer handles STACK_PTR input.
4767
4768         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
4769
4770         * simd-intrinsics.c (load_simd_vreg): New function that works like 
4771         get_simd_vreg   but handles STACK_PTR input.
4772
4773         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
4774         as the input can be an arbitrary pointer.
4775
4776         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
4777         LDADDR local optimization directly otherwise use a store op.
4778
4779 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4780
4781         * basic-simd.cs: Tests for dup low and dup high.
4782
4783 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
4784
4785         * mini-ops.h: Add dup low and dup high ops.
4786         
4787         * cpu-x86.md: Same.
4788
4789         * mini-x86.c (mono_arch_output_basic_block): Same.
4790
4791         * simd-intrinsics.c (vector4f_intrinsics): Same.
4792
4793 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4794
4795         * basic-simd.cs: Tests for recently added functionality.
4796
4797 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4798
4799         * mini-ops.h: Add remaining sse1 fp ops.
4800         
4801         * cpu-x86.md: Add remaining sse1 fp ops.
4802
4803         * mini-x86.c (mono_arch_output_basic_block): Same.
4804
4805         * mini.h: Add enum for simd FP compare conditions.
4806
4807         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
4808
4809         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
4810         so the backed can generate the appropriate op.
4811
4812 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
4813         This patch squeese one more byte from the SimdIntrinsc struct.
4814
4815         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
4816         a a shift amount intead of simply or'ing it.
4817
4818         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
4819
4820         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
4821         byte so we can have an aditional flags field without increasing struct size.
4822
4823         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
4824         against the simd_supported_versions bitmask.
4825
4826         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
4827
4828 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
4829
4830         * mini.c: remove rawbuffer code (the only use here is unsafe because
4831         it takes locks during signal handling and the kernel now provides much
4832         better info in proc/pid/smaps these days).
4833
4834 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
4837         OP_X86_PUSH_OBJ. Fixes #434620.
4838
4839         * objects.cs: Add a test.
4840         
4841 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
4844         that the packuswb/packusdw don't work with unsigned numbers for what
4845         would be negative numbers in signed format.
4846
4847         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
4848         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
4849
4850         * mini-ops.h: Add doubleword forms of many ops and packing ones.
4851
4852         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
4853
4854         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
4855
4856         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
4857
4858         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
4859         add more ops.
4860
4861         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
4862         version as the enum in mini.h.
4863
4864         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
4865         for sse3 ops, check the simd_version field if present. This way the code
4866         works with all versions of sse.
4867
4868 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4869
4870         * simd-intrinsics.c: Fixed intrinsic name typo.
4871
4872         * mini.h: Added missing simd exported function.
4873
4874         * basic-simd.cs: Added tests for Vector4ui.
4875         Fixed broken test for Vector16b.
4876
4877 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4878
4879         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
4880         the max length to 64.
4881
4882 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4883
4884         * method-to-ir.c: Only do the fast virtual generic method call for
4885         non-wrapper methods.
4886
4887         * mini.h, mini-trampolines.c: The new generic virtual remoting
4888         trampoline handles virtual method calls via the vtable (as done by
4889         the fast virtual generic method calls) to remoting proxies.
4890
4891         * mini.c (mono_jit_create_remoting_trampoline): For generic
4892         methods reate a generic virtual remoting trampoline.
4893
4894         * mini-amd64.h: Enable fast virtual generic method calls again.
4895
4896 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4897
4898         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
4899         restore registers when doing tail calls.
4900
4901 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4902
4903         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
4904         Vector4ui.
4905
4906 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4907
4908         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
4909
4910 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4911
4912         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
4913
4914 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4915
4916         * basic-simd.cs: Retrofit for API changes.
4917
4918 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4919
4920         * mini-ppc.c: Handle integer stack arguments for tail calls.
4921
4922 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4923
4924         * optflags-def.h: Removed sse3 optimization.
4925
4926         * driver.c: Same.
4927
4928         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
4929         sse3.
4930
4931         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
4932
4933         * mini.h: Added enumeration with simd versions.
4934
4935         * simd-intrinsics.c (emit_intrinsics): Use the new static var
4936         for detecting SSE3.
4937
4938         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
4939
4940         * mini.c (mini_init): Call mono_simd_intrinsics_init.
4941
4942 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4943
4944         * basic-simd.cs: Added tests for Vector8u and Vector16u.
4945
4946         * basic-simd.cs: Fixed test naming.
4947
4948 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4949
4950         * mini-ops.h: Added ops for packed and saturated math, shifts
4951         and packing/unpacking.
4952
4953         * cpu-x86.md: Added descriptors for the above ops.
4954
4955         * mini-x86.c: Added code to emmit the above ops.
4956
4957         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
4958
4959 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4960
4961         * aot-compiler.c (compile_method): Enable AOT for generic code.
4962
4963         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
4964
4965 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
4966
4967         * mini.c: add a workaround for a common screwup that ends up blamed
4968         to mono (other processes blocking signal delivery).
4969
4970 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
4973         in the LDFLD/STFLD opcodes. Fixes #432673.
4974
4975         * iltests.il.in: Add a new test.
4976
4977 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
4978
4979         * mini-arm.c: attach the thread in unmanaged->managed transitions
4980         using delegates (bug #433148).
4981
4982 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4983
4984        * basic-simd.cs: Use new ShuffleSel constants.
4985
4986 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
4989
4990         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
4991         only disable simd intrinsics if no sse2 is detected.
4992
4993         * optflags-def.h: Added sse3.
4994
4995         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
4996         is disabled.
4997
4998 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
4999
5000         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
5001         when adding delegate-invoke wrappers.
5002
5003 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * Makefile.am: Reenable the simd tests.
5006
5007 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
5008
5009         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
5010           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
5011           other vreg is allocated to that hreg.
5012
5013         Contributed under MIT/X11 license.
5014
5015 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5016
5017         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
5018         yet checked in.
5019
5020 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * basic-simd.cs: New test suite for SIMD intrinsics.
5023
5024         * Makefile.am: Added new tests.
5025
5026 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
5029
5030         * mini-ops.h: Same.
5031
5032         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
5033
5034         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
5035         using SSE2 aware opcodes.
5036
5037         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
5038         is enabled, this code path is only reachable if conversion ops are emmited after
5039         mono_method_to_ir.
5040
5041         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
5042
5043         This optimization saves 6 bytes per conversion against the old version.
5044
5045 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5046
5047         * aot-compiler.c (compile_method): Don't skip methods referencing 
5048         generic methods without a corresponding entry in token_info_hash, since
5049         encode_method_ref () can handle all generic methods now.
5050
5051         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
5052         generic context is set.
5053         
5054         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
5055         generic sharing of LDTOKEN.
5056
5057 2008-10-06  Mark Probst  <mark.probst@gmail.com>
5058
5059         * mini-amd64.h: Temporarily disabled fast virtual generic method
5060         calls because it breaks the System.Runtime.Remoting tests.
5061
5062 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5063
5064         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
5065
5066         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
5067         so inlining actually works.
5068         (check_inline_caller_method_name_limit): Ditto.
5069
5070 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
5071
5072         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
5073         64 bit safety (from Olaf Hering and Andreas Farber).
5074
5075 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
5076         
5077         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
5078         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
5079         unused virtual call support code.
5080
5081         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
5082         
5083         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
5084         which can't use aot trampolines.
5085         (decode_patch): Don't create aot trampolines for methods which can't use
5086         them.
5087
5088         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
5089         use aot trampolines.
5090
5091         * mini.h: Bump AOT image format version.
5092         
5093 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
5094
5095         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
5096         to save_token_info () since cmethod is inflated for constrained calls.
5097
5098         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
5099
5100 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
5101
5102         * Makefile.am: Add build rules for ppc64.
5103         This avoids the build failing at pedump with unresolved symbols
5104         due to lack of arch_sources. Instead it will now fail earlier
5105         due to lack of cpu-ppc64.md.
5106
5107         Contributed under MIT/X11 license.
5108
5109 2008-10-04  Mark Probst  <mark.probst@gmail.com>
5110
5111         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
5112         tail calls.
5113
5114         * iltests.il.in: Add test case for tail call with many arguments.
5115
5116 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5117
5118         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
5119         to the fast virtual generic method code until the aot case is fixed.
5120
5121 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5122
5123         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
5124
5125 2008-10-03  Mark Probst  <mark.probst@gmail.com>
5126
5127         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
5128         thunks.
5129
5130 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5131         
5132         * simd-intrinsics.c: Forgot to add this one.
5133
5134         * mini-codegen.c: Fix macro in case SIMD is not supported.
5135
5136 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
5137         
5138         This patch land initial JIT support for simd intrinsics.
5139
5140         * mini-x86.h: Added new define to make --enable_minimal work on x86.
5141
5142         * Makefile.am: Added simd-intrinsics.c
5143
5144         * simd-intrinsics.c: New file with simd instrinsic related
5145         code.
5146
5147         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
5148
5149         * cpu-x86.md: Add simd related instructions.
5150
5151         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
5152
5153         * driver.c: Added two new --regression variants.
5154
5155         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
5156
5157         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
5158
5159         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
5160         extract some complicated logic to helper functions.
5161
5162         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
5163
5164         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
5165
5166         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
5167         the specialized simplification pass.
5168
5169         * method-to-ir.c (mono_spill_global_vars): Use new macro.
5170
5171         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
5172
5173         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
5174         table.
5175
5176         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
5177         if MONO_ARCH_NEED_SIMD_BANK is defined.
5178
5179         * mini-ops.h: Added the new simd ops.
5180
5181         * mini-x86.c: Added mono_arch_xregname.
5182
5183         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
5184
5185         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
5186
5187         * mini-x86.h: Define simd related MONO_ARCH macros.
5188
5189         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
5190
5191         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
5192
5193         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
5194         MONO_CLASS_IS_SIMD to deal with simd related IR.
5195
5196         * mini.h (MonoInst): Added spill_var to the backend union.
5197
5198         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
5199
5200         * mini.h: Added forward declarations of the new simd fuctions.
5201
5202         * optflags-def.h: Added new optimization names SIMD.
5203
5204         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
5205
5206         * regalloc.h: Added support for working with 3 register banks.
5207
5208         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
5209
5210         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
5211
5212 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
5213
5214         * mini-exceptions.c: remove 64 bit related ifdef clutter.
5215
5216 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
5219         instead of one on 64 bit systems.
5220
5221         * method-to-ir.c: Remove unused includes.
5222
5223 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
5226         cfg->used_int_regs, since the two are different on arm.
5227
5228 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5229
5230         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
5231         mono_method_get_vtable_index() to get the vtable index.
5232
5233 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5234
5235         * method-to-ir.c (mono_method_to_ir2): Don't create native
5236         wrappers for array methods, because they're never called (and if
5237         they were called they wouldn't work).
5238
5239 2008-10-02  Mark Probst  <mark.probst@gmail.com>
5240
5241         * method-to-ir.c (mono_method_to_ir2): Array methods are
5242         special-cased and must not be invoked indirectly via the (M)RGCTX
5243         when generic sharing is turned on.  Fixes #431413.
5244
5245 2008-10-01  Mark Probst  <mark.probst@gmail.com>
5246
5247         * method-to-ir.c: When generic sharing is active, call
5248         non-interface virtual generic methods via the standard trampoline.
5249
5250         * mini-trampolines.c: Handle virtual generic shared methods.
5251
5252         * mini.h, mini-x86.c, mini-x86.h: New argument for
5253         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
5254         method thunks and which is the trampoline to call if the lookup
5255         fails.  Enable the virtual generic method thunk for x86.
5256
5257         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
5258         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
5259         argument but assert that it's NULL, because these archs don't yet
5260         implement the virtual generic method thunk.  Changes in the IMT
5261         thunk data structures.
5262
5263 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
5264
5265         * aot-compiler.c (emit_globals): Avoid invalid characters in
5266         the static linking symbol.
5267
5268         * objects.cs: Add a test for the range check optimization. Fix warnings.
5269
5270         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
5271         optimization from the current JIT.
5272
5273         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
5274         later in decompose_array_access_opts () to allow more optimizations.
5275
5276         * method-to-ir.c (mono_handle_soft_float): Rename this to 
5277         mono_decompose_soft_float () for consistency.
5278
5279         * mini-ops.h: Fix arguments of OP_STRLEN.
5280
5281         * method-to-ir.c (save_cast_details): Extract the cast details saving code
5282         into a separate function.
5283         (reset_cast_details): Ditto.
5284         (handle_unbox): Save cast details. Fixes #431254.
5285
5286         * method-to-ir.c: Remove some obsolete FIXMEs.
5287
5288 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5289
5290         * ir-emit.h (alloc_dreg): Write a warning before crashing.
5291
5292 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5293
5294         * mini-codegen.c: More work on macros to make them
5295         ready for multiple regbanks.
5296
5297 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5298
5299         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
5300
5301         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
5302
5303 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5304
5305         * mini-codegen.c (mono_spillvar_offset): Proper support for
5306         multiple regbanks.
5307
5308 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
5311         the stack overflow changes.
5312
5313 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * mini-codegen.c: Make all bank macros depend on reg_bank.
5316
5317         * mini-codegen.c (mono_local_regalloc): Make free mask
5318         initialization regbank aware.
5319
5320 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5321
5322         * mini-codegen.c (mono_local_regalloc): Extract callee
5323         mask selection to a function and make it regbank aware.
5324
5325 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
5326
5327         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
5328         code to deal with many regbanks.
5329
5330 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * mini-codegen.c: More fp->regbank changes.
5333
5334 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5335
5336         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
5337         of a hardcoded constant.
5338
5339 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
5340
5341         * method-to-ir.c (type_from_stack_type): Fix typo.
5342
5343 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * mini-ia64.c (emit_move_return_value): Convert float return values to
5346         double.
5347
5348         * objects.cs: Add a new test.
5349         
5350         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
5351         VARARG methods to fix an assert later.
5352
5353         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
5354         end so it at least compiles.
5355
5356 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
5359
5360 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
5361
5362         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
5363         optimization to a new function (emit_optimized_ldloca_ir) and enable
5364         it for both ldloca and ldloca_s.
5365
5366 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
5367
5368         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
5369         gshared CASTCLASS code.
5370
5371         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
5372         amd64, where the libc stack unwinder encounters stack frames referring to
5373         native code in unmapped memory.
5374
5375         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
5376         sharing.
5377
5378         * generics.cs: Add new test.
5379
5380 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
5381
5382         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
5383         add a check that one of the ARM_FPU_ constants is defined.
5384
5385         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
5386         
5387         * mini-exceptions.c: Fix build on non-altstack platforms.
5388
5389         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
5390         sharing of vtypes.
5391
5392         * ir-emit.h: Add a comment to NEW_PCONST.
5393
5394         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
5395
5396         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
5397
5398         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
5399         after the changes to MonoJitDomainInfo.
5400
5401 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5402
5403         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
5404
5405 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5406
5407         * mini-ppc.c: Compiler warning fixes.
5408
5409 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5410
5411         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
5412         for pinvokes.
5413
5414 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5415
5416         * exceptions-ppc.c, mini-ppc.h: Compile
5417         mono_arch_handle_altstack_exception() on Darwin, too.
5418
5419 2008-09-27  Mark Probst  <mark.probst@gmail.com>
5420
5421         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
5422         work on archs which don't have generic sharing implemented, only
5423         without the vtable_arg.
5424
5425 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5426
5427         * mini.c: Added comment explaining why delegate ctor icall
5428         wrappers are compiled.
5429
5430 2008-09-26  Mark Probst  <mark.probst@gmail.com>
5431
5432         * mini.c: Don't produce trampolines to delegate ctor icall
5433         wrappers but compile them upfront.
5434
5435 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
5436
5437         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
5438         runtime-set function when going back to managed code. Currently this
5439         is used to set back the protection on the soft ovf pages and/or to
5440         throw the stack overflow exception that happened in unmanaged code.
5441
5442 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
5443
5444         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
5445         runtime-set function when going back to managed code. Currently this
5446         is used to set back the protection on the soft ovf pages and/or to
5447         throw the stack overflow exception that happened in unmanaged code.
5448
5449 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5450
5451         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
5452         the support code for restoring stack protection after stack overflows
5453         that happen in unmanaged code. Don't set the exec permission on the
5454         soft overflow area.
5455
5456 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
5459         delegate->method_ptr is set. Fixes #428054.
5460
5461 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * tests.cs: Rename to ratests.cs.
5464
5465         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
5466         emit_get_rgctx_... functions.
5467
5468 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5469
5470         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
5471
5472 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5473
5474         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
5475         before asserting that method is sharable.
5476
5477 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5478
5479         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
5480         whether method needs a static RGCTX wrapper used instead of
5481         complex conditions.
5482
5483         * generic-sharing.c, mini.h: A few functions moved to
5484         metadata/generic-sharing.c.
5485
5486 2008-09-25  Mark Probst  <mark.probst@gmail.com>
5487
5488         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
5489         Generic code sharing for value types, which essentially means
5490         treating value type methods like static methods.  The RGCTX is
5491         passed in the same way.
5492
5493 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
5496         opcode when creating multi-dimensional arrays of open types.
5497
5498         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
5499         open generic types.
5500
5501         * generics.cs: Add a test.
5502
5503         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
5504
5505 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5506
5507         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
5508
5509         * mini.c (mini_method_compile): Set it when running under the debugger. 
5510
5511         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
5512         vreg optimization if the flag is set.
5513
5514         * driver.c (mono_main): Add --attach= option to pass options to
5515         the attach agent.
5516
5517         * mini.c (sigquit_signal_handler): Start the attach agent.
5518
5519         * ssapre.c: Disable this to save space since it is not yet ported to
5520         linear IR.
5521
5522         * regalloc2.c: Disable this to save space.
5523
5524         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
5525
5526 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
5527
5528         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
5529         the -v option useful again.
5530
5531 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
5532
5533         * mini-amd64.c (mono_arch_output_basic_block): Add support for
5534         --break-at-bb.
5535
5536         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
5537         arrays of arrays. Fixes #428406.
5538
5539         * method-to-ir.c (mini_emit_castclass): Ditto.
5540
5541         * objects.cs: Add new test.
5542         
5543 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
5546         was wrong at it choked against target_type_is_incompatible for byref types.
5547
5548 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
5551         places.
5552
5553 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
5554
5555         * mini-exceptions.c: update a few more exceptions-related counters.
5556
5557 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
5558
5559         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
5560         new functions to allocate from persistent mempools.
5561
5562 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
5565         multiple register banks in the future.
5566
5567         * mini-codegen.c (mono_local_regalloc): Fix a warning.
5568
5569 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
5570
5571         * mini.c (type_to_eval_stack_type): Remove duplicated function.
5572
5573         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
5574
5575         * mini.h: Export type_to_eval_stack_type.
5576
5577         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
5578         is only ins->klass of byref types.
5579
5580 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
5581
5582         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
5583         (mini_emit_memcpy2): Ditto.
5584
5585         * mini-amd64.c: Fix a warning.
5586
5587 2008-09-21  Mark Probst  <mark.probst@gmail.com>
5588
5589         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
5590         linking.
5591
5592 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
5593
5594         * method-to-ir.c: Extract stloc micro-optimization to a
5595         function and apply it to all cases.
5596
5597 2008-09-19  Mark Probst  <mark.probst@gmail.com>
5598
5599         * method-to-ir.c: Don't fail generic code sharing in cases we
5600         already support.
5601
5602 2008-09-18  Mark Probst  <mark.probst@gmail.com>
5603
5604         * mini-ppc.c: Handle structs in tailcalls on Darwin.
5605
5606 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
5607
5608         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
5609         implementation.
5610
5611 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
5612
5613         * trace.c: make tracing more useful and correct, with per-thread
5614         id and indent info.
5615
5616 2008-09-15  Mark Probst  <mark.probst@gmail.com>
5617
5618         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
5619         doing a method call and the argument is an R4.
5620
5621 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
5624         generic methods.
5625
5626 2008-09-13  Mark Probst  <mark.probst@gmail.com>
5627
5628         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
5629
5630 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
5631
5632         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
5633         (MONO_JUMP_TABLE_FROM_INS): Ditto.
5634
5635 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5636
5637         * driver.c: Add a --agent argument (not supported yet) to load managed
5638         agent assemblies before loading the main assembly, similarly to how the
5639         Java VM handles agents.
5640
5641 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5642
5643         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
5644         function to do stack layout of local variables.
5645
5646 2008-09-11  Mark Probst  <mark.probst@gmail.com>
5647
5648         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
5649         calculation.
5650
5651 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
5652
5653         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
5654         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
5655         JIT if DISABLE_JIT is defined.
5656
5657         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
5658         defined.
5659
5660 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5661
5662         * iltests.il.in: Disable the fconv test on PPC (the result is
5663         undefined according to ECMA).
5664
5665 2008-09-10  Mark Probst  <mark.probst@gmail.com>
5666
5667         * iltests.il.in: Enable tail call tests for PPC.
5668
5669         * mini.h: Add variable for storing incoming valuetype argument
5670         addresses for tail calls.
5671
5672         * mini-ppc.c: Implement valuetype arguments and return values for
5673         tailcalls on Linux.
5674
5675 2008-09-09  Mark Probst  <mark.probst@gmail.com>
5676
5677         * mini-ppc.c: Partially implement tail calls (struct arguments and
5678         return values not supported).
5679
5680         * method-to-ir.c: Enable tail calls on PPC.
5681
5682 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
5685         runtime-invoke wrappers to work around the problem of them getting
5686         assigned to a random class.
5687
5688         * aot-runtime.c (mono_aot_get_method): Ditto.
5689         
5690 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
5693         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
5694
5695 2008-09-07  Mark Probst  <mark.probst@gmail.com>
5696
5697         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
5698         until they're implemented properly.
5699
5700         * exceptions-ppc.c: Use arch-independent exception-handling code
5701         instead of custom one.
5702
5703         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
5704         for Linear IR.
5705
5706         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
5707
5708         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
5709         applies when __powerpc__ is defined.
5710
5711 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
5712
5713         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
5714         methods to their code to avoid computing the full name of wrappers and
5715         doing a lookup in a string hash table.
5716
5717 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
5720         we identify bblocks before method_to_ir () is ran.
5721
5722         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
5723         Also avoid optimizing branches pointing to themselves.
5724
5725         * mini.c (mini_method_compile): Ditto. Fixes #422947.
5726
5727 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
5728
5729         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
5730
5731 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
5734         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
5735         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
5736         'buf'.
5737
5738         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
5739         jumped to the same entry in plt_jump_table.
5740
5741 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         * method-to-ir.c (initialize_array_data): Handle field with RVA from
5744         dynamic images.
5745
5746 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5747
5748         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
5749         other assignment can be if converted. Saves 1.5% on corlib size and fixes
5750         #421807.
5751
5752 2008-08-29  Geoff Norton  <gnorton@novell.com>
5753
5754         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
5755         segment, and doesn't properly handle .space as .text.  Fixes
5756         AOT Mach/ARM
5757
5758 2008-08-29  Geoff Norton  <gnorton@novell.com>
5759
5760         * mini.c: Disable the mach exception handler when running on 
5761         ARM
5762
5763 2008-08-29  Geoff Norton  <gnorton@novell.com>
5764
5765         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
5766         globals on Darwin/ARM
5767
5768 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
5771         since too many things depend on it. Instead, call 
5772         mono_runtime_set_no_exec ().
5773         
5774         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
5775         the new JIT.
5776
5777         * aot-compiler.c: Add an 'asm-only' AOT option.
5778
5779         * mini.c: Avoid initializing the runtime when doing AOT compilation.
5780                 
5781         * aot-compiler.c (compile_method): Disable gshared support for now as it
5782         doesn't yet work.
5783
5784 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5785
5786         * mini-amd64.h : Fix a compiler warning.
5787
5788         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
5789           Changed to use a callback function to retrieve the unwind info.
5790           This avoids problems observed when code blocks were removed by
5791           unloading an app domain.
5792
5793         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
5794           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
5795           to work properly.
5796
5797         Contributed under MIT/X11 license.
5798
5799 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
5800
5801         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
5802           case to keep the stack aligned to 8.
5803
5804         Contributed under MIT/X11 license.
5805
5806 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
5807
5808         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
5809         avoid repeated linear searches.
5810
5811 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5812
5813         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
5814         methods it can't handle.
5815         
5816         * aot-compiler.c (add_method): Avoid adding a method twice.
5817         (add_wrappers): Add runtime invoke wrappers for all methods.
5818
5819         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
5820         function to create an aot-compatible version of this trampoline.
5821
5822         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
5823
5824 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
5827
5828         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
5829         with a generic sharing failure.
5830
5831         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
5832
5833         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
5834         CEE_RETHROW. Fixes #419634.
5835
5836         * mini.c (mono_method_to_ir): Ditto.
5837
5838         * exceptions.cs: Add a new test.
5839         
5840         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
5841         to mono_type_stack_size_internal () since some callers might not pass in
5842         an rgctx.
5843
5844         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
5845         instrument_prolog. Fixes #419878.
5846
5847         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
5848         doubles in soft float mode volatile.
5849
5850 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
5853
5854         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
5855         to handle soft float correctly.
5856
5857         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
5858         the fast path.
5859
5860         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
5861
5862         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
5863         to sp, since the generics catch code requires it.
5864
5865         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
5866         copying.
5867
5868         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
5869         mono_arch_emit_imt_argument ().
5870
5871         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
5872
5873         * mini-arm.c tramp-arm.c: Generic sharing updates.
5874
5875 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * mini-arm.c: Fix the arm build.
5878
5879         * generic-sharing.c (mini_type_get_underlying_type): New helper function
5880         handling enums, generic instances and generic sharing.
5881         (mini_type_stack_size_full): Ditto.
5882
5883         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
5884         
5885         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
5886
5887         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
5888
5889         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
5890         trampolines.
5891
5892         * mini-arm.c: Various small generic sharing changes.
5893
5894         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
5895         this for x86.
5896         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
5897         custom code.
5898
5899         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
5900         helper function to return a generic class init trampoline.
5901
5902         * method-to-ir.c mini.c: Use it.
5903         
5904         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
5905         arch-specfic function to return a generic class init trampoline.
5906
5907         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
5908         the GENERIC_CLASS_INIT custom code.
5909
5910         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
5911         a fatal error, not a sharing failure.
5912
5913         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
5914         needed.
5915
5916         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
5917         trampoline argument from MONO_ARCH_VTABLE_REG.
5918
5919         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5920         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5921         argument, and pass the vtable in VTABLE_REG.
5922
5923         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
5924         order of the arguments to the C trampoline: pass 'slot' as the trampoline
5925         argument, and pass the vtable in VTABLE_REG.
5926         (mono_arch_create_trampoline_code_full): Remove some special casing for
5927         the rgctx fetch trampoline.
5928
5929         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
5930         Fixes #419273.
5931
5932         * iltests.il: Add a test for it.
5933
5934 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5935
5936         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
5937
5938         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
5939         no longer needed.
5940
5941         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
5942         use mono_jit_info_table_find () to avoid recursion.
5943         (mono_delegate_trampoline): Add a sync wrapper here.
5944
5945         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
5946         here.
5947
5948         * mini.c (mono_method_to_ir): Ditto.
5949         
5950         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
5951         add_sync_wrapper argument. Don't add a sync wrapper here.
5952         (mono_create_jump_trampoline): Don't add a sync wrapper here.
5953
5954         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
5955         
5956 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5957
5958         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
5959           of nonvolatile registers back from MonoContext to CONTEXT.
5960
5961         Contributed under MIT/X11 license.
5962
5963 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5964
5965         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
5966           arguments on Winx64 there are only 4 argument registers.  For this
5967           logic to work the last argument must be pulled from the stack.  
5968
5969         Contributed under MIT/X11 license.
5970
5971 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5972
5973         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
5974
5975         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
5976         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
5977         encode/decode_method_ref ().
5978
5979         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
5980
5981         * aot-runtime.c (decode_patch): Ditto.  
5982
5983         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
5984         MONO_PATCH_INFO_METHOD.
5985
5986         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
5987         MonoGenericJitInfo.
5988
5989         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
5990         MonoGenericJitInfo.
5991
5992         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
5993
5994         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
5995         one from the caller.
5996
5997         * aot-runtime.c (decode_generic_inst): New function to decode and
5998         return a interned generic inst.
5999         (decode_klass_ref): Use it.
6000         (decode_method_ref): Ditto.
6001
6002         * aot-compiler.c (emit_exception_debug_info): Save 
6003         jinfo->has_generic_jit_info too.
6004
6005 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6006
6007         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
6008
6009         * iltests.il.in: Add a test for fconv_to_i.
6010
6011         * liveness.c: Disable the liveness2 pass for now to save space.
6012
6013         * regalloc2.c: Include mempool-internals.h to fix warnings.
6014
6015         * aot-compiler.c (encode_method_ref): Encode the context of generic
6016         instance methods.
6017
6018         * aot-runtime.c (decode_method_ref): Inflate generic methods using
6019         the context saved in the aot file.
6020
6021         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6022
6023         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6024
6025         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
6026         volatile so they won't be optimized away.
6027
6028 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
6029
6030         * ssa.c:
6031         * ssa2.c:
6032         * mini.c:
6033         * regalloc2.c:
6034         * dominators.c: Remove duplicated functions that now are in
6035         mempool-internals.h.
6036
6037 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * aot-compiler.c: Fix warnings.
6040
6041         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
6042
6043         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
6044
6045         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
6046         as the patch type.
6047
6048         * mini.c (mono_resolve_patch_target): Ditto.
6049         
6050         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
6051         (encode_klass_ref): Add support for encoding VARs/MVARs.
6052
6053         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
6054
6055         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
6056         the handling of the got entries into a separate 'decode_got_entry' function.
6057         Add support for RGCTX_FETCH.
6058
6059         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
6060         clobbered by the trampoline code.
6061
6062         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
6063         not clobbered by the indirect calling code.
6064
6065 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
6068         to fix the build.
6069
6070 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
6071
6072         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
6073         signature using the compilation mempool otherwise we would leak it.
6074
6075 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
6078         mono_emit_abs_call ().
6079
6080         * patch-info.h: Add GENERIC_CLASS_INIT.
6081
6082         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
6083
6084         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
6085         as their target as a near call.
6086
6087         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
6088         ABS handling code.
6089         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
6090
6091         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
6092         call to a runtime function described by a patch.
6093
6094         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
6095         mono_emit_abs_call, this has the advantage that the ABS handling code in
6096         mono_codegen () can handle them both, and can handle other stuff in the
6097         future without additional code.
6098
6099         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
6100         entry.
6101         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
6102         abs addresses.
6103
6104         * mini.h: Add missing bblock related prototypes.
6105
6106         * mini.h (MonoCompile): Remove unused reverse_inst_list and
6107         reverse_inst_list_len fields.
6108
6109         * mini.c: Refactor this file a bit by moving branch optimizations to 
6110         branch-opts.c.
6111
6112         * method-to-ir.c: Merge generic sharing changes missed earlier.
6113
6114         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
6115
6116         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
6117         shared patches. Process METHODCONST as a shared patch.
6118
6119         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
6120         as it crashes on the 2.0 mscorlib.
6121
6122         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
6123         to cause crashes.
6124         
6125         * aot-compiler.c: Use is_plt_patch () in a few additional places.
6126         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
6127         by IMT.
6128
6129         * aot-compiler.c: Reorganize the got handling code to be a bit more
6130         understandable.
6131
6132 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6133
6134         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
6135         mono_patch_info_equals/hash, and use it to massively simplify
6136         get_plt_index ().
6137
6138         * mini.c (mono_patch_info_hash): Simplify this and add support for
6139         more patch types.
6140
6141         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
6142
6143         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
6144         handling code, since an offset is not enough to identify a trampoline.
6145
6146         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
6147
6148 2008-08-17  Mark Probst  <mark.probst@gmail.com>
6149
6150         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
6151
6152         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
6153
6154         * mini-ops.h: Argument and result types for OVF_CARRY ops.
6155
6156         * decompose.c: PPC decompositions for various ops.
6157
6158         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
6159
6160 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
6163         call the generic trampoline code using a call, instead of a jump, to
6164         remove some special casing from the generic trampoline code.
6165
6166         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
6167         (mono_codegen): Ditto.
6168
6169         * aot-compiler.c aot-runtime.c: Ditto.
6170
6171         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
6172
6173         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
6174         helper function to find the offset corresponding to a lazy fetch trampoline.
6175
6176         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
6177         when doing generic sharing.
6178
6179         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
6180         places.
6181         
6182         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
6183         mini-trampolines.c to be with the other trampoline creation functions.
6184
6185         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
6186         as it is equal to method->signature in most cases, add a 
6187         mono_emit_method_call_full variant which takes a signature and an imt
6188         argument as well.
6189
6190 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6191
6192         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
6193         to this function, since it could be computed easily from the method 
6194         argument.
6195         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
6196         more.
6197
6198         * method-to-ir.c mini.c: Remove references to 
6199         compile_generic_method_wo_context.
6200
6201         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
6202         generic method calls.
6203         
6204         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
6205         dimensional non-szarrays.
6206
6207         * mini.c (mini_init): Register mono_array_new_1.
6208
6209         * jit-icalls.c (mono_array_new_1): New jit icall.
6210
6211         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
6212         pointing to the method.
6213
6214         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
6215         method addresses belonging to METHOD_JUMP patches in the 
6216         jump_target_got_slot_hash.
6217         (mono_aot_load_method): Ditto.
6218
6219         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
6220         METHOD_JUMP patches.
6221
6222         * mini.c (mini_create_jit_domain_info): New helper function which 
6223         initializes/frees domain->runtime_info.
6224         (mini_free_jit_domain_info): Ditto.
6225         (mini_init): Install the domain hook functions with the runtime.
6226
6227         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
6228         information maintained by the JIT.
6229
6230         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
6231         insertion into jump_table_hash into mono_codegen (), also implement proper
6232         locking.
6233
6234         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
6235         tail calls, it is already done by the aot code.
6236         
6237         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
6238         mechanism on amd64.
6239
6240         * iltests.il.in: Make the jmp test a bit more complex.
6241
6242         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
6243         generic instances which doesn't have a token.
6244
6245         * aot-runtime.c (decode_method_ref): Ditto.
6246         
6247         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
6248         can handle this case now.
6249         (handle_box): Ditto.
6250
6251 2008-08-15  Geoff Norton  <gnorton@novell.com>
6252
6253         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
6254         debugging check.
6255
6256 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
6259         calling generic methods.
6260
6261         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
6262
6263         * aot-runtime.c (decode_patch_info): Ditto.
6264
6265         * mini.c (mono_resolve_patch_target): Ditto.
6266         
6267         * patch-info.h: Add METHOD_RGCTX.
6268
6269         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
6270
6271 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
6272
6273         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
6274         arguments in registers.
6275
6276         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
6277         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
6278
6279         * mini.c (mini_method_compile): Abort aot compilation for generic
6280         methods if generic sharing is disabled.
6281         
6282         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
6283         an mrgctx.
6284
6285         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
6286         requiring an mrgctx.
6287
6288         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
6289         store instructions when converting a vcall to a normal call.
6290
6291         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
6292         mono_arch_find_jit_info.
6293
6294 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
6297         avoid calling mono_method_full_name () for every method even if the
6298         env var is not set.
6299         (check_inline_caller_method_name_limit): Ditto.
6300
6301 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
6304         assemblies in one run.
6305
6306         * aot-compiler.c (mono_compile_assembly): Only print out a count of
6307         skipped methods if it is not 0.
6308
6309         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
6310
6311 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6312
6313         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
6314           MONO_ARCH_HAVE_UNWIND_TABLE.
6315
6316         Contributed under MIT/X11 license.
6317
6318 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
6319
6320         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
6321           from default optimizaton list on Winx64.
6322
6323         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
6324
6325         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
6326           the LMF from the MonoJitTlsData structure.
6327
6328         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
6329
6330         Contributed under MIT/X11 license.
6331
6332 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6333
6334         * mini.c (sigsegv_signal_handler): Fix the build.
6335
6336         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
6337         assembly->aot_module.
6338
6339         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
6340         hash table. This simplifies and speeds up a lot of code, and fixes support
6341         for .netmodules.
6342
6343         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
6344         with the runtime.
6345
6346         * mini-exceptions.c: Ditto.
6347         
6348         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
6349         'native_offset' argument, since these are computed in the 
6350         mono_find_jit_info () function.
6351
6352         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
6353         is used by exceptions-ppc.c.
6354
6355         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
6356         mono_arch_find_jit_info ().
6357         
6358         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
6359         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
6360         generic code in mini-exceptions.c.
6361
6362 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
6363
6364         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
6365
6366         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
6367         
6368         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
6369         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
6370         called while holding the loader lock. Fixes #415608.
6371         (mono_aot_get_method_from_token_inner): Ditto.
6372
6373 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
6376         to reduce differences between this and the generic implementation in
6377         mini-exceptions.c.
6378         (ves_icall_get_frame_info): Ditto.
6379
6380         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
6381
6382         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
6383         longer neccesarry.
6384
6385         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
6386         mono_arch_get_call_filter () and make it non-static, for consistency with the
6387         other architectures.
6388
6389 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
6390
6391         * mini.c:
6392         * local-propagation.c:
6393         * mini-x86.c: Correct the name of arch defines.
6394
6395 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
6396
6397         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
6398         NO_EMULATE_LONG_SHIFT_OPS define.
6399
6400 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
6403         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
6404
6405         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
6406         MACH fixes. Merged from the 2.0 branch.
6407
6408         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
6409
6410         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
6411         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
6412
6413         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
6414
6415         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
6416         mono_marshal_get_native_wrapper () signature changes.
6417
6418 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
6419
6420         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
6421         conversion bug under arm.
6422
6423 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6424
6425         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
6426
6427         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
6428         with overflow checking.
6429
6430 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6431
6432         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
6433         to the genmdesc.pl file
6434
6435 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
6438         arg_array in the soft-float versions of the LOAD/STORE macros.
6439
6440         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
6441         implementation.
6442
6443         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
6444
6445 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
6448         a float HFA. Fixes #413621.
6449
6450 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
6451
6452         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
6453         frame_size to args_size. Fixes build.
6454
6455 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
6458         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
6459
6460         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
6461         the stack are not unaligned. Fixes #413247.
6462         
6463 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6464
6465         * mini.c: update jitted methods performance counters.
6466
6467 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6468
6469         * mini-exceptions.c: increase the exceptions thrown performance
6470         counter in mono_handle_exception ().
6471
6472 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
6473
6474         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
6475         can work with netmodules.
6476
6477 2008-07-28  Geoff Norton  <gnorton@novell.com>
6478
6479         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
6480         regression tests.
6481
6482 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
6485         correct place.
6486
6487 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
6488
6489         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6490           The float param registers and other param registers must be the 
6491           same index on Windows x64.
6492
6493         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
6494           ArgValuetypeAddrInIReg argument case.  Setting the argument
6495           op to OP_VTARG_ADDR (OP_REGOFFSET)).
6496
6497         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
6498           variable computed above as the copy length for arguments of storage
6499           type ArgValuetypeAddrInIReg.
6500
6501         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
6502           ArgValuetypeAddrInIReg argument case.  This case will rely on
6503           mono_arch_emit_outarg_vt to emit the correct code later in the process.
6504
6505         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
6506           a 32 byte stack allocation for all calls.  We will omit the adjustment for
6507           jump and tail call instructoins as they do not follow the typical call behavior.
6508
6509         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
6510           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6511           local variable and pass the local variable by reference to the called method.
6512
6513         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
6514           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
6515           of a struct is passed in a register it must be saved with the other
6516           volatile argument on the stack.
6517
6518         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
6519           frame pointer the stack adjustment value must be saved to the unwind 
6520           info structure.
6521
6522         Contributed under MIT/X11 license.
6523
6524 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
6525
6526         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
6527         which got lost in the merge.
6528
6529 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
6532         build.
6533
6534         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
6535         
6536         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
6537         icalls, since they won't be patched.
6538
6539         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
6540         different code sequence when running under valgrind to prevent some valgrind
6541         errors.
6542
6543         * iltests.il.in: Add new regression test.
6544
6545         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
6546         end with a throw.
6547
6548         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
6549         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
6550
6551         * iltests.il.in: Add new test.
6552
6553         * aot-compiler.c: Fix some warnings.
6554
6555         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
6556         Fixes #412494.
6557
6558 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
6559
6560         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
6561         (mini_usage_jitdeveloper): Add a missing --wapi option.
6562
6563 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * mini-codegen.c: Simplify the is_fp macros.
6566         (free_up_ireg): Remove, use free_up_reg instead.
6567         (free_up_reg): Fix the fp case.
6568
6569 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
6572         lowered earlier.
6573
6574         * exceptions-x86.c: Merge some changes which seemed to have got lost
6575         in the linear-ir merge.
6576
6577         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
6578
6579         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
6580         long vreg volatile even if the variable was already created.
6581
6582         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
6583         volatile variables.
6584
6585 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
6586
6587         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
6588
6589         * mini.c (mono_jit_compile_method_inner): Add support for 
6590         MONO_EXCEPTION_BAD_IMAGE.
6591
6592         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
6593         mini_method_get_context () returns NULL. Fixes #356531.
6594
6595         * mini.c (mono_method_to_ir): Ditto.
6596         
6597         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
6598         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
6599
6600 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
6603         in the LDFTN implementation.
6604
6605 2008-07-25  Mark Probst  <mark.probst@gmail.com>
6606
6607         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
6608         code, patch calls to icalls, too, even if they're not in the
6609         shared generic code hash.  Fixes #411962.
6610
6611 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * cpu-x86.md: Increase the length of the fcall opcodes.
6614
6615         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
6616         calls returning floats.
6617
6618         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
6619         on NEWARR.
6620         
6621         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
6622         missed earlier.
6623
6624         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
6625         into the domain->method_code_hash.
6626
6627         * aot-compiler.c: Fix win32 build.
6628
6629         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
6630         
6631         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
6632         gshared NEWARR implementation.
6633
6634         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
6635
6636         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
6637         can be used outside of method_to_ir.
6638
6639         * mini.h (MonoCompile): Add arg_types field.
6640
6641         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
6642         
6643         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
6644         the values of the local arg_array and param_types array.
6645
6646 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6647
6648         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
6649         got accesses might only get generated later when NEWOBJ is decomposed.
6650         
6651         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
6652         looking up the native code of the target method when a delegate is called
6653         for the first time.
6654
6655         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
6656         optimization.
6657
6658         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
6659
6660         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
6661         AOT work on platforms without a working dlsym implementation.
6662
6663         * mini.h: Bump AOT image format version.
6664         
6665 2008-07-24  Mark Probst  <mark.probst@gmail.com>
6666
6667         * mini-exceptions.c: Free a MonoType with
6668         mono_metadata_free_type() instead of g_free().
6669
6670         * aot-runtime.c: Free a MonoType.
6671
6672 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
6673
6674         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
6675         optimization.
6676
6677         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
6678         fp stack on x86.
6679
6680 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
6681         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
6682         profiler hook.
6683
6684 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
6687         NEWOBJ calls on valuetypes.
6688
6689         * iltests.il.in: Add new test.
6690
6691         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
6692
6693 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
6696         is no longer needed.
6697
6698         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
6699         non register sized integer arguments.
6700         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
6701         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
6702         emit_memcpy2 ().
6703
6704         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
6705         CEE_MONO_RETOBJ.
6706         
6707         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
6708         two a binop with different sized arguments is emitted.
6709
6710         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
6711         instruction in the ins==NULL case.
6712
6713 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
6714
6715         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
6716
6717         * mini-x86.c: Fix osx build.
6718
6719         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
6720         opcodes as well.
6721
6722         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
6723         instruction for non int sized variables.
6724
6725         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
6726         implementation.
6727
6728 2008-07-23  Robert Jordan  <robertj@gmx.net>
6729
6730         * method-to-ir.c: Fix MSVC build.
6731
6732 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
6735         a non int sized type, widen it to an int since newer versions of gcc seem to
6736         generate code which needs this.
6737
6738         * ssa2.c abcremoval2.c: Fix warnings.
6739
6740         * *: Merge the Linear IR branch.
6741
6742         The original branch is at trunk/branches/vargaz/mini-linear-il, and
6743         the ChangeLog file there describes all the changes done over the years. 
6744         Further documentation can be found at www.mono-project.com/Linear_IL.
6745
6746 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6747
6748         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
6749           The float param registers and other param registers must be the 
6750           same index on Windows x64.
6751
6752         Contributed under MIT/X11 license.
6753
6754 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
6755
6756         * mini.c: Make the previous fix GC safe.
6757
6758 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
6759
6760         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
6761
6762 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
6763
6764         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
6765           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
6766           ArgValuetypeAddrInIReg instead.
6767
6768         Contributed under MIT/X11 license.
6769
6770 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * mini-codegen.c (get_register_spilling): Fix a warning.
6773
6774 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
6775
6776         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
6777         for types which the initialization fails. Raises the provided exception
6778         at the right stop after cleanup.
6779
6780 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
6781
6782         * aot-compiler.c: Free most of the memory allocated during compilation.
6783
6784         * mini.c (mini_parse_debug_options): Fix a leak.
6785         
6786         * mini.c (mini_method_compile): Don't add the method to the jit info tables
6787         during aot compilation.
6788
6789 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
6792         it has too much register pressure.
6793
6794 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
6795
6796         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
6797
6798 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6799
6800         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6801         on x86.
6802
6803         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
6804         on amd64 similar to the way it is done on arm.
6805
6806         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6807
6808         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
6809         consistency, normalize error messages, avoid loading aot-only modules in
6810         normal mode.
6811
6812         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
6813         for consistency.
6814
6815         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
6816
6817 2008-07-11  Martin Baulig  <martin@ximian.com>
6818
6819         * debug-debugger.h
6820         (MonoDebuggerInfo): Add `interruption_request'.
6821
6822 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
6823
6824         * aot-compiler.c (emit_plt): Remove some dead code.
6825
6826         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
6827
6828         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
6829         return the plt info offset belonging to a given plt entry.
6830
6831         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
6832         mono_aot_get_plt_info_offset.
6833         
6834         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
6835         similar to the amd64 code by makeing jumps through a separate jump table 
6836         instead of embedding the jump addresses into the code.
6837
6838 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
6841         method.
6842
6843 2008-07-10  Martin Baulig  <martin@ximian.com>
6844
6845         * mini.c (mini_method_compile): Disable generics sharing when
6846         running in the debugger.
6847
6848 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
6851
6852         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
6853         the local register allocator from running out of registers on x86 when 
6854         using aot.
6855
6856 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
6857
6858         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
6859         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
6860         C4146.
6861
6862         Contributed under MIT/X11 license.
6863
6864 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
6865
6866         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
6867         speed up the assembler.
6868
6869 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6870
6871         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
6872         support.
6873
6874         * mini.c: Move the soft float handling macros a bit earlier, add 
6875         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
6876         place.
6877
6878         * mini.h: Add prototype for mono_arch_fixup_jinfo.
6879
6880         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
6881         read-only to help catch code allocation requests.
6882         
6883         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
6884         and turn it off when using --aot-only or when compiling with --aot=full.
6885
6886         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
6887         jump table for switches from the normal domain mempool, not the code
6888         manager.
6889
6890         * mini-trampolines.c (get_unbox_trampoline): New function to return an
6891         unbox trampoline which handles aot-only mode too.
6892
6893         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
6894         an AOTed unbox trampoline.
6895
6896         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
6897
6898 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6899
6900         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
6901         ""
6902
6903         Contributed under MIT/X11 license.
6904
6905 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
6906
6907         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
6908           the unwind information for the method at the end of the allocated block.
6909           
6910         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
6911           MonoCompileArch to hold the unwind info for SEH on Winx64
6912         
6913         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
6914           frame pointer info for the method being compiled.
6915           
6916         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
6917           the call to mono_exception_from_token.
6918           
6919         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
6920           storing the method prolog information in a format that the Winx64 SEH can understand.  This
6921           information is stored a the end of the method block because it is all 32-bit offset based.
6922
6923         Contributed under MIT/X11 license.
6924
6925 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
6926
6927         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
6928
6929         * wapihandles.c: Fix warnings.
6930
6931         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
6932         mode.
6933
6934         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
6935         mono_jit_compile_method in aot-only mode since that calls the type 
6936         initializer.
6937         
6938         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
6939         get_delegate_invoke_impl in aot-only mode.
6940
6941         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
6942
6943 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
6944
6945         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
6946
6947         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
6948         is on by default.
6949
6950         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
6951
6952         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
6953         init trampoline from the AOT file as well.
6954
6955         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
6956         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
6957         code.
6958
6959         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
6960         mono_init.
6961
6962         * exceptions-amd64.c: Add _full variants for the remaining exception code
6963         creation functions as well, allow emission of relocatable code, remove
6964         caching since that is now done by the caller.
6965
6966         * mini-exceptions.c: Add _full variants for the remaining exception code
6967         creation functions as well, add aot-only support.
6968
6969         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
6970         if we can determine a proper token for them.
6971         (add_wrappers): Add a few more wrappers.
6972         (emit_method_code): Remove some dead code.
6973         (emit_trampolines): Emit exception code too.
6974
6975         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
6976
6977         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
6978         mono_array_new_va which avoids varargs.
6979
6980         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
6981
6982         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
6983         mono_arch_create_specific_trampoline () in all places.
6984
6985         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
6986         a bit so it can be used for other things as well.
6987         
6988         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
6989         on demand as well.
6990
6991         * exceptions-amd64.c: Rename the caching from the exception code creation
6992         functions, it is done by the caller instead.
6993         
6994         * exceptions-amd64.c: Change the signature of the exception code creation 
6995         functions to allow the creation of relocatable code later.
6996
6997         * mini-exceptions.c: Add a set of functions to query the various 
6998         runtime-generated exception functions.
6999
7000         * mini.c mini-exceptions.c: Use the newly added functions instead of the
7001         mono_arch_.. () functions.
7002         
7003 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
7006
7007         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
7008
7009         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
7010         (mini_get_vtable_trampoline): Ditto.
7011
7012         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
7013         code in the AOT case by returning the code size and a list of relocations to
7014         the caller.
7015
7016         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
7017
7018 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7019
7020         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
7021           clean the stack.
7022
7023         Contributed under MIT/X11 license.
7024
7025 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
7028         so the buffer size can be computed correctly. Fixes #404735.
7029
7030         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
7031         normally as cfg->debug_info is already freed.
7032
7033 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * mini-amd64.c: For calls returning vtypes in registers, don't store
7036         the return address on the stack, instead allocate a separate local for
7037         it. Fixes #404729.
7038
7039 2008-07-05  Mark Probst  <mark.probst@gmail.com>
7040
7041         * mini-trampolines.c, mini.h: Add an argument to
7042         mono_create_jit_trampoline_in_domain() for turning off the adding
7043         of the sync wrapper.
7044
7045         * mini.c: Use the JIT trampoline without sync instead of
7046         ldftn_nosync in static RGCTX invoke wrappers so that the call can
7047         be patched.
7048
7049 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7050
7051         * driver.c: Turn on GSHARED optimization by default.
7052
7053 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
7054
7055         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
7056         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
7057
7058         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
7059         create a variant of the generic trampoline code callable from AOTed trampolines.
7060
7061         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
7062         trampoline code callable from AOTed trampolines.
7063
7064         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
7065
7066 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7067
7068         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
7069         pass-through manner.
7070
7071         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
7072         and don't fail sharing for them anymore.
7073
7074         * mini-exceptions.c: Handle exceptions in shared generic methods.
7075
7076         * generic-sharing.c: When checking the context of a generic
7077         method, also check its class's context.  Don't treat wrappers as
7078         sharable.
7079
7080         * mini-trampolines.c: Some code factored out to
7081         metadata/generic-sharing.c.  Handle the MRGCTX case.
7082
7083         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
7084         we must deal with the method being of another instantiation of the
7085         class.  Add static rgctx invoke wrappers to generic methods.
7086
7087 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7088
7089         * mini.c: Provide all jit infos of generic shared methods with a
7090         generic jit info.
7091
7092         * mini-exceptions.c: Handle the new situation that a generic info
7093         might be available, but not info about the this/vtable/mrgctx
7094         variable.
7095
7096 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7097
7098         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
7099         generic methods.
7100
7101 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * dominators.c (check_dominance_frontier): Fix a warning.
7104
7105         * mini.h: Add some missing prototypes.
7106
7107         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
7108
7109         * driver.c (mono_jit_init_version): Correct the comments since the first
7110         argument should be the name of the root domain, not a filename.
7111
7112         * aot-runtime.c (make_writable): Error out if this is called while running
7113         with --aot-only.
7114         (load_aot_module): Ditto.
7115
7116         * aot-compiler.c: Really fix the computation of method indexes.
7117
7118         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
7119         optimizations as this is no longer called frequently.
7120
7121         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
7122         method and the invoke impl code and pass it to the delegate trampoline instead of
7123         just the delegate class.
7124
7125 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7126
7127         * aot-compiler.c: Fixup the computation of method indexes.
7128         (add_wrappers): Create the base methods of the runtime invoke wrappers using
7129         the method builder infrastructure.
7130
7131         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
7132         has no header.
7133
7134         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
7135         mode, load the method right away instead of creating a trampoline.
7136
7137         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
7138
7139         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
7140         some checks a bit.
7141
7142 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
7145         (mono_aot_load_method): Use method_index instead of method->token.
7146
7147         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
7148         can handle icalls etc. properly.
7149
7150         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7151
7152         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
7153
7154         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
7155         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
7156         JIT_ICALL_ADDR patch type.
7157
7158         * patch-info.h: Add JIT_ICALL_ADDR patch type.
7159
7160         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
7161         request flag.
7162         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
7163
7164         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
7165
7166 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * mini.c: Use domain->jit_code_hash_lock for controlling access to
7169         domain->jit_code_hash.
7170
7171 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
7174
7175 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7176
7177         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
7178         get_this_arg_from_call, let it compute it when needed.
7179
7180         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
7181         gsctx from code only when needed.
7182
7183         * mini-trampolines.c (get_generic_context): Rename this to 
7184         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
7185         it can be called by the arch backends.
7186
7187         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
7188
7189 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * driver.c (mono_main): Add experimental --aot-only command line option.
7192
7193         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
7194         set.
7195
7196 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
7197
7198         * driver.c (DllMain): Remove mono_module_handle.
7199
7200         Contributed under MIT/X11 license.
7201
7202 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
7203
7204         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
7205         for emitting methods which are not in the source assembly. Detect and report
7206         failure of assembling+linking.
7207         
7208         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
7209
7210         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
7211
7212 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
7213
7214         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
7215
7216 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7217
7218         * mini.h: Remove some obsolete prototypes.
7219
7220         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
7221
7222 2008-06-24  Mark Probst  <mark.probst@gmail.com>
7223
7224         * mini.c (get_object_generic_inst): Variable-sized arrays are not
7225         supported by Visual Studio, so use alloca().
7226
7227 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
7230         Fixes #402585.
7231
7232 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7233
7234         * mini.c: Fail sharing of a generic method if it contains an open
7235         catch clause (because we don't pass MRGCTXs yet).
7236
7237 2008-06-23  Mark Probst  <mark.probst@gmail.com>
7238
7239         * mini.c: When compiling a method with generic sharing, insert the
7240         method instantiated with an all-Object generic context into the
7241         jit info table, instead of the context of the first instantiation
7242         of the method we happen to compile.
7243
7244 2008-06-18  Martin Baulig  <martin@ximian.com>
7245
7246         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
7247         `major_version' and `minor_version'.
7248
7249 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7250
7251         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
7252         mono_method_is_generic_sharable_impl() takes an additional
7253         argument specifying whether to treat type variables as reference
7254         types.
7255
7256 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7257
7258         * mini.h: Removed obsolete prototypes.
7259
7260 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7261
7262         * mini.c: Don't fail generic sharing for initobj and sizeof - we
7263         already handle them.
7264
7265 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7266
7267         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
7268         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
7269         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
7270         tramp-x86.c: Added a MonoGenericContext* argument to
7271         mono_arch_get_unbox_trampoline() so that it can call other
7272         functions which require it.
7273
7274 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7275
7276         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
7277         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
7278         mono_arch_get_this_arg_from_call() takes a
7279         MonoGenericSharingContext* as well.
7280
7281 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7282
7283         * mini.c: Factor out code for emitting unbox into emit_unbox() and
7284         implement generic sharing of unbox.
7285
7286 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7287
7288         * mini.c: Don't compute the vtable to determine whether a field is
7289         special static, because it might not work for open types.
7290
7291 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7292
7293         * mini.c: Removed the unused token_type and token_source arguments
7294         from get_runtime_generic_context_ptr().
7295
7296 2008-06-17  Marek Habersack  <mhabersack@novell.com>
7297
7298         * mini.c (ADD_BINOP): fix the build
7299
7300 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
7303         a widening op.
7304
7305 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7306
7307         * mini.h: Removed class relations enum that's not used anymore.
7308
7309 2008-06-16  Mark Probst  <mark.probst@gmail.com>
7310
7311         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
7312
7313         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
7314         the lazy fetch trampoline access code.
7315
7316 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7317
7318         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
7319
7320 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
7323
7324         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
7325
7326         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
7327
7328 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
7331         intrinsics.
7332
7333         * mini-ops.h: Add MIN/MAX_UN opcodes.
7334
7335         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
7336         intrinsics.
7337
7338         * basic-math.cs: Add more min/max tests.
7339
7340         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7341
7342 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7343
7344         * mini.c: Small fix in the prologue of emit_castclass.
7345
7346 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
7349
7350         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
7351         do not work even for unsigned types. Fixes #400014.
7352
7353         * basic-math.cs: Add regression tests for unsigned Min/Max.
7354
7355 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7356
7357         * mini.c: Added additional context_used argument to several
7358         functions, which will be needed for sharing generic methods.  Use
7359         GET_RGCTX macro wherever appropriate.  Declare only one
7360         context_used in mono_method_to_ir().
7361
7362 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7363
7364         * mini.c, generic-sharing.c: Removed generic class relations.
7365
7366         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
7367         functions due to MRGCTX changes.
7368
7369 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7370
7371         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
7372         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
7373         with calculated IMT.
7374
7375         * mini.c: Generic sharing of calls via generic interfaces.
7376
7377         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
7378         generic method with non-constant MonoGenericContext*.  Instead,
7379         the context is taken out of the method itself.
7380
7381 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7382
7383         * mini.c: Generic sharing of ldvirtftn.
7384
7385 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7386
7387         * mini.c: Generic sharing of ldftn.
7388
7389 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7390
7391         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
7392
7393 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7394
7395         * mini.c: Generic sharing of the special case of ldtoken followed
7396         by a call to GetTypeFromHandle.
7397
7398 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7399
7400         * mini.c: Generic sharing of box for nullable types.
7401
7402 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
7405         are passed on the stack. Fixes #324807.
7406
7407 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
7408
7409         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
7410         for the ArgValuetypeAddrInIReg case.
7411
7412         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
7413         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
7414
7415         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
7416         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7417         local variable and pass the local variable by reference to the called method.
7418           
7419         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
7420         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
7421
7422         Contributed under MIT/X11 license.
7423
7424 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
7425
7426         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
7427
7428         * debug-mini.c (mono_debug_print_vars): Release memory after printing
7429         everything.
7430
7431 2008-06-10  Martin Baulig  <martin@ximian.com>
7432
7433         * debug-mini.c
7434         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
7435
7436 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
7437
7438         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
7439         possible error when no arguments are passed.
7440
7441         Contributed under MIT/X11 license.
7442
7443 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
7446         where the file name is NULL.
7447
7448 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * mini.c: Fix s390 build.
7451
7452 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
7453
7454         * trace.c (mono_trace_parse_options): Fix warnings.
7455
7456         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
7457
7458 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * mini.c (remove_block_if_useless): Avoid printing the method name.
7461         
7462         * mini.c: Remove needless setting of ins->cil_code which is now done by 
7463         MONO_INST_NEW.
7464
7465         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
7466         LMF. Not yet used.
7467
7468         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
7469         translated code after it has been patched.
7470
7471 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
7474         avoid problems during code patching on SMP systems.
7475         (emit_call): Avoid adding a patch info which is already added by 
7476         emit_call_body.
7477         (mono_arch_emit_exceptions): Ditto.
7478
7479 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
7482         MONO_TYPE_ISSTRUCT already checks for it.
7483
7484 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
7485
7486         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
7487           structs with floats on Winx64 the float registers are not used.  
7488           The integer registers are always used..
7489         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
7490           only one register will be used and only if the size of the struct 
7491           is 1,2,4, or 8 bytes.
7492
7493         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
7494           to work for Winx64.
7495
7496         Contributed under MIT/X11 license.
7497
7498 2008-06-05  Martin Baulig  <martin@ximian.com>
7499
7500         * debug-debugger.c (debugger_lookup_class): Also call
7501         mono_class_setup_methods() here; we're only called from RTI.
7502
7503 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
7504
7505         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
7506         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
7507         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
7508         Post-process object files and add dtrace-generated object, if necessary.
7509
7510         Contributed under MIT/X11 license.
7511
7512 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7513
7514         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
7515         element class.
7516
7517         * mini.c: Generic sharing for unbox.any and castclass.
7518
7519 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7520
7521         * mini.c: Ignore tailcall prefix in shared generic code and when
7522         doing calls which require a vtable/rgctx argument.
7523
7524 2008-06-04  Mark Probst  <mark.probst@gmail.com>
7525
7526         * mini.c: Don't free the JIT info.
7527
7528         * driver.c: Changes in the JIT info table testing code.
7529
7530 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
7531
7532         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
7533         interruption. Fix some warnings.
7534
7535         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
7536         interruption_checkpoint.
7537
7538 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7539
7540         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
7541         from embedding applications.
7542
7543 2008-06-02  William Holmes  <billholmes54@gmail.com>
7544
7545         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
7546           reserving 32 bytes on the stack when making calls. 
7547
7548         Contributed under MIT/X11 license.
7549
7550 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
7553         the linear IL branch.
7554
7555         * driver.c: Print out more information for --version on arm.
7556
7557 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
7558
7559         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
7560         bb_exit instead, since out of line bblocks might not actually be emitted
7561         out-of-line.
7562         
7563         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
7564         maximum epilog size for out of line bblocks if tracing is enabled.
7565
7566         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
7567
7568 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
7569
7570         * arrays.cs: Regression tests for allocating arrays with negative sizes.
7571
7572 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
7575         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
7576         opcodes.
7577
7578 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
7581         the 'value' to store is a constant.
7582
7583         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
7584
7585         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
7586         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
7587
7588 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
7589
7590         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
7591         for accessing method->generic_container.
7592
7593 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
7594
7595         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
7596         
7597         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
7598
7599         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
7600
7601         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
7602         fails.
7603
7604 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
7607
7608         * mini.c: Handle the case when mono_class_vtable () fails.
7609
7610 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
7611         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
7612         the stat profiler.
7613
7614 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7615
7616         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
7617         together with domain sharing.
7618
7619 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7620
7621         * mini.c: Treat callvirts to final methods like non-virtual calls
7622         when doing generic sharing, i.e. look them up in the runtime
7623         generic context.
7624
7625 2008-05-22  Mark Probst  <mark.probst@gmail.com>
7626
7627         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
7628         with computed types (for generic sharing).
7629
7630         * mini.c: Generic sharing for mkrefany and refanyval.
7631
7632 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
7635         possible.
7636
7637         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
7638         the generic sharing code.
7639         
7640         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
7641         when needed.
7642
7643 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7644
7645         * mini.h: Remove the declaration of mono_aot_init_vtable ().
7646
7647 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
7648
7649         * driver.c: updated copyright date
7650
7651 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
7652
7653         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
7654         needed.
7655
7656 2008-05-19  Martin Baulig  <martin@ximian.com>
7657
7658         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
7659         pointing to the new `_mono_debug_using_mono_debugger' variable.
7660
7661         * driver.c
7662         (mono_main): Check mono_debug_using_mono_debugger() rather than
7663         the `MONO_INSIDE_MDB' environment variable to check whether we're
7664         inside the debugger.
7665
7666 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
7669         argument.
7670
7671 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
7672
7673         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
7674
7675         * mini.c: Added mini_assembly_can_skip_verification. This
7676         function checks if the assembly requested to skip verification. 
7677         Fixes part of #387274.
7678
7679 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * mini.c (mini_get_method): Disable the check for open generic classes when
7682         using generic sharing.
7683
7684         * generics.cs: Add a test for #387034.
7685
7686         * mini.c (mini_get_method): Check whenever the method class is an open generic
7687         type, and return NULL in that case, causing a verification error. Fixes
7688         #384123.
7689
7690 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * driver.c (mono_main): Revert r102623. The right
7693         thing to do is to enable the verifier under verifiable
7694         unless a --security flag was passed.
7695
7696         We need this non-trivial behavior for --verify-all otherwise
7697         mcs-compileall won't be able to use it. As it needs everything to
7698         be verified under validil.
7699
7700 2008-05-06  Martin Baulig  <martin@ximian.com>
7701
7702         Fix #383749.
7703
7704         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
7705         (mono_debugger_thread_cleanup): Likewise.
7706         (mono_debugger_extended_notification): Likewise.
7707
7708 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7709
7710         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
7711         against both inflated and non-inflated methods. We need to check against the
7712         generic definition for cases where the instantiated method is not visible.
7713         We need to check against the inflated types for cases where the instantiation
7714         changes any super type. This fixes #382986.
7715
7716         Note that this doesn't need to be applied to other parts of mono_method_to_ir
7717         that check for visibiliy as generic params only appears as the type subject
7718         of tokens on call opcodes. Field manipulation and ldftn must always
7719         target an exact type.
7720
7721 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
7722
7723         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
7724         if no related --security flag is passed.
7725
7726 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7727
7728         * mini-arch.h: Prepare support for ppc64.
7729
7730         Contributed under MIT/X11 license.
7731
7732 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7733
7734         * aot-runtime.c: Prepare support for ppc64.
7735
7736         Contributed under MIT/X11 license.
7737
7738 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
7739
7740         * mini-ops.h: Prepare support for ppc64.
7741
7742         Contributed under MIT/X11 license.
7743
7744 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
7745
7746         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
7747
7748         Contributed under MIT/X11 license.
7749
7750 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
7751
7752         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
7753         assemblies, since aot_name is not a full path, causing us to load MS.NET 
7754         assemblies on windows.
7755
7756 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
7757
7758         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
7759         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
7760         * main.c: Use UTF-8 encoded command line instead of Windows default code
7761         page on Windows to support Unicode.
7762         * driver.c (DllMain): New function for mixed-mode assembly support.
7763         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
7764         export __stdcall functions without decoration.
7765
7766         Contributed under MIT/X11 license.
7767
7768 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7769
7770         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
7771         saving it very early.
7772
7773 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7774
7775         * mini.h, mini.c: Lots of code for accessing the old RGCTX
7776         deleted.  The only way to access the new RGCTX is via the
7777         trampline.
7778
7779         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
7780         vtable instead of the RGCTX to static methods.
7781
7782         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
7783         accessing the new RGCTX.
7784
7785         * generic-sharing.c: There is no separation between self, type
7786         arguments and other types in the RGCTX anymore.
7787
7788 2008-04-25  Jonathan Chambers <joncham@gmail.com>
7789
7790         * mini-amd64.c (add_general): Remove previous stack adjustment.
7791         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
7792         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
7793         for 32 bytes of stack space reserved for all calls.
7794         
7795         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
7796         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
7797         adjustment.
7798         
7799         Code contributed under MIT/X11 license.
7800
7801 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
7802
7803         * mini.c (mini_method_verify): Only verify non-inflated methods, check
7804         against the root definition, peeling out method and type instantiations.
7805         Cache verify success results, code that fails verification is still
7806         checked multiple times.
7807
7808 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
7811
7812 2008-04-23  Jonathan Chambers <joncham@gmail.com>
7813
7814         * mini-amd64.c (add_general): Always increment stack on Win64.
7815         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
7816         on Win64.
7817         
7818         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
7819         stack based argument handling on Win64.
7820         
7821         Code contributed under MIT/X11 license.
7822
7823 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
7824
7825         * Makefile.am (version.h): Add support for git-svn.
7826
7827 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
7830         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
7831         avoiding allocations and libc functions which might deadlock.
7832         
7833         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
7834         'no-gdb-backtrace' option is set.
7835
7836         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
7837
7838         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
7839
7840 2008-04-21  Martin Baulig  <martin@ximian.com>
7841
7842         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
7843         and `get_lmf_addr'; `notification_address' is no longer a pointer.
7844
7845 2008-04-21  Martin Baulig  <martin@ximian.com>
7846
7847         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
7848         `thread_vtable', `event_handler_ptr' and `event_handler'.
7849
7850 2008-04-21  Martin Baulig  <martin@ximian.com>
7851
7852         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
7853         allows delayed initialization of the `executable_code_buffer' when
7854         attaching.
7855
7856 2008-04-21  Martin Baulig  <martin@ximian.com>
7857
7858         * mini.h (mono_debugger_create_notification_function): Removed.
7859         * tramp-*.c (mono_debugger_create_notification_function): Removed.
7860
7861         * mdb-debug-info64.s
7862         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7863
7864         * mdb-debug-info32.s
7865         (MONO_DEBUGGER__notification_function): Added this in the .text section.
7866
7867         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
7868         currently only works on x86 and x86_64, so don't create it on ppc.
7869
7870 2008-04-21  Martin Baulig  <martin@ximian.com>
7871
7872         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
7873
7874         * mini.c
7875         (mini_method_compile): In the fp elimination check, check
7876         `debug_options.mdb_optimizations' in addition to
7877         mono_debug_using_mono_debugger().       
7878
7879         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
7880         disable some JIT optimizations which are only disabled when
7881         running inside the debugger.
7882         Added `--help-debug' option to describe the debugging options.
7883         (parse_debug_options): New static function to parse the `--debug'
7884         options, so we can easily add more stuff in future.
7885
7886 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
7887
7888         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
7889         the method has no body.
7890
7891 2008-04-19  Jonathan Chambers <joncham@gmail.com>
7892
7893         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
7894         assembly is not allowed in MSVC 64-bit compiler. 
7895         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
7896         as we get floating point exceptions everywhere.
7897         
7898         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
7899         correctly align arguments for call to throw_exception.
7900         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
7901         
7902         Code contributed under MIT/X11 license.
7903
7904 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
7905
7906         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
7907
7908 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
7911
7912         * mini-amd64.c (NEW_INS): Set cil_code.
7913
7914         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
7915         from mini-amd64.c so all debugger related logic is in one place.
7916
7917         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
7918         later won't have a random ip assigned to them.
7919
7920 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
7923         the arch specific function initializes code_size.
7924         (mono_create_delegate_trampoline): Ditto.
7925
7926         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
7927         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
7928         platforms.
7929
7930         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
7931         running under the debugger.
7932
7933         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
7934         debugger.
7935
7936         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
7937         debugger. Also move the disabling of optimizations here from driver.c.
7938         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
7939         debugger.
7940
7941         * mini.h (MonoCompile): Add a few new flags.
7942
7943 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
7944
7945         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
7946         so the cil_code field of created MonoInst's is properly set.
7947         (mini_select_instructions): Ditto.
7948
7949         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
7950         (MONO_INST_NEW_CALL): Ditto.
7951
7952         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
7953         in many places so the ins->cil_code field is properly initialized.
7954
7955         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
7956         place.
7957
7958 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * mini.c (mini_method_compile): Print a different message when compiling a 
7961         shared method.
7962         
7963         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
7964         > 1.
7965
7966 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7967
7968         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
7969         SSE2 instructions.
7970
7971         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
7972         
7973 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
7974
7975         * mini.c (handle_stack_args): Make this return void since its return value was
7976         never used. Also set cfg->unverifiable for invalid IL instead of calling
7977         G_BREAKPOINT ().
7978
7979 2008-04-10  Mark Probst  <mark.probst@gmail.com>
7980
7981         * mini.c: Make sure "this" is live in catch clauses with type
7982         variables in shared generic code.
7983
7984 2008-04-08  Mark Probst  <mark.probst@gmail.com>
7985
7986         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
7987         generic_class_is_reference_type() to ensure the proper behaviour
7988         when sharing generic code and the type in question is a type
7989         argument.
7990
7991 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7992
7993         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
7994         race conditions when printing thread dumps. Fixes #377738.
7995
7996 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
7997         
7998         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
7999         shows up when both MonoInst arguments can cause aliasig.
8000         There is likely no way in the current JIT to trigger this problem, but
8001         it showed up in the development of generics sharing, when in a new
8002         opcode both args of an OP_GROUP can be aliases (addresses of a local).
8003         When the generics sharing code will be committed, its tests will be
8004         valid also for this bug.
8005
8006 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
8009         PATCH_INFO_METHOD.
8010
8011         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
8012         NULL.
8013
8014 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
8017         use a more detailed exception message for InvalidCastException.
8018
8019         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
8020
8021         * driver.c (mono_main): Add --debug=casts option to turn on better 
8022         InvalidCastException message details.
8023
8024         * mini.c (mini_get_debug_options): New helper function to return the address of
8025         the debug_options variable.
8026
8027         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
8028         the jit_tls TLS variable.
8029
8030         * mini.c (mono_jit_tls): New TLS variable.
8031
8032         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
8033         option is used.
8034
8035 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
8036
8037         * mini.h: Removed verifer related stuff. This code was moved to verify.c
8038
8039         * mini.c: Removed verifer related stuff, code moved to verify.c.
8040
8041         * driver.c: Using code from verify.c instead of mini.c.
8042
8043 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
8044
8045         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
8046         longer valid.
8047
8048 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
8049
8050         * mini.c (check_for_method_verify): Enabling verification of
8051         corlib if mono_verify_all is set. Bugs in the verifier preventing that
8052         have been fixed.
8053
8054 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
8055
8056         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
8057         caller saved registers as well.
8058         
8059         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
8060         saved registers as well.
8061
8062 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
8063
8064         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
8065
8066         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
8067         code.
8068
8069 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
8070
8071         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
8072         to get_call_info.
8073         (get_call_info): Take a gsctx argument instead of 'cfg'.
8074
8075 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
8076
8077         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
8078         mono_verify_all is set.
8079
8080         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
8081
8082         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
8083
8084 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
8087         an exception.
8088
8089         * driver.c mini.c mini.h: Add a --verify-all development option to test the
8090         verifier and the code generated by the compiler.
8091
8092 2008-03-25  Mark Probst  <mark.probst@gmail.com>
8093
8094         * mini.c: Generic sharing of the non-nullable case of the box
8095         instruction.
8096
8097 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * inssel.brg: Fix the build.
8100
8101         * iltests.il.in: Add a test for lconv.ovf.u8.un.
8102
8103 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
8104
8105         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
8106         Array:Address. Fixes #372410.
8107
8108         * iltests.il.in: New tests for readonly prefix.
8109
8110 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
8113         mini-trampolines.c.
8114
8115         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
8116         mini-exceptions.c.
8117
8118         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
8119         
8120         * mini.c (mono_decompose_op_imm): New helper function.
8121
8122         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
8123         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8124         return value.
8125
8126         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8127         mono_arch_output_basic_block. Fix warnings.
8128
8129         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
8130         for now.
8131
8132 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
8135         since the extra frame is now detected automatically inside the loop.
8136
8137         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
8138         opts which are now in mono_peephole_ins ().
8139         
8140         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
8141
8142         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
8143         frames and skip duplicate managed-to-native frames. Fixes #367665.
8144
8145         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8146         opts which are now in mono_peephole_ins ().
8147         (mono_arch_peephole_pass_2): Ditto.
8148
8149         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
8150
8151         * mini-codegen.c (mono_peephole_ins): New helper function containing the
8152         arch independent peephole optimizations.
8153
8154         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
8155         opts which are now in mono_peephole_ins ().
8156
8157         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
8158         
8159         * mini-s390.c (mono_arch_output_basic_block): Fix build.
8160
8161         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
8162         pattern.
8163
8164         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
8165         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
8166         opcode. 
8167
8168 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
8169
8170         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
8171         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
8172         return value.
8173
8174         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
8175         mono_arch_output_basic_block. Fix warnings.
8176
8177 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8178
8179         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8180         conv.ovf.u.un.
8181
8182 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8183
8184         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
8185         conv.ovf.u.un.
8186
8187         * iltests.il: Add new tests.
8188
8189 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
8190
8191         * mini.c: Removed Windows version macros.
8192
8193 2008-03-20  Mark Probst  <mark.probst@gmail.com>
8194
8195         * generic-sharing.c: Put reflection types in the extensible part
8196         of the runtime generic context.
8197
8198         * mini.c: Generic sharing of the GetTypeHandle special case of the
8199         ldtoken instruction.
8200
8201 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
8204
8205         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
8206         
8207         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
8208         consistency with the other version on the linear IR branch.
8209
8210         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
8211
8212         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
8213
8214         * iltests.il.in: Add new tests.
8215
8216 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
8217
8218         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
8219
8220         * iltests.il.in: Add new tests.
8221
8222 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8223
8224         * mini.c: Two variables with the same name were declared in
8225         nesting contexts and one wasn't initialized.  Fixed.
8226
8227 2008-03-19  Mark Probst  <mark.probst@gmail.com>
8228
8229         * mini.c: Generic sharing of the initobj instruction.
8230
8231 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
8232
8233         * mini.c: make the test to optimize ldtoken from typeof() more
8234         precise.
8235
8236 2008-03-18  Mark Probst  <mark.probst@gmail.com>
8237
8238         * mini.c: Generic sharing of the initobj instruction for reference
8239         types.
8240
8241 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8242
8243         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
8244         the mono_breakpoint_clean_code() code to perform bound checks.
8245
8246 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
8247
8248         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
8249         mono_arch_patch_callsite() to include the start of the managed method
8250         to be able to perform bound checks.
8251
8252 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8253
8254         * mini.c: Generic sharing for the isinst instruction.
8255
8256 2008-03-17  Mark Probst  <mark.probst@gmail.com>
8257
8258         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8259         inssel-long32-mips.brg: Added opcodes for doing indirect calls
8260         with the runtime generic context argument.
8261
8262         * mini.c: Share calls to several types of unsharable methods by
8263         putting the address of the method code in the runtime generic
8264         context and doing an indirect call.
8265
8266         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8267         to switches.
8268
8269 2008-03-16  Mark Probst  <mark.probst@gmail.com>
8270
8271         * generic-sharing.c: Change due to a change in the runtime genric
8272         context API.
8273
8274 2008-03-15  Martin Baulig  <martin@ximian.com>
8275
8276         * tramp-x86.c
8277         (mono_arch_nullify_class_init_trampoline): Add call to
8278         mono_breakpoint_clean_code() to make things work when running
8279         inside the debugger.
8280
8281         * tramp-amd64.c
8282         (mono_arch_nullify_class_init_trampoline): Add call to
8283         mono_breakpoint_clean_code() to make things work when running
8284         inside the debugger.
8285
8286 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * inssel-long.brg (reg): Fix 64 bit build.
8289
8290 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8291
8292         * mini.c, mini.h: Share static generic code by passing it an
8293         implicit argument pointing to the runtime generic context.
8294
8295         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
8296         inssel-long32-mips.brg: New opcodes for calling shared static,
8297         which need to be passed the runtime generic context.
8298
8299         * mini-amd64.c, mini-x86.c: Save the runtime generic context
8300         argument on the stack in the prologue if needed.  New function for
8301         finding the runtime generic context argument from the registers
8302         saved by the trampoline.
8303
8304         * mini-amd64.h, mini-x86.h: Specify which register to use for the
8305         runtime generic context argument.
8306
8307         * tramp-amd64.c: Also restore the register used for the runtime
8308         generic context argument.
8309
8310         * mini-trampoline.c: Resolve shared static calls by consulting the
8311         runtime generic context via the new argument.
8312
8313         * generic-sharing.c: Add an argument to sharability-checking
8314         functions that specifies whether type variables should be treated
8315         as sharable type arguments.
8316
8317         * inssel-x86.brg: Removed a superfluous, buggy rule.
8318
8319         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
8320         to switches.
8321
8322 2008-03-14  Martin Baulig  <martin@ximian.com>
8323
8324         * debug-debugger.c (main_thread_handler): Call
8325         mono_runtime_run_main() without sending any notifications.
8326
8327         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
8328
8329 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
8330
8331         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
8332
8333 2008-03-14  Mark Probst  <mark.probst@gmail.com>
8334
8335         * tramp-x86.c: Fixed register restore offsets in the trampoline
8336         code for ECX and EDX.
8337
8338 2008-03-12  Geoff Norton  <gnorton@novell.com>
8339
8340         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
8341         different ucontext_t implementations.
8342         * exceptions-arm.c: Use the above defines to get exceptions working on 
8343         iPhone (based on a patch by Luke Howard lukeh@padl.com)
8344         * mini-arm.c: Implement iPhone icache support (based on a patch by
8345         Luke Howard lukeh@padl.com)
8346
8347 2008-03-12  Mark Probst  <mark.probst@gmail.com>
8348
8349         * mini.c: Enable generic sharing of calls to non-static
8350         non-interface non-generic non-value-type methods.
8351
8352         * mini-trampolines.c: Resolve calls from shared generic code.
8353
8354 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
8355
8356         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
8357
8358         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
8359
8360 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
8361
8362         * mini.c: some fixes for the AOT compiler.
8363
8364 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8365
8366         * cpu-amd64.md: Add clob:1 to some float opcodes.
8367
8368 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
8369
8370         * mini.h: Added MiniVerifierMode enumeration.
8371
8372         * mini.c: Added mini_verifier_set_mode to control
8373         the usage of the new verifier.
8374
8375         * mini.c (mono_method): Integrated the new verifier.
8376
8377         * driver.c: Extended --security option with validil and
8378         verifiable options to activate the new verifier.
8379
8380 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
8383         optimization to ctors taking 0 or 2 arguments too.
8384
8385         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
8386         a bit.
8387
8388         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
8389
8390         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
8391
8392 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
8395         non-aot case as well.
8396
8397         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
8398
8399         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
8400         changes.
8401
8402         * aot-compiler.c (encode_patch): Ditto.
8403
8404         * mini.h (G_MININT32): Fix the definition of this.
8405
8406 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
8407
8408         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
8409
8410         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
8411
8412 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8413
8414         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
8415         methods returning vtypes in registers.
8416         (mono_arch_allocate_vars): Ditto.
8417
8418         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
8419
8420         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
8421
8422         * generics.cs: Add a test from the linear IR branch.
8423
8424         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
8425
8426         * mini.c (inline_method): Cache failed inline attempts.
8427
8428 2008-03-04  Mark Probst  <mark.probst@gmail.com>
8429
8430         * mini.c: For shared methods of generic classes put the location
8431         of "this" into the MonoGenericJitInfo.
8432
8433         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
8434         register out of a MonoContext by register number.  Add the generic
8435         sharing context as an argument to mono_arch_find_this_argument().
8436
8437         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
8438         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
8439         for new arch function.
8440
8441         * mini-exception.c: Handle open exception clauses in shared
8442         generic code.
8443
8444         * mini-trampolines.c: Supply additional argument to
8445         mono_arch_find_this_argument().
8446
8447 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
8448
8449         * Makefile.am (regtests): Run the bench.exe tests last.
8450
8451 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
8452
8453         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
8454         a bit.
8455
8456 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
8457
8458         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
8459         with MS.
8460
8461         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
8462         
8463         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
8464
8465         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
8466         whose class has no cctor.
8467
8468         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
8469
8470 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
8471
8472         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
8473         unverified.
8474
8475 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
8476
8477         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
8478         to be in sync with the code on the linear IR branch.
8479
8480         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
8481
8482         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
8483
8484 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
8485
8486         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
8487
8488         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
8489
8490         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
8491
8492         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
8493
8494         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
8495         
8496         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
8497         body.
8498
8499 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
8500
8501         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
8502         OP_LOADR4_MEMBASE emission.
8503
8504         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
8505         (mono_spillvar_offset_float): Ditto.
8506
8507         * mini-mips.c (mono_arch_emit_prolog): Ditto.
8508
8509         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
8510         emission.
8511
8512         * basic-long.cs: Add regression tests for them.
8513
8514         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
8515         use.
8516         (mono_arch_allocate_vars): Fix representation of single-precision float
8517         argument.
8518         (mono_arch_output_basic_block): Ditto.
8519
8520         * inssel-mips.brg: Ditto, remove duplicate items.
8521
8522         * mini-mips.c (emit_load_volatile_arguments): New function to handle
8523         arguments of tail calls as on other platforms.
8524         (mono_arch_output_basic_block): Handle tail calls.
8525
8526         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
8527         register.
8528
8529         * objects.cs (test_5_pass_static_struct): Add test for it.
8530
8531         Contributed under MIT/X11 license.
8532
8533 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
8534
8535         * Makefile.am: Use gmcs for compiling the regression tests.
8536
8537         * *.2.cs *.2.il: Rename to *.cs and *.il.
8538
8539 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
8540
8541         * regalloc.h: Make the vassign array smaller.
8542
8543         * mini.c (mini_method_compile): Remove an unused field in cfg.
8544
8545         * mini-codegen.c: Add a bunch of micro optimizations.
8546
8547 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
8548
8549         * regalloc.h: Remove some unused fields.
8550
8551 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
8552
8553         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
8554
8555         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
8556
8557 2008-02-22  Mark Probst  <mark.probst@gmail.com>
8558
8559         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
8560
8561         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
8562         trampoline: Fetch an entry from the runtime generic context.  If
8563         it's NULL, jump to the actual trampoline to fill the runtime
8564         generic context.  Otherwise, return it.
8565
8566         * mini.c: Call the lazy fetch trampoline to get entries out of the
8567         runtime generic context.
8568
8569         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
8570         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
8571         tramp-sparc.c: Stubs for the lazy fetch trampoline.
8572
8573 2008-02-21  Mark Probst  <mark.probst@gmail.com>
8574
8575         * mini.c: Fetch data out of the extensible part of the runtime
8576         generic context instead of calling a helper function.
8577
8578         * generic-sharing.c: Some functions moved into
8579         metadata/generic-sharing.c.  Helper function for fetching other
8580         types now checks and asserts against extensible rgctx (just for
8581         debugging purposes - the helper function isn't called anymore
8582         unless for debugging).
8583
8584 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
8587         for tail calls up to the point that the tests in iltests.exe run. Also add a
8588         dummy CKFINITE implementation.
8589         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
8590         needed for trampoline LMF frames.
8591
8592         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
8593         trampoline LMF frames.
8594
8595 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
8596
8597         * mini.c (inline_method): clean any pending loader error when inlining fail.
8598         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
8599
8600 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
8601
8602         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
8603
8604         * aot-runtime.c (decode_patch_info): Ditto.
8605
8606         * mini.c (mono_resolve_patch_target): Ditto.
8607         
8608         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
8609         icall wrappers.
8610
8611         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
8612         
8613         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
8614         if it references an icall address.
8615
8616 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
8617
8618         * cpu-s390x.md: Remove some more unused opcodes.
8619         
8620         * cpu-s390x.md: Remove some unused opcodes.
8621
8622         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
8623         mono_op_imm_to_op ().
8624
8625         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
8626         instead of a switch statement.
8627         
8628         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
8629         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
8630
8631         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
8632         
8633         * mini-codegen.c: Remove unused mono_regstate2_... functions.
8634
8635         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
8636         -1.
8637
8638 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * driver.c (mono_main): Improve error reporting when an assembly cannot be
8641         opened. Fixes #362607.
8642
8643         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
8644
8645         * iltests.il.in: Add a test for static methods in interfaces.
8646
8647 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
8648
8649         * genmdesc.c (build_table): Fix a crash on older glib versions.
8650
8651         * cpu-sparc.md: Remove some unused opcodes.
8652         
8653         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
8654         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
8655
8656         * cpu-amd64.md: Remove some unused opcodes.
8657
8658         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
8659         like the other opcodes.
8660
8661 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
8662
8663         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
8664
8665         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
8666
8667         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
8668         variables 'cfg' instead of 'm' for consistency.
8669
8670         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
8671
8672         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
8673         argument holding the vtype return address, to avoid the ambigious use of
8674         cfg->ret for this purpose.
8675
8676         * mini.c (NEW_RETLOADA): Use vret_addr if set.
8677
8678         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
8679         
8680         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
8681         new mono_print_ins () function which only takes one argument.
8682
8683 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
8686         macro arguments.
8687
8688 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
8691
8692         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
8693
8694         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
8695         opcodes and other small changes.
8696
8697         * mini-ops.h: Add some new opcodes from the linear IR branch.
8698
8699         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
8700
8701         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
8702         opcodes, use the REG_MEMBASE opcodes instead.
8703         
8704         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
8705         opcodes, use the REG_MEMBASE opcodes instead.
8706         
8707         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
8708         linear IR branch.
8709
8710         * mini.c (mono_op_imm_to_op): New helper function.
8711
8712         * mini-ops.h: Add some opcodes from linear IR branch.
8713
8714 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
8715
8716         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
8717         <tsv@solvo.ru>.
8718
8719 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
8722         OP_ICONV_TO_R4/R8.
8723
8724         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
8725
8726 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
8727
8728         * aot-compiler.c (emit_method_code): Add an assert.
8729
8730         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
8731         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
8732         methods.
8733
8734 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
8737         some load/store opcodes so they are consistent. 
8738         (mono_arch_emit_prolog): Simplify some code.
8739
8740         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
8741
8742         * objects.cs: Add tests for large argument offsets on ARM.
8743
8744         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
8745         stack offsets. Fixes #359651.
8746
8747         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
8748
8749         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
8750
8751         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
8752
8753         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
8754
8755         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
8756
8757         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
8758         rid of CEE_CONV_R_UN.
8759
8760         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
8761
8762 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
8763
8764         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
8765
8766         * mini.c (mono_normalize_opcodes): Add some more opcodes.
8767
8768         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
8769
8770         * cpu-amd64.md: Remove some unused opcodes.
8771
8772         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
8773
8774         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
8775
8776         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
8777         arch specific functions for its parts. Call the peephole pass after local
8778         regalloc so the prolog can compute a more accurate max_offset.
8779         
8780         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
8781         the corresponding OP_I/OP_L opcodes.
8782
8783         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
8784
8785         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
8786
8787 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
8790         as they are handled in mini.c.
8791
8792         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
8793         
8794         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
8795         case since it is handled in mini.c.
8796
8797         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
8798
8799         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
8800
8801         * *.c: Use the new opcodes in the IR and back end code.
8802
8803         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
8804
8805         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
8806
8807 2008-02-06  Mark Probst  <mark.probst@gmail.com>
8808
8809         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
8810         an assert because it has a race condition.
8811
8812 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
8813
8814         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
8815
8816         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
8817
8818         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
8819
8820         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
8821         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
8822
8823 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * cpu-amd64.md (move): Correct the maximum size of move.
8826
8827 2008-02-05  Mark Probst  <mark.probst@gmail.com>
8828
8829         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
8830         the generic class init trampoline to return quickly if the class
8831         is already inited.
8832
8833 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
8834
8835         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
8836         issues where an 32 bit callsite cannot be patched by a 64 bit address.
8837
8838 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
8841         branch.
8842
8843 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
8844
8845         * objects.cs: Add some soft-float tests.
8846
8847         * mini.c: Fix a couple more soft-float issues.
8848
8849         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
8850
8851         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
8852         avoid a REX prefix.
8853
8854 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
8857         exception happens while compiling a virtual method.
8858
8859 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
8862         
8863         * mini-sparc.c: Fix build.
8864
8865         * mini-sparc.c (get_call_info): Add support for generic sharing.
8866
8867         * mini-exceptions.c: Add a FIXME.
8868
8869 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
8872         altstack handling code.
8873
8874         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
8875         
8876         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
8877
8878         * mini-s390.c: Add support for generic sharing.
8879
8880         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8881         Fix CAS on s390.
8882         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8883
8884         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
8885
8886         * mini-s390x.c: Add support for generic sharing.
8887         
8888         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
8889         Fix CAS on ia64.
8890         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
8891
8892         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
8893         can be used since it takes a 16 bit signed immediate.
8894
8895         * inssel-s390x.brg: Fix OP_SETRET.
8896
8897         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
8898
8899         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
8900
8901         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
8902
8903         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
8904
8905         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
8906         in one place.
8907
8908         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
8909         stuff.
8910
8911         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
8912         of the unused mono_arch_patch_delegate_trampoline stuff.
8913
8914 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
8915
8916         * basic-long.cs: Move the fp related tests to basic-float.cs.
8917
8918         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
8919
8920         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
8921
8922         * basic-calls.cs: Add a test for proper float argument passing.
8923
8924         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
8925         if the context corresponds to an exception received through a signal.
8926
8927         * exceptions.cs: Add a test for nullref handling at the start of a try
8928         clause.
8929
8930         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
8931
8932         * jit-icalls.c (mono_break): New JIT icall.
8933
8934         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
8935
8936         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
8937
8938 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
8939
8940         * cpu-*.md: Get rid of unused opcodes.
8941
8942         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
8943
8944         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
8945         by all platforms.
8946
8947         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
8948         define.
8949
8950         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
8951         the arch independent trampoline code in mini-trampolines.c.
8952
8953         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
8954
8955         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
8956
8957         * mini-s390.h: Remove an unused define.
8958         
8959         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
8960         the arch independent trampoline code in mini-trampolines.c.
8961
8962         * mini-arm.c (mono_arch_emit_prolog): Fix build.
8963
8964 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
8965
8966         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
8967
8968         * mini-s390.c (mono_arch_emit_prolog): Fix build.
8969
8970         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
8971
8972         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
8973
8974         * cpu-amd64.md: Use smaller sizes for int opcodes.
8975
8976         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
8977
8978         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
8979         objects.cs.
8980
8981         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
8982         debugging.
8983
8984         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
8985         instead of though a pointer to save an indirection when accessing elements of
8986         the array.
8987
8988         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
8989         some typos.
8990         (NOT_IMPLEMENTED): New helper macro.
8991         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
8992         of a bb.
8993
8994         * *.c: Use the new helper macro.
8995
8996 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
8997
8998         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
8999
9000 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
9003         stack slots.
9004
9005 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
9006
9007         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
9008         profiling is enabled.
9009         
9010         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
9011         the end.
9012         (mono_arch_emit_prolog): Add more first bblock optimizations.
9013
9014         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
9015         in order if possible.
9016         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
9017         bblock, since the arguments are still in their original registers.
9018
9019         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
9020
9021 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9022
9023         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
9024         as well.
9025
9026         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
9027         offset 0.
9028
9029         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
9030
9031         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
9032         process async exceptions received while in unmanaged code.
9033
9034         * mini.c (mini_init): Install a callback with the runtime which will be called
9035         when a thread receives an async exception while in unmanaged code.
9036
9037         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
9038
9039         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
9040
9041 2008-01-16  Wade Berrier  <wberrier@novell.com>
9042
9043         * cpu-g4.md:
9044         * cpu-arm.md:
9045         * cpu-s390x.md:
9046         fix build
9047
9048 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
9051         compilation with sun cc.
9052
9053         * cpu-*.md: Fix the build.
9054
9055         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
9056
9057         * mini-amd64.h: Add some comments to the MonoLMF structure.
9058
9059         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
9060         
9061         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
9062         in the LMF structure if possible. This saves two instructions in the
9063         managed->native wrappers.
9064
9065         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
9066
9067 2008-01-16  Mark Probst  <mark.probst@gmail.com>
9068
9069         * generic-sharing.c: New type argument lookup code which uses the
9070         runtime generic context template.
9071
9072 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
9073
9074         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
9075
9076         * mini-arm.c (add_general): Fix arm eabi parameter passing.
9077         (mono_arch_output_basic_block): Fix localloc implementation.
9078
9079         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
9080
9081         * mini-ia64.c (peephole_pass): Fix ia64 build.
9082
9083         * mini-amd64.c (peephole_pass): Fix a warning.
9084         
9085         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
9086         at a constant offset from sp/fp.
9087
9088         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
9089         instead of obtaining it from *lmf in the managed method case.
9090
9091 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
9092
9093         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
9094
9095 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
9096
9097         * mini.h (MonoInstList): New type.
9098         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
9099         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
9100         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
9101         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
9102         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
9103         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
9104         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
9105         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
9106         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
9107         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
9108         MONO_INST_LIST_FOR_EACH_ENTRY,
9109         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
9110         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
9111         mono_inst_list_first, mono_inst_list_last,
9112         mono_inst_list_next, mono_inst_list_prev): New instruction
9113         list handling interfaces.
9114         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
9115         list head 'ins_list'.
9116         (MonoInst): Replace next pointer with list head 'node'.
9117         (MonoCallInst): Make 'out_args' a MonoInstList.
9118         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
9119         (MonoCompile): Delete reverse_inst_list and
9120         reverse_inst_list_len.
9121         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
9122         mono_arch_lowering_pass, mono_arch_local_regalloc,
9123         mono_arch_output_basic_block, mono_arch_emit_prolog):
9124         Convert to new instruction lists.
9125         (insert_after_ins): Delete.
9126         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
9127         instruction lists.
9128         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
9129         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
9130         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
9131         mono_emulate_opcode, mono_emit_load_got_addr,
9132         inline_method, mono_method_to_ir, mono_print_bb_code,
9133         print_dfn, decompose_pass, nullify_basic_block,
9134         replace_out_block_in_code, remove_block_if_useless,
9135         merge_basic_blocks, move_basic_block_to_end,
9136         try_unsigned_compare, optimize_branches, mono_print_code,
9137         mini_select_instructions, remove_critical_edges): Likewise.
9138         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
9139         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
9140         mono_arch_output_basic_block, mono_arch_emit_prolog):
9141         Likewise.
9142         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
9143         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9144         mono_arch_output_basic_block): Likewise.
9145         (inst_list_prepend, insert_after_ins): Delete.
9146         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
9147         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
9148         instruction lists.
9149         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
9150         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
9151         mono_arch_emit_prolog): Likewise.
9152         * cfold.c (mono_constant_fold): Likewise.
9153         * liveness.c (visit_bb, mono_analyze_liveness,
9154         optimize_initlocals): Likewise.
9155         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
9156         * graph.c (mono_draw_code_cfg): Likewise.
9157         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
9158         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
9159         mono_ssa_cprop): Likewise.
9160         * abcremoval (get_relations_from_previous_bb, process_block):
9161         Likewise.
9162         * local-propagation (mono_cprop_invalidate_values,
9163         mono_local_cprop_bb): Likewise.
9164         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
9165         peephole_pass, mono_arch_output_basic_block,
9166         mono_arch_emit_prolog): Likewise.
9167         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
9168         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9169         mono_arch_emit_prolog): Likewise.
9170         (insert_after_ins): Delete.
9171         * aliasing.c (print_code_with_aliasing_information,
9172         mono_build_aliasing_information, mono_aliasing_deadce):
9173         Convert to new instruction lists.
9174         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
9175         peephole_pass, NEW_INS, mono_arch_lowering_pass,
9176         mono_arch_local_regalloc, mono_arch_output_basic_block):
9177         Likewise.
9178         (insert_after_ins): Delete.
9179         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
9180         peephole_pass, mono_arch_output_basic_block): Convert to
9181         new instruction lists.
9182         * mini-codegen (InstList, inst_list_prepend,
9183         insert_after_ins): Delete.
9184         (insert_before_ins, get_register_force_spilling,
9185         get_register_spilling, free_up_ireg, free_up_reg,
9186         create_copy_ins, create_spilled_store, alloc_int_reg,
9187         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
9188         to new instruction lists.
9189         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
9190         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
9191         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
9192         (insert_after_ins): Delete.
9193         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
9194         mono_arch_local_regalloc, mono_arch_output_basic_block,
9195         mono_arch_call_opcode): Convert to new instruction lists.
9196         (insert_after_ins): Delete.
9197         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
9198         peephole_pass, mono_arch_output_basic_block,
9199         mono_arch_emit_prolog): Convert to new instruction lists.
9200
9201 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
9204
9205         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
9206         Fixes #353182.
9207
9208         * Makefile.am (version.h): Make this work with non-bash shells.
9209
9210 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
9211
9212         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
9213
9214 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
9217         the InitializeArray optimization.
9218
9219 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * mini.c driver.c: Don't include os/gc_wrapper.h.
9222
9223 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * mini.c (print_jit_stats): Print GC statistics if available.
9226
9227 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
9230
9231 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
9232
9233         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
9234
9235 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
9236
9237         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
9238         
9239         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
9240
9241         * driver.c (mono_main): Ditto.
9242
9243 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
9246
9247         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
9248         in the vtable can't be encoded.
9249         (compile_method): Ditto.
9250
9251 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
9252
9253         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
9254         defined.
9255
9256         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
9257         lmf->rbp.
9258
9259         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
9260         the top LMF entry belongs to the current method.
9261
9262         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
9263
9264 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
9265
9266         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
9267         
9268         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
9269
9270         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
9271
9272         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
9273
9274         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
9275
9276         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
9277         implementation.
9278
9279         * basic-float.cs: Add an ulong->double cast test.
9280
9281 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * mini.c (mono_method_to_ir): Fix a warning.
9284
9285 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
9286
9287         * mini-ops.h: Add OP_SWITCH.
9288
9289         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
9290         CEE_SWITCH in back-end code, use OP_SWITCH instead.
9291
9292 2007-12-11  Geoff Norton  <gnorton@novell.com>
9293
9294         * mini-s390x.c: Minor change to the MAX() define to allow
9295         it to compile with other gcc versions.
9296
9297 2007-12-11  Geoff Norton  <gnorton@novell.com>
9298
9299         * cpu-s390x.md:
9300         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
9301
9302 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9303
9304         exceptions-arm.c (mono_arch_get_restore_context): Restore
9305         the frame pointer.
9306
9307         exceptions-arm.c (throw_exception): Save the frame pointer.
9308         This is a partial fix for #323747. Only the client side is
9309         fixed.
9310
9311 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
9312
9313         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
9314         was using an unrelated variable to log the class which
9315         needed the cctor to be called. This was crashing on arm.
9316
9317 2007-12-09  Robert Jordan  <robertj@gmx.net>
9318
9319         * mini-x86.c (mono_arch_emit_epilog):
9320         Consider all kinds of 64-bit types. Fixes #323114.
9321
9322 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
9323
9324         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
9325
9326 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * mini-amd64.c (peephole_pass): Add a missing instruction check.
9329
9330 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9331
9332         * mini.c: run type ctor before allocating an object, not only
9333         when running it's constructor method (fixes at least part of bug #342507).
9334
9335 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9336         
9337         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
9338         
9339         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
9340         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
9341         function.
9342
9343         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
9344         mono_generic_class_init_trampoline () the same as it is done with the other
9345         trampolines.
9346
9347         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
9348         aot-runtime.c aot-compiler.c: Implement AOT support.    
9349
9350 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9351
9352         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
9353         build for archs which don't have the vtable trampoline defined
9354         yet.
9355
9356 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
9357
9358         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
9359
9360         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
9361
9362         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
9363
9364         * tramp-<ARCH>.c: Use the new helper function.
9365
9366 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9367
9368         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
9369         trampoline call, which takes a vtable argument.
9370
9371         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
9372         OP_TRAMPCALL_VTABLEs like other calls.
9373
9374         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
9375         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
9376         call.  Implemented a support function which fetches the vtable
9377         from a register set.
9378
9379         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
9380         Implemented a generic class init trampoline, using the
9381         OP_TRAMPCALL_VTABLE opcode.
9382
9383         * mini.c: Implemented static field access when sharing generic
9384         code.  This implies initing the class using the new
9385         OP_TRAMPCALL_VTABLE call.
9386
9387 2007-12-07  Mark Probst  <mark.probst@gmail.com>
9388
9389         * mini.c: Don't compile methods with sharing enabled if their
9390         classes are disabled for sharing.
9391
9392 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * inssel.brg: Add a missing sign extension to the GETCHR and array access
9395         opcodes. Fixes #346563.
9396
9397         * objects.cs: Add a new test.
9398
9399         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
9400
9401         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
9402         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
9403
9404 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
9405
9406         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
9407
9408 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
9409
9410         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
9411         code stream.
9412
9413 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
9416
9417         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
9418         optimization in the AOT case.
9419         
9420 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9423         
9424         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
9425
9426         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
9427
9428         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
9429
9430         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
9431         is created by the inlined delegate ctor.
9432
9433         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
9434
9435         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
9436
9437 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
9438
9439         * cpu-x86.md: Fix the length of ckfinite.
9440
9441 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
9444         
9445         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
9446         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
9447
9448         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
9449
9450         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
9451         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
9452
9453 2007-11-28  Martin Baulig  <martin@ximian.com>
9454
9455         * mini-x86.c
9456         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
9457         after creating the trampoline.
9458
9459 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
9460
9461         * aot-runtime.c (load_aot_module): Check runtime version if needed.
9462
9463         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
9464         the same version.
9465
9466         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
9467         instead of the calling method to help AOT.
9468
9469         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
9470
9471 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
9474         is defined.
9475
9476 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
9479         
9480         * aot-compiler.c (compile_method): Correct check for generic method definitions.
9481         (encode_method_ref): No need to handle generic method definitions specially.
9482
9483         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
9484
9485         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
9486         decode_klass_info.
9487
9488         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
9489         encode_klass_info.
9490         (compile_method): Enable generic sharing.
9491
9492 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
9493
9494         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
9495         (mini_method_compile): Add preliminary support for AOTing shared generic code.
9496
9497         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
9498         generic code.
9499
9500         * mini-trampolines.c: Fix a warning.
9501
9502         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
9503         NEW_PCONST.
9504         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
9505         (generic_class_is_reference_type): Remove unused function.
9506
9507         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
9508         in the generic vtable trampoline case.
9509
9510         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
9511         
9512         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9513         return an AOT method based on a vtable slot.
9514
9515         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
9516
9517         * mini.c (mini_get_vtable_trampoline): Export this.
9518
9519 2007-11-22  Martin Baulig  <martin@ximian.com>
9520
9521         * debug-debugger.h
9522         (MonoDebuggerInfo): Move `debugger_version' up.
9523
9524 2007-11-22  Martin Baulig  <martin@ximian.com>
9525
9526         * mini-amd64.c
9527         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
9528
9529         * mini-trampolines.c
9530         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
9531         after compiling the method.
9532
9533 2007-11-20  Martin Baulig  <martin@ximian.com>
9534
9535         * debug-mini.c
9536         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
9537         (mono_debugger_remove_breakpoint): Likewise.
9538         (mono_debugger_check_breakpoints): Likewise.
9539
9540         * debug-debugger.c: Implement the new breakpoint interface here.
9541
9542 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
9543
9544         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
9545         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
9546
9547         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
9548
9549 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
9552
9553         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
9554         mini.c.
9555
9556         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
9557         mini.c.
9558
9559         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
9560         returning a vtype in a register.
9561
9562         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
9563         here from the arch specific code.
9564
9565         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
9566         mini.c.
9567
9568         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
9569         (mono_arch_emit_prolog): Increment maximum prolog size.
9570
9571         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
9572         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
9573
9574         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
9575         MonoGenericSharingContext.
9576
9577         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
9578         MonoGenericSharingContext. Allocate memory from the cfg mempool.
9579
9580 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9581
9582         * mini.c, mini.h, generic-sharing.c: Functions for producing code
9583         which extract fields out of the runtime generic context.  Full
9584         sharing of the NEWARR opcode.
9585
9586 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9587
9588         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
9589         --enable-minimal=ssa.
9590
9591 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9592
9593         * mini-trampolines.c (mono_delegate_trampoline): Update after 
9594         mono_marshal_get_delegate_invoke () signature change.
9595
9596 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9597
9598         * mini.c: Removed the shared context in favor of the generic
9599         sharing context.  Allocate the MonoJitInfo structure with room for
9600         the generic sharing context if it's needed.
9601
9602         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
9603         domain-internals.h now.
9604
9605         * mini-x86.c: Pass the generic sharing context to get_call_info ().
9606
9607         * generic-sharing.c: Several changes for working without a shared
9608         context and instead operating on open types instead.
9609
9610 2007-11-12  David S. Miller  <davem@davemloft.net>
9611
9612        * inssel-sparc.brg: Fix double instruction emit.
9613
9614 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9615
9616         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
9617         Get/Set/Address methods.
9618         
9619         * mini.c debug-debugger.c mini-trampolines.c: Update after 
9620         mono_marshal_get_delegate_invoke signature change.
9621
9622 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9623
9624         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
9625         This can happens with dynamic methods. Fixes the other bug in #322722.
9626
9627 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
9628
9629         * tramp-arm.c (mono_arch_patch_callsite): Support patching
9630         BX call sequence.
9631
9632         * mini-arm.c (arm_patch): Implement patching of BX call
9633         sequence. Fixes one of the bugs in #322722.
9634
9635 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
9636
9637        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
9638        under Linux.  We only need to flush every 32-byte cache line.    
9639
9640 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9641
9642         * mini.c:
9643         move_basic_block_to_end: Add branches when needed, eventually creating
9644         a new BB.
9645         optimize_branches: added a parameter that tells if it's ok to create
9646         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
9647         and avoid calling move_basic_block_to_end when it's not ok.
9648         Fixes bug 318677.
9649
9650 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9651
9652         * mini.c: Abort inlining call to InitializeArray if something
9653         looks wrong.  Let the icall handle it, which now has proper safety
9654         checks.
9655
9656 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
9657
9658         * mini.c (mono_spill_call): add support for soft-float.
9659
9660         * mini.c (mono_method_to_ir): add support for soft-float
9661         to inlined functions that return float.
9662
9663         * mini.c (mono_method_to_ir): add support for soft-float
9664         to cee_stsfld opcode on float fields.
9665
9666 2007-11-05  Geoff Norton  <gnorton@novell.com>
9667
9668         * mini-x86.h: Fix the structure access for X86 Leopard.
9669
9670
9671 2007-11-05  Martin Baulig  <martin@ximian.com>
9672
9673         * mini-trampolines.c
9674         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
9675         after compiling the method to notify the debugger.
9676
9677 2007-11-05  Martin Baulig  <martin@ximian.com>
9678
9679         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
9680
9681 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
9682
9683         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
9684         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
9685
9686 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
9689         native-to-managed wrappers.
9690         
9691 2007-11-01  Geoff Norton  <gnorton@novell.com>
9692
9693         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
9694         members.
9695
9696 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
9697
9698         * mini.c, mini-x86.c: when getting back from unmanaged code
9699         to managed via a marshaled delegate we also need to set the
9700         right domain.
9701
9702 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
9703
9704         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
9705         for amd64.
9706
9707 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9708
9709         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
9710         let the debugger or other external agents to tell the JIT when
9711         a sw breakpoint has been inserted in the code that the JIT needs
9712         to be able to inspect.
9713
9714 2007-10-31  Martin Baulig  <martin@ximian.com>
9715
9716         * debug-debugger.h
9717         (MonoDebuggerInfo): Remove `runtime_class_init'.
9718
9719 2007-10-30  Martin Baulig  <martin@ximian.com>
9720
9721         * debug-mini.h
9722         (mono_debugger_thread_created): Added `MonoThread *' argument.
9723         (mono_debugger_extended_notification): New public method.
9724         (mono_debugger_trampoline_compiled): New public method.
9725
9726         * debug-mini.c
9727         (MonoDebuggerThreadInfo): Added `thread' and
9728         `extended_notifications' fields.
9729
9730         * debug-debugger.c
9731         (debugger_executable_code_buffer): New static variable.
9732
9733         * debug-debugger.h
9734         (MonoDebuggerInfo): Added `executable_code_buffer',
9735         `executable_code_buffer_size', `breakpoint_info_area',
9736         `breakpoint_table' and `breakpoint_table_size'.
9737
9738 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
9739
9740         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
9741         that IP  either is an unused value or the vtable pointer. IMT 
9742         calls use vtable + offset now. Reduced by almost half the size
9743         of IMT entries.
9744
9745 2007-10-26  Jonathan Chambers <joncham@gmail.com>
9746
9747         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
9748         defines to access param registers. Replace long usage with
9749         gsize as sizeof(long) != sizeof(void*) on Win64.
9750
9751         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
9752         on Win64. Fix intrinsic, use _AddressOfReturnAddress
9753         instead of non-existant _GetAddressOfReturnAddress.
9754
9755         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
9756         param registers. Save/restore %rdi and %rsi in MonoLMF.
9757
9758         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
9759         param registers. Modify (throw_exception) signature to take 
9760         %rdi and %rsi on Win64. 
9761
9762         Code is contributed under MIT/X11 license.
9763
9764 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9765
9766         * helpers.c: unlink debugging output files.
9767
9768 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9769
9770         * mini.c: Move mono_create_ftnptr () to object.c.
9771
9772 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9773
9774         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
9775         optional. This function can now be used to disassemble code generated
9776         outside the JIT such as trampolines and IMT thunks.
9777
9778         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
9779
9780         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
9781         vtable pointer from a ldr instruction.
9782
9783         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
9784         new IMT call sequence.
9785
9786         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
9787         call sequence for interface invocations.
9788
9789         * mini-arm.c (mono_arch_emit_imt_argument): added, required
9790         for imt support. This function is empty since IMT on ARM requires no
9791         special handling on the IR side.
9792
9793         * mini-arm.c (mono_arch_find_imt_method): added, required for
9794         imt support.
9795
9796         * mini-arm.c (mono_arch_find_this_argument): added, required
9797         for imt support.
9798
9799         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
9800         a ldr instruction to load a value stored in the code stream.
9801
9802         * mini-arm.c (mono_arch_build_imt_thunk):added, required
9803         for imt support.
9804
9805
9806 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * mini.c (mini_init): Install the jump trampoline callback.
9809
9810 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9811
9812         * mini-trampolines.c: handle synchronized methods with the common
9813         vtable trampoline (bug #335601).
9814
9815 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
9818
9819         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
9820         64 bit platforms.
9821
9822         * mini-ia64.h mini-ia64.c: Add support for IMT.
9823
9824         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
9825         prolog. Fixes #331958.
9826
9827 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
9830
9831 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9832
9833         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
9834         trampoline.
9835
9836 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9837
9838         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
9839         trampoline.
9840
9841 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
9842
9843         * mini-x86.c, mini-x86.h: x86 support for the common vtable
9844         trampoline.
9845
9846 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
9847
9848         * mini-trampolines.c: changed the magic rampoline to understand
9849         the common vtable trampoline method: the method to invoke is
9850         determined by the vtable displacement of the call.
9851
9852 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9853
9854         * mini.c, mini.h: register the common vtable trampoline if the
9855         architecture supports it.
9856
9857 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9858
9859         * cpu-amd64.md: use the correct max length for tls_get.
9860
9861 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
9864         CEE_STELEM_ANY. Fixes #333696.
9865
9866 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9867
9868         * exceptions-x86.c: provide more graceful handling of the case where
9869         we followed a bogus function pointer from managed code (bug #332866).
9870
9871 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9872
9873         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
9874         replaces the generic_shared flag and will carry more information
9875         in the future.
9876
9877         * generic-sharing.c: Added mini_type_stack_size() which allows
9878         allows open types if given a generic sharing context.
9879         mini_get_basic_type_from_generic() takes a
9880         MonoGenericSharingContext* instead of a MonoCompile* now.
9881
9882         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
9883         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
9884         mini-sparc.c, mini-x86.c: Trivial changes required by the two
9885         changes above.  Just passing arguments through to the right
9886         places.
9887
9888 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9889
9890         * mini-arm.c: unify the call emission to emit_code_seq().
9891
9892 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
9893
9894         * tramp-arm.c: reduced the trampoline size.
9895
9896 2007-10-10  Mark Probst  <mark.probst@gmail.com>
9897
9898         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
9899         variable handling out of arch-specific code.
9900
9901 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
9902
9903         * mini-arm.c: implemented fast delegate dispatch.
9904
9905 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
9908         that fp elimination is turned off if the space required by locals is too
9909         big. Fixes #331958.
9910
9911 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9912
9913         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
9914         ARM to the new style trampoline.
9915
9916 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
9917
9918         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
9919
9920         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
9921
9922 2007-10-09  Martin Baulig  <martin@ximian.com>
9923
9924         * debug-debugger.h
9925         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
9926         `field_info_offset_offset'.     
9927
9928 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9929
9930         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
9931         removed more internal usage of the r11 register and made it available
9932         to the register allocator.
9933
9934 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9935
9936         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
9937         when sharing generics and treat type variables as references.
9938
9939 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9940
9941         * mini-ppc.c: started removing the internal uses of register r11
9942         to eventually allow the register allocator to manage it as an
9943         additional available register.
9944
9945 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9946
9947         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
9948
9949 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9950
9951         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
9952         specific trampolines as they are not performance critical as a jump
9953         target (maybe align as before only for AOT code?). This saves about
9954         200 KB of native code on x86 for monodevelop startup.
9955
9956 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9957
9958         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
9959         monodevelop startup.
9960
9961 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
9964
9965         * mini-sparc.h mini-sparc.c: Implement IMT support.
9966
9967         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
9968         its smaller and doesn't clobber sparc_g1.
9969
9970         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
9971
9972 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9973
9974         * mini-ppc.c: optimized the size of the IMT thunks a bit.
9975
9976 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9977
9978         * mini-ppc.c: implemented fast delegate invocation.
9979
9980 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
9981
9982         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
9983
9984 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9985
9986         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
9987         code to the new style trampoline in preparation for IMT support.
9988
9989 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9990
9991         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
9992         systems already. This also reduces the specific trampiline sizes and
9993         prepares for the use of r12 as the IMT identifier register.
9994
9995 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
9996
9997         * mini-mips.h: endianess fix (simplified from a patch by
9998         Thomas Kunze <thommy@tabao.de>, bug #323737).
9999
10000 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10001
10002         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
10003         to access ucontext fields and enable netbsd support
10004         (partially from Magnus Henoch <mange@freemail.hu>).
10005
10006 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10007
10008         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
10009         use the preprocessor from the CPP env var if it is set.
10010
10011 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10012
10013         * mini-trampolines.c: fixed an assertion and moved it earlier in the
10014         code, before interface_offset gets used.
10015
10016 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
10019         mono_class_setup_vtable () before accessing klass->vtable.
10020
10021 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
10022
10023         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
10024         hackish.
10025
10026 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10027
10028         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
10029         IMT slots (this saves hundreds of KB of memory in programs like
10030         IronPython and Monodevelop).
10031
10032 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10033
10034         * mini.c: print the delegate counter.
10035
10036 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
10037
10038         * mini-x86.c: make it easier to enable the debugging code for IMT
10039         slots.
10040
10041 2007-09-28  Martin Baulig  <martin@ximian.com>
10042
10043         * debug-debugger.h
10044         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
10045         `mono_method_klass_offset' and `mono_method_token_offset'.
10046
10047 2007-09-20  Mark Probst  <mark.probst@gmail.com>
10048
10049         * mini.c: First generics sharing implementation.  Can only share
10050         in very simple cases.  If sharing doesn't work it falls back to
10051         dedicated compilation.
10052
10053         * mini.h: Flag in MonoCompile to specify whether generic
10054         compilation is shared.  Flags enum for marking which generic inst
10055         of a context is used.  Prototypes for helper functions.
10056
10057         * generic-sharing.c: Helper functions for generic method sharing.
10058
10059         * optflags-def.h: Optimization flag (gshared) for enabling generic
10060         method sharing added.
10061
10062         * Makefile.am: generic-sharing.c added.
10063
10064 2007-09-19 Daniel Nauck <dna@mono-project.de>
10065
10066         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
10067
10068 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
10069         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
10070         fixes bug 325507.
10071
10072 2007-09-19  Martin Baulig  <martin@ximian.com>
10073
10074         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
10075         mono_debug_cleanup() is now part of mono_cleanup().
10076
10077 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * driver.c (mono_main): Fix a warning.
10080
10081 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
10082
10083         * aot-compiler.c: Optimize various parts when processing large assemblies.
10084         Fixes ##325568.
10085
10086         * mini.c (mono_patch_info_hash): Improve hash function.
10087
10088 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10089
10090         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
10091         
10092         Code is contributed under MIT/X11 license.
10093
10094 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * mini.c (mini_init): Fix a leak.
10097
10098         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
10099
10100 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10101
10102         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
10103
10104 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10105
10106         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
10107
10108 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
10111         variance tests.
10112
10113         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
10114
10115         * mini.c (handle_alloc): Enable managed allocators in AOT code.
10116
10117         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
10118
10119         * aot-runtime.c (decode_patch_info): Ditto.
10120
10121 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10122
10123         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
10124         static case. Cache delegates in architecture specific code, 
10125         based on number of parameters.
10126         
10127         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
10128         in architecture specific code, based on number of parameters.
10129         
10130         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
10131         caching happen in architecture specific code now.
10132         
10133         Code is contributed under MIT/X11 license.
10134
10135 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10136
10137         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
10138         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
10139         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
10140
10141         Code is contributed under MIT/X11 license.
10142
10143 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10144         * mini.c: (mono_thread_abort) Fixed bug #82416.
10145
10146 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10147
10148         * mini.: hook the new managed GC allocation feature into the JIT.
10149
10150 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10151
10152         * mini.c: implementation for the new runtime tls opcode.
10153
10154 2007-09-11  Martin Baulig  <martin@ximian.com>
10155
10156         * debug-debugger.h
10157         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
10158         `mono_method_inflated_offset'.
10159
10160 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
10161
10162         * driver.c mini.h mini.c: Add a new devel command line option for injecting
10163         async exceptions into a method.
10164
10165         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
10166         purpose of testing whenever the unwinder works at every instruction.
10167
10168 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10169
10170         * mini.c: check accessibility of method used in ldftn (fixes
10171         bug #82635).
10172
10173 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
10176
10177         * inssel.brg: Fix a warning.
10178
10179 2007-09-03  Martin Baulig  <martin@ximian.com>
10180
10181         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
10182         now takes the `main_method' as argument.
10183
10184 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
10185
10186         * cpu-sparc.md (endfilter): Add missing src1:i argument.
10187
10188 2007-08-30  Jonathan Chambers <joncham@gmail.com>
10189
10190         * driver.c: include the cil-coff.h header on Windows.
10191         
10192         Code is contributed under MIT/X11 license.
10193
10194 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10195
10196         * mini.c, driver.c: don't include the cil-coff.h header.
10197
10198 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
10199
10200         * mini.c: flag places that needs fixes fo soft-float support.
10201
10202 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
10203
10204         * mini.h, inssel-float.brg: fix soft-float constant loads on big
10205         endian systems (partially from Dean Jenkins, bug #81924).
10206
10207 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10208
10209         * mini.c (check_linkdemand): Remove embedded reference object in
10210         call to LinkDemandSecurityException.
10211         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
10212         with an IntPtr instead of a reference object.
10213
10214 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * mini.c (handle_initobj): Handle alignment properly.
10217
10218         * inssel.brg (mini_emit_memset): Ditto. 
10219
10220         * inssel.brg (mini_emit_memcpy): Ditto. 
10221
10222         * inssel-sparc.brg: Ditto.              
10223
10224         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
10225
10226 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
10227
10228         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
10229         exceptions raised in unmanaged code. Fixes part of #82594.
10230
10231 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10232
10233         * mini.c (mono_method_to_ir), declsec.c
10234         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
10235
10236 2007-08-22  Martin Baulig  <martin@ximian.com>
10237
10238         * debug-mini.h
10239         (MonoDebuggerThreadInfo): New typedef.
10240         (mono_debugger_thread_table): New global variable.
10241         (mono_debugger_thread_created): New public function.
10242         (mono_debugger_thread_cleanup): New public function.
10243
10244         * debug-debugger.h
10245         (MonoDebuggerInfo):
10246         - removed `get_current_thread' and `lookup_assembly'.
10247         - removed `data_table'.
10248         - added `thread_table'.
10249
10250         * mini.c
10251         (mono_thread_start_cb): Call mono_debugger_thread_created().
10252         (mono_thread_attach_cb): Likewise.
10253         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
10254         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
10255         initial domain.
10256
10257         * driver.c (mono_main): Move mono_debug_init() up, before calling
10258         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
10259
10260 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10261
10262         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
10263         together when passing several arguments of type double (gives a small
10264         speedup and saves a few bytes of generated code).
10265
10266 2007-08-20  Jb Evain  <jbevain@novell.com>
10267
10268         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
10269
10270 2007-08-20  Jb Evain  <jbevain@novell.com>
10271
10272         * mini.c (mono_method_to_ir): throw MethodAccessException
10273         and FieldAccessException instead of InvalidProgramException.
10274
10275 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10276
10277         * mini.c: CoreCLR security checks.
10278
10279         * mini.h: Removed MonoSecurityMode (moved to
10280         metadata/security-manager.h) and mono_security_mode global var
10281         (replaced by set/get functions in security-manager.h).
10282
10283         * driver.c: Added "core-clr-test" security mode for testing.  Used
10284         set-function for setting security mode.
10285
10286 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10287
10288         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
10289         the new jit_info_table.
10290
10291         * driver.c: Test code for the new jit_info_table (enabled by the
10292         define MONO_JIT_INFO_TABLE_TEST).
10293
10294 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
10295
10296         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10297         detection of call <REG> instruction sequence. Fixes build on freebsd.
10298
10299 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
10300
10301         * mini-exceptions.c: Fix a warning.
10302
10303 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
10306         stack overflow handling code on amd64 too.
10307
10308         * mini-exceptions.c (mono_setup_altstack): Make this use 
10309         mono_thread_get_stack_bounds ().
10310
10311         * mini-x86.h: Disable sigaltstack on solaris x86.
10312
10313 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
10316
10317 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
10318
10319         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
10320
10321 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
10324
10325         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
10326
10327 2007-08-03  Neale Ferguson <neale@sinenomine.net>
10328
10329         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
10330         due to alignment.
10331
10332 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10333
10334         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
10335         to be emitted (bug #82281).
10336
10337 2007-08-01  Martin Baulig  <martin@ximian.com>
10338
10339         Merged the `debugger-dublin' branch.
10340
10341         * debug-debugger.h (MonoDebuggerInfo):
10342         Removed the `old_*' compatibility entries.
10343         Added `debugger_version' and `data_table'.
10344         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
10345         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
10346
10347         * debug-mini.c
10348         (MiniDebugMethodBreakpointInfo): Add `address_list'.
10349         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
10350         instead of a `gconstpointer'.
10351         (mono_debugger_insert_method_breakpoint): Return a
10352         `MonoDebugMethodAddressList *'.
10353
10354 2007-06-28  Martin Baulig  <martin@ximian.com>
10355
10356         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10357
10358 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
10361         __builtin_frame_address () since it is broken on older gcc versions.
10362
10363 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10364
10365         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
10366         on the stack overflow handling and made the managed stack overflows
10367         catchable in most cases using soft guard pages.
10368         * exceptions-x86.c: added code to restore the protection in the soft
10369         guard pages at the end of exception handling.
10370
10371 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
10374
10375 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10376
10377         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
10378         exception handling.
10379
10380 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
10381
10382         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
10383         signal handling support until it has been ported to the new mechanism.
10384         * mini.c: fixed stack overflow detection and use the new
10385         architecture code  to handle signals on the altstack.
10386
10387 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10388
10389         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
10390         stack overflows on the alt stack.
10391
10392 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
10393
10394         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
10395         stack overflows on the alt stack.
10396
10397 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
10398
10399         * exceptions-ppc.c: cleanup preparing for altstack support.
10400
10401 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10402
10403         * exceptions-arm.c: cleanup preparing for altstack support.
10404
10405 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10406
10407         * mini.c (print_jit_stats): Output hazard pointer stats.
10408
10409 2007-07-26  Mark Probst  <mark.probst@gmail.com>
10410
10411         * driver.c, mini.c: Replaced security mode flags with a single
10412         enum variable.
10413
10414 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10415
10416         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
10417
10418 2007-07-25  Mark Probst  <mark.probst@gmail.com>
10419
10420         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
10421         (which doesn't do anything yet) for activating Core CLR
10422         (Silverlight) security.
10423
10424 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10425
10426         * mini-codegen.c: work around a possible gcc bug on arm.
10427
10428 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10429
10430         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
10431         message for platforms that don't support AOT compilation.
10432
10433 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10434
10435         * mini.h, mini.c, driver.c: temporary smcs hack.
10436
10437 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
10438
10439         * mini-arm.h, mini-arm.c: arm EABI fixes.
10440
10441 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
10444         case.
10445
10446         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
10447         trampolines taking a method argument.
10448
10449         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
10450
10451         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
10452         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
10453
10454         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
10455         JIT compilation throws an exception. Fixes #82050.
10456
10457 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10458
10459         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
10460         with the MONO_EXCEPTION_ defines.
10461
10462 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
10463
10464         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
10465         #82117.
10466         
10467         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
10468         the cause of an assertion.
10469
10470 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
10471
10472         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
10473         removed.
10474
10475 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
10478         assert. Should fix #82103.
10479
10480 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
10483         here too. Fixes #82095.
10484
10485         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
10486         addresses.
10487
10488         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
10489
10490         * mini-amd64.h: Enable IMT for amd64.
10491         
10492         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
10493
10494 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
10497
10498 2007-07-12  Mark Probst  <mark.probst@gmail.com>
10499
10500         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
10501         as soon as check_linkdemand sets an exception_type.
10502
10503 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10504
10505         * mini-x86.c: fixed offsets for IMT call sequence.
10506         * mini-x86.h: enable IMT again.
10507
10508 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * trace.c (mono_trace_enter_method): Decode MonoType too.
10511
10512         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
10513
10514         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
10515
10516         * mini-amd64.c: Add preliminary IMT implementation.
10517         
10518 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10519
10520         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
10521         understand the new IMT-base interface invocation (thanks to
10522         Daniel Nauck for the report and the remote debugging session).
10523
10524 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10525
10526         * mini-x86.c: size and speed optimizations for the IMT bsearch.
10527
10528 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10529
10530         * Makefile.am (aotcheck): Make this actually use the AOTed code.
10531
10532 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
10533
10534         * mini-trampolines.c: implement AOT IMT support.
10535         * mini-x86.h: enable IMT support for wider testing.
10536
10537 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10538
10539         * inssel.brg (emit_imt_argument): Add aot support here.
10540
10541         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
10542
10543 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10544
10545         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
10546         of the IMT implementation, partially from massi, with my
10547         implementation of the bsearch sequence. Disabled by default until
10548         the AOT code is implemented.
10549
10550 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10551
10552         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
10553
10554         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
10555
10556 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10557
10558         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
10559         arch-independent IMT JIT code from Massimiliano
10560         Mantione (massi@ximian.com) with small cleanups from me.
10561
10562 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
10563
10564         * Makefile.am: fix svn invocation to get the svn revision to be
10565         independent of the local language (build fix).
10566
10567 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10568
10569         * mini.c (inline_method): Reset cfg->exception_type if the
10570         inlining is aborted.  Fixes: 82049.
10571
10572 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
10573
10574         * mini.c: remove assert from exception handling code when exception_ptr
10575         is not set.
10576
10577 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * mini.c (mono_codegen): Add an assert.
10580
10581         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
10582         enter and leave code.
10583         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
10584
10585 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10586
10587         * mini-ppc.c: fixed memory corruption for localloc(0)
10588         (bug #81852).
10589
10590 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10591         
10592         * mini.c: Fix warnings.
10593
10594 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
10595
10596         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
10597         to emit better double->int conversions.
10598
10599 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10600
10601         * mini.c: the provided Min/Max optimizations are valid for unisgned
10602         ints.
10603
10604 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10605
10606         * 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
10607
10608 2007-06-28  Miguel de Icaza  <miguel@novell.com>
10609
10610         * mini.c (mono_running_on_valgrind): Add support for reporting the
10611         method and  its boundaries to valgrind.
10612
10613 2007-06-28  Martin Baulig  <martin@ximian.com>
10614
10615         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
10616
10617 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
10618
10619         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
10620
10621         * generic.2.cs: Add new test case.
10622
10623 2007-06-25  Martin Baulig  <martin@ximian.com>
10624
10625         Merged the `debugger-dublin' branch.
10626
10627         * debug-mini.c
10628         (mono_debugger_insert_method_breakpoint): New public method.
10629         (mono_debugger_remove_method_breakpoint): Likewise.
10630         (mono_debugger_check_breakpoints): New static method.
10631         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
10632
10633         * debug-debugger.h (MonoDebuggerInfo):
10634         Renamed (to keep backward compatibility in the vtable):
10635         `insert_breakpoint' -> `old_insert_breakpoint'.
10636         `remove_breakpoint' -> `old_remove_breakpoint'.
10637         `create_string' -> `old_create_string'.
10638         `lookup_class' -> `old_lookup_class'.
10639         `lookup_type' -> removed; changed into a dummy field.
10640         `lookup_assembly' -> `old_lookup_assembly'.
10641         Added (same functionality, but different signature):
10642         `create_string', `lookup_class', `lookup_assembly'
10643         Added new:
10644         `get_method_addr_or_bpt', `remove_method_breakpoint',
10645         `runtime_class_init'.
10646
10647         * debug-debugger.c: Merged the `debugger-dublin' branch.
10648
10649 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
10650
10651         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
10652         well.
10653         (peephole_pass): Likewise.
10654
10655 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10656
10657         * driver.c: hopefully make setaffinity work also for ancient
10658         versions of linux.
10659
10660 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
10661
10662         * driver.c : win32 build fix.
10663
10664 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10665
10666         * driver.c: check for the MONO_NO_SMP env var and bind to a single
10667         processor if it is set.
10668
10669 2007-06-21  Martin Baulig  <martin@ximian.com>
10670
10671         * debug-mini.h: New file.
10672
10673         * debug-mini.c
10674         (mono_debugger_insert_breakpoint_full): Moved here from
10675         ../metadata/mono-debug-debugger.c.
10676         (mono_debugger_remove_breakpoint): Likewise.
10677         (mono_debugger_breakpoint_callback): Likewise.
10678
10679 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10680
10681         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10682         changes in MonoGenericClass.
10683
10684 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
10687
10688 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10689
10690         * jit-icalls.c (mono_helper_compile_generic_method): Update to
10691         removal of MonoGenericMethod.
10692
10693 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10694
10695         * mini-exceptions.c: hooks for the exception events profiling API.
10696
10697 2007-06-14  Randolph Chung  <tausq@debian.org>
10698
10699         * Makefile.ma: Add hppa target.
10700         * mini-arch.h: Include mini-hppa.h
10701         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
10702         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
10703         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10704
10705 2007-06-14  Randolph Chung  <tausq@debian.org>
10706
10707         * inssel.brg: Add rules for "chained" compare-branch operations so that
10708         a single compare op can affect multiple branches.  Adjust cost for
10709         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
10710         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
10711         cost for some rules so that they can more easily be overridden by
10712         per-arch rules (with fixes from lupus).
10713         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10714
10715 2007-06-13  Randolph Chung  <tausq@debian.org>
10716
10717         * mini-ops.h: Reorder branch ops so that they match the order of the
10718         corresponding CEE_* ops.  The code expects them this way.
10719         Add new ops for HPPA target.
10720         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10721
10722 2007-06-13  Randolph Chung  <tausq@debian.org>
10723
10724         * mini-exceptions.c: Handle cases where the stack grows towards
10725         larger addresses.
10726         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
10727
10728 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10729
10730         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
10731         counter.
10732         * driver.c: explain where a non-matching corlib is found.
10733
10734 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10735
10736         * mini.c (print_jit_stats): Output dynamic code allocation stats.
10737
10738 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
10739
10740         * mini-exceptions.c: Generate a method profile leave event during
10741         an exception to ensure that the profiler gets notified.
10742
10743 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
10746         branch.
10747
10748         * cpu-amd64.md: Add long_and/or/xor opcodes.
10749
10750 2007-06-06  Wade Berrier  <wberrier@novell.com>
10751
10752         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
10753         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
10754         length of instruction shr_imm (expected 8, got 10)
10755
10756 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
10759
10760 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10761
10762         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10763         MonoInternalHashTable again (fixed bug in the internal hash table
10764         code).
10765
10766 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10767
10768         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
10769         Have to figure out what makes it crash the SWF regression.
10770
10771 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
10772
10773         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
10774
10775 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
10776
10777         * mini.c: optimize out the type check when storing null in a
10778         reference array.
10779
10780 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10781
10782         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
10783         MonoInternalHashTable.
10784
10785 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10786
10787         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
10788         signed integer methods.
10789
10790 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
10793         permanently since the current approach doesn't work.
10794
10795 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
10796
10797         * inssel.brg (stmt): Only call delegate->invoke_impl if 
10798         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
10799
10800 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
10803         the sreg2==rdx case.
10804         
10805         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
10806         account if it contains a rex prefix.
10807         (peephole_pass): Handle OP_FMOVE as well.
10808
10809 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
10812         as it causes regressions.
10813
10814 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10815
10816         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
10817         static case as well.
10818
10819         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
10820
10821         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10822         (mono_arch_get_this_arg_from_call): Ditto.
10823
10824         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
10825
10826         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
10827         invoke_impl field.
10828
10829         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
10830         (mono_arch_get_this_arg_from_call): Ditto.
10831
10832         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
10833         
10834         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
10835         try to create optimized invoke code and use that for further invocations. 
10836         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
10837
10838         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
10839
10840 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
10841
10842         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
10843         sealed classes or methods.
10844         *devirtualization.cs: tests for the new optimization
10845
10846 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
10849         by the update_volatile () function.
10850
10851 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
10852
10853         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
10854         require it.
10855
10856         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
10857
10858 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10859
10860         * mini.c: Add configure checks for header files.
10861         * mini-x86.c: Add configure checks for header files.
10862         * trace.c: Add configure checks for header files.
10863         * aot-runtime.c: Add configure checks for header files.
10864         * aot-compiler.c: Add configure checks for header files.
10865         * driver.c: Add configure checks for header files.
10866         * mini-codegen.c: Add configure checks for header files.
10867         
10868         Code is contributed under MIT/X11 license.
10869
10870 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10871
10872         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
10873         icompare_imm -128 + op_iclt. Fixes #81703.
10874
10875 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
10878
10879 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10880
10881         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
10882         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
10883         so that all isinst checks now use "interface_bitmap".
10884
10885 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * cpu-amd64.md (jmp): Fix a warning.
10888
10889         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
10890
10891         * basic.cs: Add new regression test.
10892
10893         * basic.cs: Remove test which is now in basic-long.cs.
10894
10895         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
10896
10897         * basic-long.cs: Add new test.
10898         
10899 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
10900
10901         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
10902
10903 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
10906
10907         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
10908         places.
10909         
10910         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
10911         throwing code a bit.
10912
10913         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
10914         the exception throwing code a bit.
10915
10916         * mini-x86.c (get_call_info): Allocate result from a mempool.
10917
10918 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
10919
10920         * aot-compiler.c (find_typespec_for_class): Fix the assert.
10921
10922         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
10923
10924         * mini.h (MonoCompile): Add 'token_info_hash' field.
10925
10926         * mini.c: Save token->method associations during compilation so the AOT 
10927         compiler can use it.
10928         
10929         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
10930         which reference generic classes and methods.
10931
10932 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
10935
10936         * aot-compiler.c (compile_method): Fix a typo in a comment.
10937
10938         * aot-runtime.c (decode_cached_class_info): Skip generic types.
10939
10940         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
10941         everything generic.
10942
10943         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
10944
10945 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
10946
10947         * mini.h (MonoCompile): Add 'args' field.
10948
10949         * mini.c (mono_compile_create_vars): Store variables representing the arguments
10950         into cfg->args.
10951
10952         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
10953
10954 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * mini.c (mono_compile_get_interface_var): Remove this unused function.
10957
10958         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
10959
10960         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
10961         opcodes for some opcodes.
10962
10963         * mini.h *.brg *.c: Use the new opcodes.
10964
10965 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10966
10967         * mini.h: Bumped aot revision.
10968
10969         * inssel.brg: modified code generation of type checks for interfaces
10970         to use the new "MonoClass.interface_bitmap" instead of the old
10971         "MonoClass.interface_offsets".
10972
10973 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10974
10975         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
10976
10977 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
10978
10979         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
10980         64 bit platforms.
10981
10982 2007-04-27  Neale Ferguson <neale@sinenomine.net>
10983
10984         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
10985
10986 2007-04-27  Wade Berrier  <wberrier@novell.com>
10987
10988         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
10989         mini.h) to fix build.
10990
10991 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10992
10993         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
10994         
10995         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
10996         causes the corlib unit tests to fail.
10997
10998 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10999
11000         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
11001
11002         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
11003
11004         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
11005         opcodes to the comparison relations.
11006
11007         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
11008         opcodes to their types.
11009         
11010         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
11011
11012         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
11013         it in cfg->arch.cinfo.
11014
11015         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
11016
11017         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
11018         cfg->cil_offset_to_bb.
11019
11020 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
11023         created becase of initlocals.
11024
11025 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * mini-alpha.c cpu-alpha.md: More alpha port work from 
11028         Sergey Tikhonov <tsv@solvo.ru>.
11029
11030 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
11031
11032         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
11033
11034 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
11035
11036         * cpu-s390.md (break): Correct the length of break instruction.
11037
11038 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11039
11040         * mini.c: fix a couple of soft-float issues and comments.
11041
11042 2007-04-15  Miguel de Icaza  <miguel@novell.com>
11043
11044         * trace.c (is_filenamechar): - is also a filename char.
11045
11046 2007-04-15  Neale Ferguson <neale@sinenomine.net>
11047
11048         * mini-s390.c: Correct checking for enum type in return value processing.
11049
11050 2007-04-14  Raja R Harinath  <rharinath@novell.com>
11051
11052         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
11053         (version.h): Makefile is in the build directory.
11054
11055 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
11056
11057         * mini-amd64.h: fix for assertion failure on Solaris/amd64
11058
11059 2007-04-11  Martin Baulig  <martin@ximian.com>
11060
11061         * mini.c (can_access_member): Fix handling of generic classes;
11062         fixes #81259.
11063
11064 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
11067
11068 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
11069
11070         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
11071
11072 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11073
11074         * mini-codegen.c: make sure the right spill amount is
11075         used for fp or integer registers (fixes the float_sub_spill() on ppc).
11076
11077 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
11078
11079         * mini-ppc.c: fixes for the fp_branch_nan test.
11080
11081 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
11082
11083         * basic.cs: Comment out new test which still fails on ia64.
11084
11085 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11086
11087         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
11088
11089 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11090
11091         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
11092
11093 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
11096         on 64 bit machines. Fixes part of #80738.
11097
11098         * basic.cs: Add regression test.
11099
11100 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11101
11102         * inssel.brg basic.cs: Revert previous change to fix build.
11103
11104         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
11105         platforms.
11106         
11107         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
11108
11109         * basic.cs: Add new regression test.
11110
11111 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
11114         many arguments.
11115
11116 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11117
11118         * cpu-s390x.md: Correct length of break instruction.
11119
11120 2007-03-16  Neale Ferguson <neale@sinenomine.net>
11121
11122         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
11123         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
11124
11125 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
11126
11127         * *.c: Begin WIN64 port.
11128         * mini.c:  Use correct register in profiler.
11129         * mini-amd64.c: No inline assembly on Win64.
11130         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
11131         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
11132         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
11133         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
11134         mono_arch_ip_from_context for Win64.
11135         
11136         Contributed under MIT/X11 license.
11137
11138 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
11139
11140         * exceptions-amd64.c (seh_handler): Ditto.
11141
11142         * exceptions-x86.c (seh_handler): Fix a memory leak.
11143
11144 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
11145
11146         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
11147         mini-s390x.c: fixed peephole optimizations to deal
11148         correctly with 1 and 2 byte reload avoidance.
11149
11150 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11151
11152         * cpu-s390.md, cpu-s390x.md: update localloc length.
11153
11154 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11155
11156         * cpu-g4.md: added missing descriptions.
11157
11158 2007-03-14  Miguel de Icaza  <miguel@novell.com>
11159
11160         *  Makefile.am: Add support so the tail tests are not executed on
11161         PowerPC as that is a known limitation of the PowerPC port.
11162
11163 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11164
11165         * runmdesc.bat:  Move to msvc directory.
11166         
11167 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11168
11169         * runmdesc.bat:  Run executable that was produced by the current
11170         target and sent via an argument.
11171         
11172 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
11175         #81102.
11176
11177         * generics.2.cs: Add regression test.
11178
11179 2007-03-09  Wade berrier  <wberrier@novell.com>
11180
11181         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
11182
11183 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
11186         AOT code depends on this.
11187
11188 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11189
11190         * mini.c: more precise tracking of types in the eval stack
11191         (part of fix for bug #81044).
11192
11193 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
11196
11197         * aot-compiler.c (encode_patch): Remove an obsolete comment.
11198
11199 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
11202
11203         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
11204
11205 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
11208         a pointer on 64 bit systems. Fixes #80190.
11209
11210         * iltests.il: Add new regression test.
11211
11212 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11213
11214         * mini.c: inline a constant for Environment.IsRunningOnWindows.
11215
11216 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
11217
11218         * trace.c: Remove an erroneous alignemnt check when tracing.
11219           Fixes --trace on OSX86.
11220
11221 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11222
11223         * mini-$(arch).h: initialize SP in context for all the archs.
11224
11225 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
11226
11227         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
11228         regressions in the thread tests.
11229
11230 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
11231
11232         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
11233         - fixed implementation of LOCALLOC opcode
11234         - implemented non-un compare for floats
11235         - code cleanup
11236         - implementation of FDIV and CKFINITE opcodes
11237         - fixes for latest mono updates
11238         - additional arch opcodes
11239
11240 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11241
11242         * Makefile.am: simplify and merge rules for cross-compilation.
11243
11244 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
11245
11246         * local-propagation.c: Actually *apply* the fix for bug 80591...
11247
11248 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11249
11250         * mini-exceptions.c: backuot part of the last change
11251         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
11252
11253 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
11254         * inssel.brg: Fix bug 59286.
11255
11256
11257 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
11258
11259         * mini-exceptions.c: patch from Zoltan to correctly check for
11260         stack boundaries (using the stack register, not the frame register),
11261         fixes bugs #80724, #79717.
11262
11263 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
11266         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
11267
11268         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
11269         presence of frame pointer elimination.
11270
11271 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
11272         
11273         * mini-x86.h: NetBSD UCONTEX_REG defines.
11274
11275 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
11276
11277         * inssel-amd64.brg: Fix amd64 build.
11278
11279 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
11280
11281         * mini.h: remove extern to workaround what looks likes gcc bug 26905
11282         on amd64.
11283
11284 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
11285
11286         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
11287         ends.
11288
11289         * mini-<ARCH>.c: Use mono_is_regsize_var ().
11290
11291 2007-01-30 Mark Mason <mason@broadcom.com>
11292
11293            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
11294            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
11295            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
11296            beginning support for CEE_JMP [not quite working yet]
11297            * tramp-mips.c: LMF handling now works
11298         
11299 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
11302
11303         * mini.h (NULLIFY_INS): New macro.
11304
11305 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11306
11307         * mini.c: statistical profiler fix for windows, patch
11308         from Tor Lillqvist (tml@novell.com).
11309
11310 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
11311         * local-propagation.c: Fix bug 80591.
11312
11313 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11314
11315         * Makefile.am: put back the --export-dynamic option as with
11316         the previous gmodule flags (thanks to Robert Jordan).
11317
11318 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
11321
11322         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
11323         simplify and speed up the local register allocator. Also rename some fields
11324         like iassign->vassign.
11325         
11326         * regalloc.c: Remove some functions which are no longer used since their
11327         inlined version is in mini-codegen.c.
11328         
11329         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
11330
11331         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
11332
11333 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
11336         narrowing. Fixes #80622.
11337
11338         * iltests.il: Add new regresssion test. 
11339
11340 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11341
11342         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
11343         debug-debugger.c, debug-debugger.h: warning fixes.
11344         * driver.c: updated copyright year and made it fit in one line.
11345
11346 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
11347
11348         * aot-runtime.c: updated to use mono-dl instead of gmodule.
11349
11350 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
11353
11354         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
11355
11356         * iltests.il: Add new test for bug #80507.
11357
11358 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11359
11360         * mini-arm.h: use soft-float also on vfp for now.
11361
11362 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11363
11364         * mini.c: fix some more soft-float issues.
11365
11366 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
11369
11370 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
11371         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
11372         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
11373         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
11374
11375 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
11376
11377         * mini-arm.c: typo fix.
11378
11379 2007-01-23  Neale Ferguson <neale@sinenomine.net>
11380
11381         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
11382
11383 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
11384
11385         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
11386         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
11387
11388         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
11389
11390         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
11391
11392         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
11393         
11394         * inssel.brg: Fix a warning.
11395
11396         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
11397
11398         * abcremoval.c ssa.c ssapre.c: Update after this change.
11399         
11400         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
11401
11402         * dominators.c (df_set): Use mono_bitset_union_fast.    
11403
11404 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11405
11406         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
11407         mini-codegen.c: reduce relocations and memory usage for the cpu
11408         description.
11409
11410 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
11413
11414         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
11415         to reduce their size.
11416
11417 2007-01-19 Mark Mason <mason@broadcom.com>
11418
11419         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
11420         * mini-mips.c: more configuration macros, support long conditional branches, additional
11421         asserts, fix epilog instrumentation.
11422         * mini-mips.h: use standard stack walk
11423         * cpu-mips.md: increase size of div, rem and conditional branches
11424         
11425 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
11426
11427         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
11428         to cpu spec data.
11429
11430 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
11433         (compile_method): Ditto.
11434
11435         * aot-runtime.c (decode_klass_info): Ditto.
11436
11437         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
11438         needed by the code generated by inssel.brg. Also fix a warning.
11439
11440 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
11441
11442         * mini.c: deal with enums that become genericinsts by
11443         being nested in a generic class (bug #79956).
11444
11445 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
11446
11447         * mini.c: match the generic definition to check for
11448         private access with generic types (bug #78431).
11449
11450 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
11451
11452         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
11453         to make life easier for people cross-compiling that insist on not
11454         using scratchbox.
11455
11456 2007-01-17 Mark Mason <mason@broadcom.com>
11457
11458         * inssel-long.brg: patch to deal with mips missing flags
11459         * inssel-long32-mips.brg: implement overflow checks
11460         * insset-mips.brg: implement overflow checks
11461         * mini-mips.h: implement conditional exception handling
11462         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
11463           Remove unused code, minor cleanups.
11464         * exceptions-mips.c: minor cleanups
11465         * mini-ops.h: add mips conditional exception ops
11466         * cpu-mips.md: add mips conditional exception ops
11467
11468         
11469 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
11470
11471         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
11472         to deal with mips missing of flags.
11473
11474 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
11475
11476         * exceptions-ppc.c: execute fault handlers.
11477
11478 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
11479
11480         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
11481
11482 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11483
11484         * mini.c: handle also floating point values in initialize_array.
11485
11486 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11487
11488         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
11489         array initialization and make it conditional on the intrins option.
11490
11491 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11492
11493         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
11494         relocations and put the patch info names close to the enum definition.
11495
11496 2007-01-15 Mark Mason <mason@broadcom.com>
11497
11498         * basic.cs, exceptions.cs: break up large tests to increase debugability.
11499
11500 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11501
11502         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
11503
11504 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11505
11506         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
11507
11508 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11509
11510         * Makefile.am: distribute the mips sources.
11511
11512 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11513
11514         * mini-codegen.h: handle bug #80489 here, by excluding ecx
11515         directly.
11516
11517 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
11518
11519         * cpu-x86.md: back out for now as this triggers other regressions.
11520
11521 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11522
11523         * cpu-x86.md: force src1 and dest regpair for long shift instructions
11524         to eax:edx, so ecx can't get allocated to them (bug #80489).
11525
11526 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
11527
11528         * mini.c, mini-exceptions.c: enabled running fault handlers
11529         (bug #80469).
11530
11531 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11532
11533         * driver.c: If nothing fail, do not use the string "failed",
11534         because it makes it very annoying to view test result logs on the
11535         web. 
11536
11537 2006-12-30  Miguel de Icaza  <miguel@novell.com>
11538
11539         * debug-debugger.c (mono_debugger_main): Rename "main" to
11540         "main_method" to prevent a warning.
11541
11542         Remove a warning for unused field.
11543
11544 2006-12-28  Martin Baulig  <martin@ximian.com>
11545
11546         * debug-debugger.c
11547         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
11548
11549 2006-12-22  Martin Baulig  <martin@ximian.com>
11550
11551         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
11552         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
11553         seperate `.mdb_debug_info' section, so we can access it from the
11554         debugger even if the binary is stripped.
11555
11556         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
11557         from the `.mdb_debug_info' here to prevent the linker from
11558         removing that section.
11559
11560         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
11561         mdb-debug-info64.s.
11562
11563 2006-12-19  Robert Jordan  <robertj@gmx.net>
11564
11565         * mini-x86: enable the code to return small structures in
11566         registers for FreeBSD as well. Fixes bug #80278.
11567         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
11568
11569 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11570
11571         * mini-x86.c: align the stack when calling the profiler
11572         function instrumenting the prolog (on OSX).
11573
11574 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11575
11576         * mini.c: emit a break opcode where Debugger.Break () is called.
11577
11578 2006-12-13  Miguel de Icaza  <miguel@novell.com>
11579
11580         * mini.c (mono_method_to_ir): Provide useful information on this
11581         assert, to prevent others from debugging like I did.
11582
11583 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11584
11585         * mini.c: enable code which was incorrectly commented
11586         (bug #80235).
11587
11588 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11589
11590         * mini-x86.c: enable on OSX, too, the code to return small
11591         structures in registers.
11592
11593 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11594
11595         * mini-x86.c: remove the use of the dynamic code manager here, too.
11596
11597 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11598
11599         * mini.h, debug-debugger.c, tramp-*.c: fixed 
11600         mono_debugger_create_notification_function() to use
11601         mono_global_codeman_reserve () instead of a dynamic code manager.
11602
11603 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11604
11605         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
11606         ves_array_element_address() jit icall and use a generated
11607         managed method instead (which is about 4 times faster for a rank 3
11608         array access).
11609
11610 2006-11-29  Mark Mason  <mason@broadcom.com>
11611
11612         * basic-calls.cs: additional tests for passing
11613         structures as function arguments.
11614
11615 2006-11-29  Mark Mason  <mason@broadcom.com>
11616
11617         * mini-mips.h: disable custom exception handling
11618         * mini-mips.c: throw/rethrow should use jalr to call
11619         exception stubs.  Fixed bug with passing structures
11620         by value. More support for tracing floating point
11621         functions.
11622
11623 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11624
11625         * mini.c: fixed typo in the soft-float ldind.r4 handling
11626         (bug #80086).
11627
11628 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11629
11630         * mini.c, mini.h, driver.c: added --runtime command line
11631         option to select a different runtime than the autodetected one.
11632         * jit.h: added API for embedders to initialize with a specific
11633         runtime version.
11634
11635 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
11636
11637         * mini.c: handle also boxing of r4 values (bug #80024).
11638
11639 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11640
11641         * mini-ppc.c: force indirect calls until we reserve
11642         enough address space for all the generated code.
11643
11644 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
11645
11646         * exceptions-arm.c: workaround bugs in the libc definition
11647         of struct ucontext.
11648
11649 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11650
11651         * inssel.brg: fixes from me and Mark Mason.
11652
11653 2006-11-23  Dick Porter  <dick@ximian.com>
11654
11655         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
11656         semaphore display now we've fixed the initial value
11657
11658 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11659
11660         * inssel.brg: partially revert the last change to fix the build.
11661
11662 2006-11-21  Mark Mason  <mason@broadcom.com>
11663
11664         * inssel.brg: Add and use compare-and-branch macros to support
11665         architectures that do not have condition code registers (ie. MIPS).
11666         * *-mips.{c,brg,md}: Fix copyright statements
11667
11668 2006-11-20  Mark Mason  <mason@broadcom.com>
11669
11670         * Makefile.am: remove mini-codegen.c from list of MIPS sources
11671         * mini.c: Allow GET_CONTEXT to be specified by the arch port
11672         * mini.h: Added declaration for mono_print_ins()
11673         * mini-codegen.c: added ins_spec initializer for MIPS
11674         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
11675         vreg to be virtual and hreg to be non-virtual.
11676         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
11677         is not yet working/implemented correctly.
11678         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
11679         non-static, fixup calls to print_ins() from other parts in the file.
11680
11681 2006-11-20  Mark Mason  <mason@broadcom.com>
11682
11683         * basic-calls.cs: added tests for passing structures as arguments
11684         to calls.
11685
11686 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11687
11688         * inssel-long32.brg: optimize signed division by power of two.
11689
11690 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11691
11692         * mini-arm.c: added support for interworking with thumb code
11693         (mono must be still be built using the ARM instruction encoding).
11694
11695 2006-11-19  Miguel de Icaza  <miguel@novell.com>
11696
11697         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
11698         verifier has different rules for it.   Fixes a few verifier issues
11699         in the test suite.
11700
11701         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
11702         at the end, so people know what happened.
11703
11704 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11705
11706         * brach-opts.c: in optimize_exception_target() make sure we
11707         are in a catch clause (fixes bug #79871).
11708
11709 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11710
11711         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
11712         more soft-float support fixes.
11713
11714 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
11715
11716         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
11717         that are passed half on the stack and half in registers.
11718
11719 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11720
11721         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
11722         more mips integration work from Mark E Mason 
11723         <mark.e.mason@broadcom.com>.
11724
11725 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11726
11727         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
11728         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
11729         tramp-mips.c: added sources for the mips port, not
11730         integrated in the build yet. Contributed by
11731         Mark E Mason <mark.e.mason@broadcom.com>.
11732
11733 2006-11-14  Neale Ferguson <neale@sinenomine.net>
11734
11735         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
11736
11737 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11738
11739         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
11740         put the soft-float rules in its own file since it seems to
11741         break s390 compilation.
11742
11743 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11744
11745         * mini-arm.c: fixed wrnings.
11746
11747 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
11748
11749         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
11750         inssel-arm.brg: ARM support for soft-float.
11751
11752 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
11753
11754         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
11755         loads and stores of 32 bit fp values.
11756
11757 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
11760
11761         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
11762         works. Fixes #79852 and #79463.
11763
11764 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11765
11766         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
11767         more soft-float support WIP and fixes.
11768
11769 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
11770
11771         * mini-arm.c: some VFP updates.
11772
11773 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11774
11775         * mini-exceptions.c: 0 is a valid local var offset in some
11776         architectures, don't assert (bug #78508).
11777
11778 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
11779
11780         * exceptions-arm.c: fixed off by one error in stack walk code.
11781
11782 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11783
11784         * mini.h, mini.c: more precise tracking of type load exceptions.
11785
11786 2006-11-03  Robert Jordan  <robertj@gmx.net>
11787
11788         * Makefile.am: [WIN32] Add monow.exe target.
11789         * driver.c: [WIN32] Don't detach the console when debugging.
11790         Fixes bug #79797.
11791         
11792 2006-10-30  Miguel de Icaza  <miguel@novell.com>
11793
11794         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
11795
11796 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11797
11798         * aot-compiler.c (emit_method_info): Add a case missed earlier.
11799
11800         * driver.c (mini_regression): Fix --regression with AOT.
11801
11802         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
11803
11804 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
11805
11806         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
11807
11808         * mini-sparc.h: Don't use sigaction on sparc/linux.
11809
11810         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
11811
11812         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
11813
11814         * mini-exceptions.c: Add proper include files for getpid ().
11815
11816 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
11817
11818         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
11819         address instead of a MonoJitInfo* to avoid decoding the exception info for the
11820         method.
11821
11822         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
11823         name cache to reduce its size.
11824
11825         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
11826
11827 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11828
11829         * mini-x86.c: Save/restore the current LMF structure more efficiently using
11830         the mono_lmf TLS variable.
11831
11832         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
11833         trampoline lmf frames.  
11834
11835         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
11836
11837 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
11838
11839         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
11840         the mono_lmf TLS variable.
11841
11842         * mini-exceptions.c: Access the LMF structure through accessors.
11843
11844         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
11845         variable instead of in jit_tls->lmf.
11846
11847         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
11848         
11849         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
11850         trampoline lmf frames.
11851
11852         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
11853
11854 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11855
11856        * mini.c trace.c mini-x86.c: Revert these too.
11857         
11858        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
11859        signature change.
11860
11861 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
11862
11863         * genmdesc.c: removed now dead code.
11864
11865 2006-10-09  Robert Jordan <robertj@gmx.net>
11866
11867         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
11868
11869 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11870
11871         * mini.h: do not leave gaps in the opcode values.
11872
11873 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
11874
11875         * jit-icalls.h: flag functions as internal here, too.
11876
11877 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
11878
11879         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
11880         functions with the internal attribute.
11881
11882 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
11883
11884         * aot-compiler.c: fclose the file descriptor in the profile read loop.
11885
11886 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
11887
11888         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
11889         for soft-float.
11890
11891 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
11894         tail calls as on other platforms.
11895
11896         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
11897
11898         * iltests.il: Add a few tailcall tests.
11899
11900 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11901
11902         * driver.c: fix loop for old compilers (bug #79521).
11903
11904 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
11907
11908         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
11909
11910         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
11911         metadata without any code.
11912
11913         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
11914         more precise debugging information using gdb.
11915
11916 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11917
11918         * inssel-ia64.brg: Make the helper methods static.
11919
11920 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11921
11922         * inssel-x86.brg: make the helper methods static.
11923
11924 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
11925
11926         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
11927
11928 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
11929
11930         * mini.c: updates for monoburg changes.
11931         * inssel.brg: make a few helper functions static as they should.
11932
11933 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11934
11935         * Makefile.am: Move mini-codegen.c to common_sources.
11936
11937 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11938
11939         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
11940         instructions.
11941         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
11942         mini-ppc.h: port to use the common local register allocator.
11943
11944 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * mini.h: Remove the comment too then.
11947
11948 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
11949
11950         * mini.h: put back backend.data which is to be used shortly and
11951         doesn't increase the size of MonoInst. If any 64 bit arch aligned
11952         pointers on 4 byte boundaries it'd have much bigger issues running
11953         and you can ifdef it out anyway.
11954
11955 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
11958         MonoInst size by 4 bytes on 64 bit machines.
11959
11960 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11961
11962         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
11963         replacement with more meaningful field names. Arch maintainers, please
11964         check the assigned names are good enough for your arch.
11965
11966 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
11969         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
11970
11971 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11972
11973         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
11974         relocations and memory requirements, put the optimization flags
11975         definitions in their own file.
11976
11977 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
11980
11981         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
11982
11983 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
11984
11985         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
11986
11987 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
11988
11989         * inssel.brg: use the correct function to get the size of an item
11990         in an array, given an element class.
11991         * aot-compiler.c: do not access class->class_size directly.
11992
11993 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11994
11995         * mini.h, debug-mini.c: added a debugging function to print
11996         info about local variables and arguments in a jitted method.
11997
11998 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12001
12002         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
12003
12004 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
12007         inner and outer loops when passing vtypes.
12008
12009 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
12010
12011         * mini-ppc.c: take into account the cpu errata for cache flushing
12012         which caused some random errors (bug #79381).
12013
12014 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
12015
12016         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
12017         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
12018
12019 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12020
12021         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
12022         loaded.
12023
12024         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
12025         freebsd ports tree.
12026
12027         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
12028         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
12029
12030         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
12031         displacement.
12032
12033 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
12036
12037 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
12040         macro does not have to be changed during debugging.
12041
12042         * 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>.
12043
12044         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
12045
12046         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
12047         
12048         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
12049         MONO_ARCH_NO_EMULATE_MUL is defined.
12050
12051         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
12052
12053         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
12054
12055         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
12056
12057         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
12058         
12059 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12060
12061         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
12062         stuff to mini-exceptions.c where it is used.
12063
12064         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
12065         setup code, the real one is in mini-exceptions.c.
12066
12067         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
12068         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
12069         some changes from the freebsd ports tree.
12070
12071         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
12072         constants.
12073         
12074         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
12075
12076 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
12077
12078         * mini.c: on Linux, check for /proc to be mounted
12079         (bug# 79351, novell bug#201204).
12080
12081 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12082
12083         * mini.c: handle cases where pthread_attr_getstack() behaves
12084         incorrectly (bug #78096).
12085
12086 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
12087
12088         * mini-arm.c: support larger stack frames (bug #79272).
12089
12090 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
12093
12094         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
12095         tokens.
12096
12097         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
12098         mono_class_from_name () to find a class from its name.
12099
12100         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
12101
12102 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
12105
12106 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
12107
12108         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
12109
12110 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
12113         callinfo->trampoline.
12114
12115         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
12116         fixes #79271.
12117         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
12118         future.
12119
12120 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
12123
12124 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
12125
12126         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
12127         stats.method_trampolines, it is already done by the generic trampoline code.
12128
12129         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
12130         
12131 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
12134
12135         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
12136
12137         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
12138
12139         * mini.c (print_jit_stats): Print mscorlib mempool size too.
12140         
12141         * mini.c (print_jit_stats): Print new stats.
12142
12143         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
12144
12145 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12146
12147         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
12148         Address on two dimensional arrays. Fixes #78729.
12149
12150         * mini.h (MonoCompile): Add a 'skip_visibility' field.
12151
12152         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
12153         a method.
12154
12155         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
12156
12157         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
12158         #79130.
12159         
12160         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
12161         a race condition.
12162         (mini_get_ldelema_ins): Ditto.
12163
12164 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
12165
12166         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
12167         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
12168         Fixes #79213.
12169
12170 2006-08-29 Neale Ferguson <neale@sinenomine.net>
12171
12172         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
12173         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
12174
12175         * exceptions-s390x.c: Cosmetic change.
12176
12177         * tramp-s390.c: Fix warning.
12178
12179         * cpu-s390.md: Correct length of mul_imm.
12180
12181 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12182
12183         * aot-compiler.c: added binary writer with ELF backend
12184         implementation (only on Linux/x86 for now).
12185
12186 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12187
12188         * Makefile.am: Don't run net 2.0 AOT tests.
12189
12190         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
12191         (mono_compile_assembly): Skip net 2.0 assemblies as well.
12192
12193         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
12194
12195 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12196
12197         * aot-compiler.c: simplified and refactored the asm-writing code
12198         to allow different backends.
12199
12200 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
12201
12202         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
12203
12204         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
12205         little. Share patches of type TYPE_FROM_HANDLE as well.
12206
12207         * mini.c (mono_patch_info_equal): New helper function.
12208         (mono_patch_info_hash): Ditto.
12209
12210         * aot-compiler.c (emit_method_code): Fix s390 build.
12211
12212         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
12213         is not handled because it is stored as a flag and not as a type ctor. Fixes
12214         #79016.
12215
12216 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * aot-compiler.c: Fix computation of GOT slot statistics.
12219         
12220         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
12221         Also remove support for not PIC AOT.
12222
12223         * mini.h: Bump AOT file format version.
12224
12225         * objects.cs: Add a test for #78990.
12226
12227         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
12228         (peter.dettman@iinet.net.au). Fixes #79087.
12229
12230         * basic-long.cs: Add a test for the above.
12231
12232 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
12233
12234         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
12235         
12236         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
12237         code somewhat.
12238
12239 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
12242         exceptions.
12243
12244 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12245
12246         * mini.c: Don't verify COM proxy invoke calls
12247         
12248
12249 2006-08-10  Dick Porter  <dick@ximian.com>
12250
12251         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
12252         which process is holding semaphores locked.
12253
12254 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
12255
12256         * mini-ia64.c mini-amd64.c: Fix #79027.
12257
12258         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
12259
12260         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
12261
12262         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
12263         implicit arguments in a vararg call. Fixes #79027.
12264
12265 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
12266
12267         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
12268         (mono_get_array_new_va_signature): Ditto.
12269
12270 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
12271
12272         * aot-runtime.c: Call init_plt lazily.
12273
12274         * inssel-long.brg: Fix unsigned long->int conversion.
12275
12276         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
12277
12278         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
12279         that most data is now in the .rss/.data section.
12280
12281 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
12284
12285         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
12286
12287         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
12288
12289         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
12290
12291         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
12292         virtual call. Fixes #79010.
12293
12294         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
12295         and use the result as the this argument in the real call.
12296
12297         * generics.2.cs: Add a new test for #79010.
12298         
12299 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * mini-x86.c: Fix a warning.
12302
12303         * aot-compiler.c: Add a bunch of statistics.
12304
12305         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
12306
12307 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
12308
12309         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
12310
12311 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12312
12313         * 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>.
12314
12315 2006-07-13  Miguel de Icaza  <miguel@novell.com>
12316
12317         * mini.c (mono_method_to_ir): Obtain the original method in the
12318         CIL stream and use this to perform validation.
12319
12320         Fixed: #78816
12321
12322 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
12325         (mono_arch_call_opcode): Ditto.
12326
12327         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
12328         #78826.
12329
12330         * mini.c (mono_patch_info_dup_mp): New helper function.
12331         
12332         * aot-compiler.c (compile_method): Fix some of the memory allocated during
12333         compilation. Fixes #78827.
12334
12335 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
12336
12337         * declsec.c: Use original security informations for
12338           MONO_WRAPPER_MANAGED_TO_MANAGED.
12339
12340 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12341
12342         * mini.c: Allow Com Interop methods/classes and
12343         don't verify COM wrapper calls
12344         
12345
12346 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
12347
12348         * inssel-long32.brg: Fix long->i4 checked conversion.
12349
12350         * exceptions.cs: Add a test for the above.
12351
12352 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
12355
12356         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
12357         leaks.
12358
12359         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
12360         #78775.
12361
12362 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * mini.c: Fix solaris/x86 exception handling.
12365
12366         * Makefile.am: Get rid of $(ICU_LIBS).
12367
12368 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
12369
12370         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
12371         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
12372         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
12373
12374         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
12375
12376         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
12377         this function causes a SIGSEGV.
12378
12379 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * mini.c: Remove unused solaris/x86 includes.
12382
12383 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
12386
12387 2006-06-20  Jb Evain  <jbevain@gmail.com>
12388
12389         * cpu-g4.md: fix max length of start_handler instruction.
12390
12391 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
12392         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
12393
12394 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
12395         * ssa.c: Fixed bug 78653 for SSA based deadce.
12396         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
12397         MonoInst.flags, used in SSA based deadce.
12398         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
12399         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
12400
12401 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
12402
12403         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
12404         it can end up using non executable memory on ppc64 systems
12405         running ppc32 userspace (fix from Johannes Berg).
12406
12407 2006-06-14  Dick Porter  <dick@ximian.com>
12408
12409         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
12410         4.1.1
12411
12412 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
12413         * mini.c: Made so that inline is locally disabled if it would
12414         trigger a .cctor, because too many apps depend on this behavior
12415         (which seems to be also the one of the MS CLR).
12416
12417 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
12418
12419         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
12420         No idea why this worked before.
12421
12422         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
12423         which branch to outer exception clauses since they could skip the
12424         inner finally clauses. Fixes #78633.
12425
12426         * exceptions.cs: Add a test for the above.
12427
12428         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
12429         Fixes #78629.
12430
12431         * iltests.il: Add a test for the above.
12432
12433 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
12434
12435         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
12436         after the end of a try bblock, to prevent asserts in mini_method_compile ().
12437
12438         * iltests.il: Add a test for the above.
12439
12440 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
12441
12442         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
12443         
12444         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
12445         methods as instrinsics.
12446
12447 2006-06-09  Wade Berrier <wberrier@novell.com>
12448
12449         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
12450         (simple-cee-ops.h ssapre-mini-ops.h)
12451
12452 2006-06-09  Neale Ferguson <neale@sinenomine.net>
12453
12454         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
12455         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
12456         instruction).
12457         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
12458         * cpu-s390x.md: Fix max. length values for a couple of instructions.
12459
12460 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12461
12462         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
12463
12464 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
12465
12466         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
12467         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
12468         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
12469         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
12470         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
12471         of opcodes, so that bug 78549 should not happen again.
12472         * ssapre.c: Updated to use the renamed files.
12473
12474 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12475
12476         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
12477         in OP_ATOMIC_EXCHANGE_I4.
12478
12479 2006-06-07  Wade Berrier <wberrier@novell.com>
12480
12481         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
12482         in mono_debugger_create_notification_function)
12483
12484 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
12487         
12488         * mini.c (type_from_stack_type): Disable some changes which do not
12489         seem to work.
12490
12491         * driver.c: Reenable opts.
12492
12493         * mini.h (MonoStackSlot): New structure to keep track of the verification state
12494         of the evaluation stack.
12495         
12496         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
12497         evaluation stack trace at entry to the bblock.
12498
12499         * mini.c (merge_stacks): New function to perform verification of stack merges.
12500         Turned off by default.
12501
12502         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
12503         STACK_MP.
12504         
12505 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
12506
12507         * local-propagation.c: Fixed bug 78549.
12508
12509 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
12510
12511         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
12512
12513 2006-06-02  Miguel de Icaza  <miguel@novell.com>
12514
12515         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
12516         tramp-arm.c, tramp-ia64.c
12517         (mono_debugger_create_notification_function): Update signature to
12518         new signature and use new protocol for creating the notification
12519         function.  
12520
12521         Should fix the build.
12522
12523 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
12524
12525         * exceptions-ppc.c (mono_jit_walk_stack)
12526         (ves_icall_get_frame_info): Fix the build
12527
12528 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12529
12530         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
12531
12532 2006-05-31  Raja R Harinath  <rharinath@novell.com>
12533
12534         * il2tests.2.il: New file for generics CIL tests.  Add test for
12535         #78019.
12536         * Makefile.am: Update.
12537
12538         Fix #78019
12539         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
12540         to nullable types.
12541
12542 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
12543
12544         * aliasing.c: Fixed bug 78311.
12545
12546 2006-05-29  Martin Baulig  <martin@ximian.com>
12547
12548         * mini-exceptions.c (mono_find_jit_info): When computing the
12549         native offset, check whether we're actually inside the method's
12550         code; call mono_debug_print_stack_frame() to format the frame.
12551         (ves_icall_System_Exception_get_trace): Call
12552         mono_debug_print_stack_frame() to format the stack frame.
12553         (ves_icall_get_trace): Update to the new debugging API.
12554         (mono_jit_walk_stack_from_ctx): Likewise.
12555         (ves_icall_get_frame_info): Likewise.
12556
12557         * mini.c (get_method_from_ip): Use the new debugging API.
12558         (mono_print_method_from_ip): Likewise.
12559
12560         * exceptions-ppc.c
12561         (mono_jit_walk_stack): Use the new debugging API.
12562         (ves_icall_get_frame_info): Likewise.   
12563
12564 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
12567
12568 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
12569
12570         * mini.c: Added "limitator" to inline for debugging.
12571
12572 2006-05-24  Martin Baulig  <martin@ximian.com>
12573
12574         * debug-debugger.c (mono_debugger_init): Create a private,
12575         malloc()-based code manager for the notification function and
12576         intentionally leak it on exit.  This fixes the crash-on-exit race
12577         condition.
12578
12579         * tramp-amd64.c
12580         (mono_debugger_create_notification_function): Added
12581         `MonoCodeManager *' argument.
12582
12583         * tramp-x86.c
12584         (mono_debugger_create_notification_function): Added
12585         `MonoCodeManager *' argument.
12586
12587 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
12588
12589         * aliasing.c: Fixed 64 bit issue.
12590         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12591         default since all known bugs are fixed (one more time!).
12592
12593 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12594
12595         * mini.c: write barrier support.
12596
12597 2006-05-23  Martin Baulig  <martin@ximian.com>
12598
12599         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
12600         check at the top of the file.
12601
12602 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12603
12604         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
12605         reverting changes without reason and without changelog entries.
12606
12607 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
12608
12609         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
12610         to a few opcodes. Fixes #78439.
12611
12612         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
12613         consistency with other archs.
12614
12615         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
12616
12617 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12618
12619         * debug-debugger.c: fix the build.
12620
12621 2006-05-17  Martin Baulig  <martin@ximian.com>
12622
12623         * debug-debugger.c
12624         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
12625         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
12626         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
12627         (debugger_attach): Call GC_mono_debugger_add_all_threads().
12628
12629 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
12630
12631         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
12632
12633 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
12634
12635         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
12636         MONO_TYPE_GENERICINST.
12637         
12638         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
12639         MONO_TYPE_GENERICINST.
12640
12641 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
12644         #78325.
12645
12646 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
12647
12648         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
12649         mempool.
12650         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
12651
12652 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
12653
12654         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
12655         mono_trace_cleanup ().
12656
12657         * iltests.il: Fix problem with the newly added test.
12658
12659         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
12660         due to register constraints, free up the previous hreg. Fixes #78314.
12661
12662         * iltests.il: Add new test for #78314.  
12663
12664         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
12665         Interlocked.Add. Fixes #78312.
12666
12667         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
12668         
12669 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
12670
12671         * inssel.brg (mini_emit_virtual_call): Fix a warning.
12672
12673 2006-05-05  Martin Baulig  <martin@ximian.com>
12674
12675         * debug-mini.c (mono_debug_open_block): New method.
12676
12677         * mini-amd64.c
12678         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12679         the beginning of each basic block.
12680
12681         * mini-x86.c
12682         (mono_arch_output_basic_block): Call mono_debug_open_block() at
12683         the beginning of each basic block.
12684
12685 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12686
12687         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12688         default until I understand why they break the build on amd64.
12689
12690 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
12691
12692         * mini.c (mini_cleanup): Call mono_cleanup ().
12693
12694         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
12695         errors.
12696
12697 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
12698
12699         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
12700         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
12701         default since all known bugs are fixed, and I cannot reproduce bug
12702         77944... I'm asking Matt Hargett to test again after this commit.
12703
12704 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
12705
12706         * mini-codegen.c: Fixed typo that thrashed inline.
12707
12708 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
12709
12710         * dominators.c (compute_dominators): Avoid using a worklist since
12711         it is not correct in some cases. Instead, iterate over all bblocks as
12712         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
12713
12714 2006-04-28  Miguel de Icaza  <miguel@novell.com>
12715
12716         * mini.c (mono_jit_compile_method_inner): Use
12717         mono_prepare_exception_from_error that resets the value
12718         internally.
12719
12720 2006-04-27  Miguel de Icaza  <miguel@novell.com>
12721
12722         * mini.c: Move the mini_loader_error_to_exception to metadata. 
12723         
12724 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12725
12726         * aliasing.c: Fixed bug 78210.
12727
12728 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
12729
12730         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
12731         default until all their problems (or the ones they trigger) are fixed.
12732
12733 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
12734
12735         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
12736         
12737         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
12738         as loaded only after resolving patches since that could invoke the same method.
12739
12740         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
12741
12742         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
12743         functions.
12744
12745         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
12746         AOT loader.
12747
12748         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
12749         stack.
12750
12751         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
12752         made from AOT code through the PLT table.
12753
12754         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
12755         holding the plt offset when a call is made to the aot plt trampoline.
12756         
12757 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
12760         amd64 AOT support.
12761
12762         * Makefile.am (common_sources): Fix build breakage.
12763
12764         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
12765         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
12766         intra-assembly calls if possible.
12767         
12768         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
12769
12770         * mini-trampolines.c: Handle PLT entries.
12771
12772         * mini.c: Avoid creating a GOT var for calls.
12773
12774         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
12775         from mscorlib code.
12776
12777         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
12778         from mscorlib code.
12779
12780         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
12781         AOT code.       
12782
12783         * mini.h: Bump AOT file format version.
12784         
12785         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
12786         covers more cases.
12787
12788 2006-04-25  Martin Baulig  <martin@ximian.com>
12789
12790         * driver.c: Disable copyprop, consprop and inline when running
12791         inside the debugger.
12792
12793 2006-04-25  Martin Baulig  <martin@ximian.com>
12794
12795         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
12796         with `get_current_thread' and added `detach'.
12797         (MonoDebuggerMetadataInfo): Added `thread_size',
12798         `thread_tid_offset', `thread_stack_ptr_offset' and
12799         `thread_end_stack_offset'.
12800
12801 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
12804         aot-runtime.c.
12805
12806         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
12807         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
12808
12809         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
12810
12811         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
12812
12813         * aot.c: Add support for ADJUSTED_IID.  
12814
12815 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
12816
12817         * aot.c (emit_method_order): Don't align method_order_end.
12818
12819         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
12820         the interface ID changes.
12821
12822 2006-04-21  Dick Porter  <dick@ximian.com>
12823
12824         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
12825         cleaning up a thread.  Fixes the new part of bug 77470.
12826
12827 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
12828
12829         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
12830         to managed wrapper.
12831                      
12832 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
12835         
12836         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
12837         SIGSEGV. Fixes #78072.
12838
12839         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
12840         unregister our SIGABRT handler.
12841
12842 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
12843
12844         * mini.c: Disabled inline where it can alter the call stack in a
12845         way visible from managed code.
12846         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
12847         default.
12848
12849 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
12852         on other platforms. Fixes #78089.
12853
12854 2006-04-13  Martin Baulig  <martin@ximian.com>
12855
12856         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
12857         determine whether we're inside the debugger.
12858
12859         * debug-debugger.h
12860         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
12861
12862 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
12863
12864         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
12865         handler clauses. Fixes #78024.
12866
12867         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
12868         in the CALL_MEMBASE opcodes. Fixes #78088.
12869         (mono_arch_get_vcall_slot_addr): Ditto.
12870
12871 2006-04-10  Martin Baulig  <martin@ximian.com>
12872
12873         * debug-debugger.c: The thread handling code has now been moved
12874         into ../metadata/threads.c.
12875
12876 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12877
12878         * driver.c (mono_main): Fix --with-gc=none build.
12879
12880         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
12881         (mono_spillvar_offset_float): Ditto.
12882         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
12883         hreg, not when its !global, since on ia64, there is a third category: stacked
12884         registers.      
12885
12886 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
12887
12888         * mini.c: set MonoInst->klass for load field address and a few other
12889         places.
12890
12891 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
12894
12895 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
12898         the branch opt changes.
12899
12900 2006-04-06  Dick Porter  <dick@ximian.com>
12901
12902         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
12903         
12904         * wapihandles.c (mini_wapi_seminfo): 
12905         * driver.c (mono_main): Add semaphore info option
12906
12907 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12908
12909         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
12910         branch optimization changes. Fixes #78009.
12911
12912 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12913
12914         * mini.c: ignore accessibility of methods in managed->native wrappers.
12915
12916 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
12919         
12920         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
12921
12922 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12923
12924         * mini.c: Modify the branch optimizations to preserve the invariant that
12925         the entries inside the in_bb and out_bb arrays are unique.
12926         (mono_unlink_bblock): Avoid creation of new arrays.
12927
12928 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * mini.c (mono_unlink_bblock): Fix regression caused by previous
12931         change (#77992).
12932
12933 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * mini.c (optimize_branches): Remove the "optimizations" in
12936         the cbranch1/cbranch2 -> branch cases which were causing several
12937         problems in the past. Fixes #77986.
12938
12939 2006-03-31  Chris Toshok  <toshok@ximian.com>
12940
12941         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
12942         default optimizations :(
12943
12944 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12945
12946         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
12947         branch.
12948
12949 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
12950
12951         * local-propagation.c: Added comments to structs and removed
12952         "Mono" prefixes from local tree mover types.
12953
12954 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * Makefile.am (arch_sources): Define this for each architecture so 
12957         libmono_la_SOURCES is defined in one place.
12958
12959 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
12960
12961         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
12962         from handles/.
12963
12964 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
12965
12966         * driver.c: print the GC name supplied by configure.
12967
12968 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
12969
12970         * local-propagation.c: Added tree mover, and moved here all the
12971         local propagation code from mini.c
12972         * mini.c: Added support for treeprop, and moved all the local
12973         propagation code to local-propagation.c
12974         * mini.h: Added support for treeprop
12975         * driver.c: Added support for treeprop, enabled consprop, copyprop,
12976         treeprop, inline and deadce by default
12977         * Makefile.am: Added local-propagation.c
12978
12979 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
12980
12981         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
12982
12983 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
12984
12985         * debug-debugger.c: make it compile without the Boehm GC.
12986
12987 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12988
12989         * mini.c: fixed issue with mismatch when an icall is registered
12990         with multiple names but same address.
12991
12992 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12993
12994         * declsec.c, mini-exceptions.c: use write barrier to set reference
12995         fields of managed objects.
12996
12997 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
12998
12999         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
13000         (can_access_internals): Fix a warning.
13001
13002         * mini.c (print_method_from_ip): Rename this to 
13003         mono_print_method_from_ip so it gets exported.
13004
13005         * trace.c: Deal with strings inside StringBuilder's containing garbage
13006         and fix memory leaks. Fixes #77848.
13007
13008 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
13011         fixes #77787.
13012
13013 2006-03-16 Neale Ferguson <neale@sinenomine.net>
13014         
13015         * mini-s390.c: Remove OP_X86_TEST_NULL.
13016
13017 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13018
13019         * mini.c: use the correct GetHashCode() for the moving collector.
13020
13021 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
13022
13023         * liveness.c: Regalloc spill cost tuning.
13024
13025 2006-03-15 Neale Ferguson <neale@sinenomine.net>
13026         
13027         * mini-s390x.h: Correct S390_LONG macro.
13028
13029         * mini-s390x.c: Cleanup unused code.
13030
13031 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13032
13033         * jit-icalls.h: New file.
13034
13035         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
13036         icalls and include that instead of including jit-icalls.c.
13037
13038         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
13039         OP_X86 opcodes.
13040
13041 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
13042
13043         * mini.c: when checking for member accessibility, also check for
13044         friend assemblies and for explicit interface implementations.
13045
13046 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13047
13048         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
13049
13050         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
13051
13052         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13053         common cases are done first.    
13054
13055         * mini-ops.h: Only define platform specific opcodes on the given platform.
13056
13057         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
13058         branch.
13059         
13060 2006-03-14  Martin Baulig  <martin@ximian.com>
13061
13062         Revert Paolo's change from r57348:
13063
13064         * mini.h: don't use gboolean for bitfields.
13065         * mini.c: verifier changes for fields and methods accessibility.
13066
13067 2006-03-13  Neale Ferguson <neale@sinenomine.net>
13068
13069         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
13070
13071         * mini-s390x.c: Fix conv_r_un.
13072
13073         * cpu-s390, cpu-s390x.md: Fix lengths.
13074
13075 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
13076
13077         * mini.c: nested types have access to all the nesting
13078         levels, not just the enclosing types.
13079
13080 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13081
13082         * mini.c: added a few more verification checks.
13083
13084 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * liveness.c: Merge optimizations from the linear-il branch.
13087
13088 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * mini-ia64.c (emit_call): Add a comment.
13091
13092         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
13093
13094         * tramp-ia64.c: Fix some warnings.
13095
13096 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
13097
13098         * mini.h: don't use gboolean for bitfields.
13099         * mini.c: verifier changes for fields and methods accessibility.
13100
13101 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13102
13103         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
13104         lazy icall wrapper changes.
13105
13106         * dominators.c: Replace all the dominator algorithms with faster
13107         ones from the linear-il branch.
13108
13109         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
13110         the mempool.
13111
13112         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
13113         common cases are done first.
13114
13115         * mini-amd64.c: Fix some warnings.
13116
13117         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
13118         from the mempool.
13119
13120         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
13121         added code.
13122
13123         * mini.h: Add a missing prototype.
13124
13125 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13126
13127         * mini.c: Compile icall wrappers lazily.
13128
13129         * mini-codegen.c: Use printf instead of g_print since its much faster.
13130
13131         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
13132         function.
13133
13134         * mini.c (optimize_branches): Cache the negative result from 
13135         remove_block_if_useless ().
13136
13137         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
13138         Also fix some bblock linking issues.
13139
13140         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
13141         assembly files.
13142
13143         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
13144
13145         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
13146         accessed fields first, for better cache behavior.
13147         
13148 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13149
13150         * mini.c: speedup IList<T> array accesses.
13151
13152 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13153
13154         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
13155         inline_costs counter. Fixes #77190.
13156
13157 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
13158
13159         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
13160         trace messages. Fixes #77706.
13161
13162 2006-03-04  Martin Baulig  <martin@ximian.com>
13163
13164         * tramp-amd64.c, tramp-x86.c
13165         (mono_debugger_create_notification_function): Use
13166         mono_global_codeman_reserve() to allocate a buffer at runtime and
13167         return it.
13168
13169         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
13170
13171         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
13172         notification function at runtime and then call `initialize' in the
13173         `MONO_DEBUGGER__debugger_info' vtable.
13174
13175 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * iltests.il: Fix a visibility problem.
13178
13179 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13180
13181         * driver.c, mini.c: add hooks for the counters API.
13182
13183 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
13184
13185         * driver.c: show disabled options.
13186
13187 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13188
13189         * linear-scan.c: always use cost-driven selection.
13190
13191 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13192
13193         * jit-icalls.c (helper_compile_generic_method): Revert change from
13194         2006-02-24.
13195
13196 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
13197
13198         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
13199
13200 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13201
13202         * inssel.brg: style fixes, mostly to force the updated monoburg
13203         to run for people using svn.
13204
13205 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
13206
13207         * mini.c: match monoburg changes.
13208
13209 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13210
13211         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
13212         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
13213         declaration in the header file.
13214
13215 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13216
13217         * helpers.c: reduce relocations and mem usage.
13218
13219 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
13220
13221         * mini.h, mini-codegen.c: disable logging features if
13222         requested by configure.
13223
13224 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
13225
13226         * mini.c: tiny verifier changes.
13227
13228 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13229
13230         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
13231         cpu-pentium.md: stack alignment changes for osx/x86,
13232         partially from Geoff Norton <gnorton@customerdna.com>.
13233
13234 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13235
13236         * jit-icalls.c (helper_compile_generic_method): Update to changes
13237         in metadata/class.c.
13238
13239 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13240         
13241         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
13242         
13243         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
13244         interface calls with large offsets.
13245
13246 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13247
13248         * jit-icalls.c (helper_compile_generic_method): Document the
13249         special-case we depend on so that we can inflate the method twice
13250         with the same context with no bad side-effects.
13251
13252 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
13253
13254         * mini-x86.c, mini-amd64.c: fix for case when xen support
13255         is disabled.
13256
13257 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
13258
13259         * mini-x86.c, mini-amd64.c: generate code to access tls items
13260         in a faster way for Xen systems.
13261
13262 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13263
13264         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
13265         updates and compilation fixes for the OSX/x86 port, mostly from
13266         Geoff Norton <gnorton@customerdna.com>.
13267
13268 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13269
13270         * inssel.brg: faster interface call implementation
13271         to sync with the interface_offsets MonoVTable changes.
13272
13273 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
13274
13275         * mini.c: more verification checks.
13276
13277 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
13278
13279         * mini.c: added a few more verification checks.
13280
13281 2006-02-17      Neale Ferguson <neale@sinenomine.net>
13282
13283         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
13284         facility on the processor and use it if available.
13285
13286 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
13287
13288         * driver.c, aot.c, mini.c: throw exception if the IL code is
13289         invalid or unverifiable.
13290
13291 2006-02-17  Raja R Harinath  <rharinath@novell.com>
13292
13293         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
13294         m.StructField.
13295
13296 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
13299
13300 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13301
13302         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
13303         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
13304         handling of instantiated generic valuetypes.
13305
13306 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
13307
13308         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
13309         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
13310         instead.
13311
13312         * generics.2.cs: Revert the nullable reftypes tests.
13313
13314 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
13317         using __builtin_frame_address (1) as it doesn't work in the presence
13318         of optimizations. Hopefully fixes #77273.
13319
13320         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
13321         -> generics.cs change as it doesn't work with some automake versions.
13322
13323 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13324
13325         * mini.c: handle systems that sue a different way to
13326         retrieve the stack address of the current thread.
13327
13328 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
13329
13330         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
13331         it specially in the makefile.
13332
13333         * generics.2.cs: Add tests for nullable reference types.
13334
13335 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13336
13337         * mini.c: always handle the case when mono_jit_init()
13338         is called in a thread different from the main thread,
13339         confusing libgc (bug #77309).
13340
13341 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
13342
13343         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
13344
13345 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13346
13347         * mini.c: change optimize_branches () to use a single loop
13348         and introduce a new optimization to simplify some range checks.
13349
13350 2006-02-03  Martin Baulig  <martin@ximian.com>
13351
13352         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
13353         and merged with debugger_thread_manager_add_thread().
13354         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
13355         inform the debugger about the main thread.
13356
13357 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * basic.cs: Add test for div.un/rem.un constant folding.
13360
13361 2006-02-03  Neale Ferguson <neale@sinenomine.net>
13362
13363         * cpu-s390x.md: correct int_xor_imm length
13364
13365 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * generics.2.cs: New test for #77442.
13368
13369         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
13370         #77442.
13371
13372 2006-02-02  Martin Baulig  <martin@ximian.com>
13373
13374         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
13375         <mono/metadata/mono-debug-debugger.h>   
13376
13377         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
13378
13379 2006-02-02  Martin Baulig  <martin@ximian.com>
13380
13381         * debug-debugger.h: New header file for debug-debugger.c.
13382
13383         * debug-debugger.c: Big API cleanup; don't run the managed Main()
13384         function is a separate thread anymore; add support for attaching.
13385
13386 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
13387
13388         * tramp-x86.c: Fix a warning.
13389
13390 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
13391
13392         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
13393         on very large methods.
13394
13395         * aot.c (load_patch_info): Fix a warning.
13396
13397 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
13398
13399         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
13400         mini-ops.h: alu membase optimizations.
13401
13402 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
13403
13404         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
13405         to speedup StringBuilder.
13406
13407 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
13408
13409         * dominators.c (mono_compute_natural_loops): Fix detection of
13410         loop body start blocks.
13411
13412         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
13413
13414 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
13415
13416         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
13417         #75145.
13418
13419 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
13420
13421         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13422
13423 2006-01-25  Martin Baulig  <martin@ximian.com>
13424
13425         * debug-debugger.c: Moved the `MonoDebuggerManager' and
13426         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
13427         started to cleanup this file a little bit.
13428
13429 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
13430
13431         * mini.c: optimize a codepath frequently happening in generics code.
13432
13433 2006-01-23  Martin Baulig  <martin@ximian.com>
13434
13435         * Makefile.am: Only compile debug-debugger.c on supported platforms.
13436
13437         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
13438         functions directly.
13439
13440         * driver.c: debug-debugger.c is only available if
13441         `MONO_DEBUGGER_SUPPORTED' is defined.   
13442
13443 2006-01-23  Martin Baulig  <martin@ximian.com>
13444
13445         * debug-debugger.c: Only enable this on platforms where the Mono
13446         Debugger is working (x86 and x86_64).
13447
13448 2006-01-21  Martin Baulig  <martin@ximian.com>
13449
13450         The Mono Debugger is now using the normal `mono' instead of the
13451         `mono-debugger-mini-wrapper' when executing managed code.
13452
13453         * debug-debugger.c: New file; previously known as
13454         debugger/wrapper/wrapper.c.
13455
13456         * debug-mini.c (mono_init_debugger): Removed.
13457
13458         * driver.c (mono_main): Added new `--inside-mdb' command line
13459         argument which is used when running inside the debugger.
13460
13461 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
13462
13463         * liveness.c (mono_analyze_liveness): Remove some unused data
13464         structures.
13465
13466 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
13467
13468         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
13469
13470 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
13473         depends on implementation details of monobitset.
13474
13475         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
13476         Fixes #77271.
13477
13478 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * liveness.c: Update after monobitset changes.
13481
13482 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
13483
13484         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
13485
13486 2006-01-11 Neale Ferguson <neale@sinenomine.net>
13487
13488         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
13489
13490         * mini-s390x.c: Remove warning messages.
13491
13492 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
13493
13494         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
13495
13496 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
13497
13498         * generics.2.cs: Add ldelem/stelem_any test.
13499
13500 2006-01-10 Neale Ferguson <neale@sinenomine.net>
13501
13502         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
13503
13504 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
13505
13506         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
13507         
13508 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
13509
13510         * generics.2.cs: Reenable vtype tests.
13511
13512         * inssel-x86.brg: Remove an icorrect valuetype rule.
13513
13514 2006-01-06 Neale Ferguson <neale@sinenomine.net>
13515
13516         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
13517         initial support for OP_ABS.
13518
13519 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13520
13521         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
13522
13523 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13524
13525         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
13526         conversion and implement LADD/LSUB.
13527
13528         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
13529         architectures.
13530
13531 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13532
13533         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
13534
13535         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
13536         architectures.
13537
13538 2006-01-05 Neale Ferguson <neale@sinenomine.net>
13539
13540         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
13541         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
13542         (stack walk problem).
13543
13544 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * aot.c (mono_aot_load_method): Fix a warning.
13547
13548 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13549
13550         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
13551
13552 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13553
13554         * iltests.il: Add test for #77148.
13555
13556         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
13557         #77148.
13558
13559 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13560
13561         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
13562
13563 2006-01-03  Neale Ferguson <neale@sinenomine.net>
13564
13565         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
13566         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
13567
13568         * basic-long.cs: Add lconv-to-r4/r8 tests.
13569
13570 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
13573
13574         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
13575         here as on other archs.
13576
13577 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13578
13579         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
13580
13581 2005-12-29 Neale Ferguson <neale@sinenomine.net>
13582
13583         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
13584         
13585         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
13586
13587         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
13588         instrument_prolog; Add memory_barrier instruction.
13589
13590 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
13593
13594 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
13595
13596         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
13597
13598         * aliasing.c inssel.brg: Fix warnings.
13599
13600         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
13601         could skip initialization of some parts of memory.
13602
13603         * mini.c mini-ia64.c: Fix warnings.
13604
13605         * inssel-sparc.brg: Add an implementation of lneg which actually works.
13606
13607 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13608
13609         * aliasing.c (mono_build_aliasing_information): Add a workaround for
13610         a crash seen on sparc.
13611
13612         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
13613         
13614         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
13615
13616 2005-12-21 Neale Ferguson <neale@sinenomine.net>
13617
13618         * mini-ops.h: Add s390_backchain instruction
13619
13620         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
13621
13622         * cpu-s390.md: Add s390_backchain instruction
13623
13624         * mini-s390.c: Significant ABI changes
13625
13626         * mini-s390.h: Cater for zero length structures
13627
13628 2005-12-20 Neale Ferguson <neale@sinenomine.net>
13629
13630         * mini-s390.c: ABI fixes
13631
13632         * inssel-s390.brg: Remove debug statements
13633
13634         * cpu-s390.md: Fix length of ATOMIC_xx operations
13635
13636 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * basic-float.cs: Add float<->long conversion tests.
13639
13640 2005-12-16 Neale Ferguson <neale@sinenomine.net>
13641
13642         * mini-s390.c: Fix LOCALLOC processing.
13643
13644         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
13645
13646 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13647
13648         * iltests.il: Add tests for some opcodes not covered by the other
13649         tests.
13650
13651 2005-12-15 Neale Ferguson <neale@sinenomine.net>
13652
13653         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
13654         register loading for Tail processing; Correct trace output.
13655
13656         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
13657
13658         * cpu-s390.md: Correct size of jmp instruction. 
13659
13660 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13661
13662         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
13663
13664 2005-12-13 Neale Ferguson <neale@sinenomine.net>
13665
13666         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
13667           Bring s390 up to current level.
13668
13669 2005-12-12  Zltan Varga  <vargaz@gmail.com>
13670
13671         * generics.2.cs: Disable the newly added tests as they do not work yet.
13672         
13673         * generics.2.cs: Add valuetype tests.
13674
13675 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * basic-long.cs: Add i4->u8 test.
13678
13679         * objects.cs: Add tests for JIT intrinsic.
13680
13681         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
13682         optimizations lost by a mistake.
13683
13684 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13685
13686         * basic-long.cs: Remove a test moved to objects.cs.
13687
13688         * arrays.cs: Add more array tests.
13689
13690 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13691
13692         * arrays.cs: Add new tests for multi-dimensional arrays.
13693
13694 2005-12-06  Raja R Harinath  <rharinath@novell.com>
13695
13696         * Makefile.am (test_sources2): Add generics.2.cs.
13697         (EXTRA_DIST): Add test_sources2.
13698
13699 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13700
13701         Support for boxing and unboxing nullable types as well as the
13702         isinst operation on nullables, per the CLI ammendment.
13703
13704         * inssel.brg (CEE_ISINST): Special case for nullable
13705
13706         * mini.c (handle_unbox_nullable): new method
13707         (handle_box): Special case for nullable types
13708         (mono_method_to_ir): Call handle_unbox_nullable in correct
13709         places.
13710
13711         * generics.2.cs: New test suite
13712
13713         * Makefile.am: Support for regression tests with generics.
13714
13715 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
13716
13717         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
13718         allocated to registers. Fixes #76800.
13719
13720 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
13721
13722         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
13723
13724 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
13725
13726         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
13727         of platforms.
13728
13729 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
13730
13731         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
13732         objects.cs.
13733
13734         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
13735         
13736         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
13737 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
13738
13739         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
13740         single precision before storing to a single precision location.
13741
13742 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13743
13744         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
13745
13746 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
13747
13748         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
13749         correct files.
13750
13751         * basic.cs: Remove test_0_byte_compares test which was moved to
13752         objects.cs a long time ago.
13753
13754 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
13755
13756         * aliasing.c: Fixed aliasing issue on 64 bit archs.
13757
13758 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
13759
13760         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
13761         handlers are called.
13762
13763         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
13764         throwing code.
13765
13766          * mini-ia64.c: Add support for the throw->branch exception 
13767         optimization.   
13768
13769         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
13770
13771 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13772
13773         * mini.c: Enabled "fastpath" deadce :-)
13774         
13775 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
13776
13777         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
13778         alias analysis pass to support it.
13779         * mini.h: Likewise.
13780         * ssa.c: Likewise.
13781         * liveness.c: Likewise (liveness computation can use aliasing
13782         information to be more accurate).
13783         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
13784         moreover made so that "--compile-all" uses the given optimization
13785         flags and not the default ones.
13786         * aliasing.c: Alias analysis (new file).
13787         * aliasing.h: Likewise.
13788         * Makefile.am: added "aliasing.c" and "aliasing.h".
13789         
13790 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
13793         OP_L opcodes.
13794
13795 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
13796
13797         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
13798         fp >= end_of_stack exit condition, as it is not needed, and it might
13799         become true for fp eliminated frames.
13800
13801 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13802
13803         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
13804         coded offsets.
13805
13806 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
13807
13808         * mini-arm.c: fixed alignment of doubles/longs to match
13809         the C ABI (bug #76635).
13810
13811 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
13812
13813         * aot.c: fix compilation with --enable-minimal=aot.
13814
13815 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
13816
13817         * mini-arm.c: fixed compatibility with the new
13818         floating point emulator package for compares.
13819
13820 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
13821
13822         * mini.c : reverted sig->pinvoke changes (r51396-51397).
13823
13824 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
13825
13826         * mini-exceptions.c (print_stack_frame): Output to stderr.
13827         (mono_handle_native_sigsegv): Ditto.
13828
13829 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13830
13831         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
13832         OP_LCONV_TO_OVF_I implementation.
13833
13834         * mini-amd64.c: Add support for the throw->branch exception 
13835         optimization.
13836
13837         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
13838         when the catch clause catches a more general exception, i.e. Object.
13839
13840 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * cpu-ia64.md: Remove unused opcodes.
13843
13844         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
13845         specific defines for architectures defining USE_SIGACTION.
13846
13847         * mini-ia64.c: Fix some warnings.
13848
13849         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
13850         version seemed to skip a frame.
13851
13852 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13853
13854         * mini.c: Clean up the usage of sig->pinvoke flag. Now
13855         only calls which are made to native code use this flag.
13856
13857 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13858
13859         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
13860         varargs methods as well.
13861         
13862         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
13863         which have save_lmf set. Reorganize methods prologs a bit.
13864
13865         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
13866         debugger to the proper place.
13867
13868 2005-10-29  Martin Baulig  <martin@ximian.com>
13869
13870         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
13871         when running inside the debugger until the debugger has support
13872         for it.
13873
13874 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * mini.h: Fix a warning.
13877
13878 2005-10-24  Miguel de Icaza  <miguel@novell.com>
13879
13880         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
13881         we expose publicly, this returns the string.
13882
13883 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
13886         with fp elimination.
13887
13888 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13889
13890         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
13891         native stacktrace using the glibc 'backtrace' function if available.
13892
13893 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
13894
13895         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
13896
13897         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
13898         handle SIGSEGVs received while in native code.
13899
13900         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
13901         code, call mono_handle_native_sigsegv which will abort the runtime
13902         after printing some diagnostics, instead of converting it into a
13903         confusing NullReferenceException.
13904
13905 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13906
13907         * cpu-pentium.md: Remove unused opcodes.
13908
13909 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
13910
13911         * mini-amd64.h (MonoLMF): Add rsp field.
13912
13913         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
13914         the lmf too.
13915
13916 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
13917
13918         * mini-codegen.c (get_register_spilling): Fix some warnings.
13919
13920 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
13921
13922         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
13923         elimination during exception handling. Enable fp elimination by
13924         default.
13925
13926         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
13927         elimination.
13928
13929 2005-10-16  Martin Baulig  <martin@ximian.com>
13930
13931         * mini-exceptions.c
13932         (mono_debugger_run_finally): New public method for the debugger.
13933
13934 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * debug-mini.c (mono_debug_init_method): Fix warning.
13937
13938         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
13939         the 'exname' parameter const to fix some warnings.
13940
13941 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
13942
13943         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
13944         introduced by the previous patch.
13945
13946 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * basic-float.cs: Add test for precision of float arithmetic.
13949
13950         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
13951         when loading/storing single values from/to memory.
13952
13953         * mini.c (mono_jit_compile_method_with_opt): Create the function
13954         pointers in the correct domain.
13955
13956 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13957
13958         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
13959         introduced by previous patch.
13960         
13961         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
13962         when out_filter_idx is NULL.
13963
13964         * mini-exceptions.c: Don't run filter clauses twice during exception
13965         handling. Fixes #75755.
13966
13967 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * aot.c: Add support for ldflda wrappers.
13970
13971         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
13972         #75902.
13973
13974 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
13975
13976         * mini.c, mini.h: do not consider exception handlers blocks when
13977         setting up interface variables.
13978
13979 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
13980
13981         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
13982
13983 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
13984
13985         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
13986         causes a regression.
13987
13988         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
13989
13990 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
13991
13992         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
13993         of the OP_P definitions.
13994
13995         * TODO: Add a proposal for dealing with the CEE/OP mess.
13996
13997         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
13998         optimizations from the x86 port.
13999
14000         * cpu-amd64.md: Ditto.
14001
14002         * basic.cs basic-long.cs: Add tests.
14003
14004 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
14005
14006         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
14007         Patrik Torstensson's implementation of my exception-handling
14008         optimization idea, when the exception object is not used
14009         (bug #62150).
14010
14011 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
14012
14013         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
14014         of the mul_imm optimizations from the old jit.
14015
14016 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
14017
14018         * mini.c, liveness.c: patch by Patrik Torstensson and
14019         Zoltan Varga to improve performance in methods with
14020         exception clauses.
14021
14022 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * driver.c: Remove 'Globalization' entry from --version.
14025
14026 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
14029         there is a profiler interested in JIT events.
14030
14031         * aot.c: Load profile files produced by the AOT profiling module, and
14032         reorder methods based on the profiling info. Add a 'method_order' table
14033         to the AOT file to make mono_aot_find_jit_info work with the reordered
14034         methods.
14035
14036         * mini.h: Bump AOT file version info.
14037
14038 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
14039
14040         * mini-arm.h: work around what looks like a gcc bug when optimizations
14041         are enabled.
14042
14043 2005-09-28  Raja R Harinath  <rharinath@novell.com>
14044
14045         * Makefile.am (AM_CFLAGS): Don't use += to append inside
14046         conditionals.  Use ...
14047         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
14048
14049 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
14050
14051         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
14052         to determine the amount of memory to copy when passing valuetypes.
14053
14054         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
14055         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
14056
14057 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
14058
14059         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
14060         information about aot.
14061
14062 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
14063
14064         * *.c: Replace the use of {Enter,Leave}CriticalSection with
14065         macros. This will allow a deadlock debugger to easily be plugged
14066         in.
14067
14068 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
14069
14070         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
14071
14072 2005-09-27  Raja R Harinath  <rharinath@novell.com>
14073
14074         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
14075         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
14076         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
14077         ($(arch_built)) [CROSS_COMPILING]: Error out.
14078
14079 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
14080
14081         * aot.c: Add support for the no_special_static flag for classes.
14082
14083 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14084
14085         * Reapply reverted patches.
14086
14087         * *: Revert r50174 as well.
14088
14089         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
14090
14091 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
14092
14093         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
14094
14095 2005-09-23  Miguel de Icaza  <miguel@novell.com>
14096
14097         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
14098         part of the SIG_HANDLER_SIGNATURE.  
14099
14100 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
14103         statistics.
14104
14105         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
14106         introduced by previous patch.
14107
14108 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
14111         saved registers too.
14112
14113         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
14114         upon the information returned by get_call_info ().
14115         
14116         * mini-x86.c (add_float): Fix stack size calculation.
14117         (mono_arch_call_opcode): Rewrite this so it works based up the
14118         information returned by get_call_info ().
14119         (mono_arch_get_this_vret_args): Ditto.
14120
14121 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
14122
14123         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
14124         in cinfo to determine the registers which need to be used.
14125
14126 2005-09-20  Miguel de Icaza  <miguel@novell.com>
14127
14128         * driver.c (mono_main): Add --server and --desktop flags. 
14129
14130 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
14131
14132         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
14133         registers as global registers.
14134
14135         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
14136         longer needed with the new register allocator.
14137
14138         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
14139
14140         * cpu-ia64.md: Remove unused opcodes.
14141         
14142         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
14143         
14144 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
14145
14146         * cpu-amd64.md: Remove unused opcodes.
14147
14148         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
14149         needed with the new register allocator.
14150
14151         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
14152         reg-reg moves.
14153
14154 2005-09-16  Raja R Harinath  <rharinath@novell.com>
14155
14156         * Makefile.am (check-local): Don't invoke semdel-wrapper.
14157
14158 2005-09-16  Martin Baulig  <martin@ximian.com>
14159
14160         * exceptions-amd64.c
14161         (throw_exception): Don't call mono_debugger_throw_exception() if
14162         we're a rethrow - see the FIXME in the code.
14163
14164 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
14165
14166         * mini.c (mono_init_exceptions): This only works on some architectures.
14167         
14168 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14169
14170         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
14171         on ia64.
14172
14173         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
14174
14175         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
14176         now in mini-exceptions.c.
14177
14178 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
14181         now in mini-exceptions.c.
14182
14183 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * exceptions-x86.c: Applied patch from Patrik Torstensson 
14186         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
14187
14188         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
14189         code into mini-exceptions.c. Add some assertions to it.
14190
14191 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
14192
14193         * aot.c (emit_section_change): Applied patch from "The Software Team" 
14194         (<software@solmersa.com>). Fix as errors on windows.
14195
14196 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14197
14198         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
14199         method info into the LMF.
14200
14201 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14202         
14203         * mini-ia64.c: Add proper unwind info for method epilogs.
14204
14205         * exceptions-ia64.c: Add some code to help debugging.
14206         
14207         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
14208
14209         * mini-exceptions.c: Fix warning.
14210
14211 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
14212
14213         * mini.c: Really fix build.
14214
14215         * mini-x86.c mini-amd64.c: Fix build.
14216
14217 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
14218
14219         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
14220
14221         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
14222         some Interlocked methods as intrinsics.
14223
14224         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
14225         for Thread methods as well.
14226
14227         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
14228
14229         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
14230
14231         * mini-ia64.c mini-x86.c mini-amd64.c 
14232         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
14233         OP_MEMORY_BARRIER.
14234         
14235         * mini.c (mono_init_exceptions): Fix build breakage.
14236
14237 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
14238
14239         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
14240         of instructions. Use the new ia64_unw_op macros for emitting unwind
14241         info.
14242
14243         * mini.c (mono_init_exceptions): Initialize exception handling
14244         related trampolines at startup.
14245
14246 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
14247
14248         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
14249
14250 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
14251
14252         * mini.c: Handle type loading errors gracefully during compilation and
14253         throw the appropriate exception.
14254
14255 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
14256
14257         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
14258         for the mono binary.
14259
14260 2005-09-09  Martin Baulig  <martin@ximian.com>
14261
14262         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
14263         the release.
14264
14265 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14266
14267         * mini-arm.h: use emulation for conv.r.un for the release.
14268
14269 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
14270
14271         * mini-arm.c, objects.cs: more fixes and tests for them.
14272
14273 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14274
14275         * mini-arm.c: align structures to at least 4 bytes to be able
14276         to keep our current optimized memcpy.
14277
14278 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
14279
14280         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
14281
14282 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14283
14284         * mini.c: ignore SIGPIPE.
14285
14286 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
14289
14290         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
14291
14292 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
14293
14294         * mini.h: Add prototype for mono_allocate_stack_slots_full.
14295
14296 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
14297
14298         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
14299         exception handling support.
14300         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
14301         patch by Brian Koropoff <briank@marakicorp.com>).
14302
14303 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
14304
14305         * mini.c: revert another 'optimization' which breaks when
14306         items on the eval stack need to be saved at a basic block end
14307         (bug #75940).
14308
14309 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14310
14311         * jit-icalls.c: for arrays, ensure we always provide
14312         lower bounds.
14313
14314 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
14315
14316         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
14317         
14318         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
14319
14320 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
14323         arguments in their original register.
14324
14325 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
14326
14327         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
14328         memset/memcpy.
14329
14330         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
14331         when ssapre is enabled.
14332
14333         * inssel-long.brg: Fix bug in previous patch.
14334
14335         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
14336         multiplication by a constant.
14337
14338 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
14339
14340         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
14341         icc.
14342
14343         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
14344         saving registers.
14345
14346 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
14347
14348         * inssel-arm.brg: apply changes tested by Brian Koropoff
14349         <briank@marakicorp.com>.
14350
14351 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14352
14353         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
14354         
14355 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
14358         to the same register if dreg is just a base register.
14359         (print_ins): Improve printing of membase opcodes.
14360
14361         * inssel-x86.brg: Add optimized ldind(reg) rules.
14362
14363         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
14364
14365 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
14366
14367         * mini.c: when running under valgrind, set the stack bottom for
14368         the GC at the actual approximate stack for the app (fixes running
14369         mono with valgrind).
14370
14371 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
14372
14373         * mini.c: do no break at the first valuetype to init found
14374         (fixes bug #75791).
14375
14376 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
14377
14378         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
14379
14380 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
14381
14382         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
14383
14384 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
14387
14388 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14389
14390         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
14391
14392         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
14393         code.
14394
14395         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
14396         code.
14397
14398         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
14399         methods.
14400
14401 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
14402
14403         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
14404
14405 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14406
14407         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
14408         in the tail recursion optimization.
14409
14410         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
14411         debug info into the assembly file.
14412
14413         * iltests.il: Add test for filter regions.
14414
14415         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
14416         initial stack of filter regions. Fixes #75755.
14417
14418 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
14419
14420         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
14421         stack requirements.
14422
14423 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14424
14425         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
14426         the check for an already compiled method on non-ia64 platforms.
14427         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
14428         proper domain.
14429
14430         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
14431
14432         * inssel-x86.brg: Add some optimized call rules.
14433
14434 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14435
14436         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
14437         method here.
14438
14439         * mini.h mini-trampolines.c: Pass the trampoline argument to 
14440         mono_arch_patch_delegate_trampoline.
14441
14442         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
14443
14444         * mini-trampolines.c: Fix build.
14445
14446         * mini-amd64.h: Add delegate trampolines.
14447
14448         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
14449
14450         * inssel-amd64.brg: Add optimized call rules.
14451         
14452         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
14453
14454         * inssel-ia64.brg: Add optimized ldind(reg) rules.
14455
14456 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14457
14458         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
14459         change.
14460
14461         * mini-ia64.c: Remove LMF fixmes.
14462
14463         * mini-ia64.h: Remove most fields from LMF.
14464
14465         * inssel-ia64.brg (stmt): Fix unaligned access errors.
14466
14467         * mini-trampolines.c: Add support for IA64 function descriptors.
14468
14469         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
14470         for IA64 function descriptors.
14471
14472 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
14473
14474         * tramp-arm.c: patch the vtable for virtual calls. Added
14475         support code to register/unregister the LMF.
14476         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
14477         more LMF work.
14478
14479 2005-08-19  Dick Porter  <dick@ximian.com>
14480
14481         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
14482         bit value if needed.
14483
14484 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14485
14486         * mini.c (mini_get_method): Move handling of wrapper data here.
14487
14488         * mini.c (mono_method_to_ir): Add support for dynamic methods.
14489
14490         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
14491         virtual.
14492
14493         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
14494         bblock->code does not remain empty.
14495
14496 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * arrays.cs: Add regression test for #75832.
14499
14500         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
14501         rules. Fixes #75832.
14502
14503         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
14504         instruction scheduling.
14505
14506 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
14507
14508         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
14509
14510 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14511
14512         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
14513
14514         * mini-codegen.c: Fix VC build.
14515
14516         * cpu-pentium.md: Increase length of atomic_exhange_i4.
14517
14518 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14519
14520         * mini.h: fix signature for mono_register_opcode_emulation.
14521
14522 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
14523
14524         * mini.c: Get rid of most of the helper_sig_... constants using
14525         mono_create_icall_signature ().
14526
14527 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14528
14529         * jit-icalls.c (helper_ldstr): New helper function.
14530
14531         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
14532
14533         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
14534         throw, load the string using a helper call instead of creating a string object.
14535
14536         * aot.c: Update after LDSTR changes.
14537
14538         * mini.h: Bump AOT file version.
14539         
14540         * aot.c: Save class size info into the AOT file. Print more statistics during
14541         compilation.
14542
14543         * mini.h: Bump AOT file version.
14544
14545         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14546         ordering of disasm cases. Fixes #74957.
14547
14548 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
14549
14550         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
14551         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
14552         the generic code needed for the ARM port.
14553
14554 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
14555
14556         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
14557         inssel-arm.brg: more ARM features and fixes.
14558
14559 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
14560
14561         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
14562         ARM port work in progress.
14563
14564 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14565
14566         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
14567
14568         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
14569
14570         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
14571
14572         * inssel.brg (mini_emit_memset): Add support for unaligned access.
14573
14574         * *-ia64.*: Ongoing IA64 work.
14575         
14576         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
14577
14578 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14579
14580         * TODO: Remove out-of-data todo stuff.
14581
14582         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
14583         dead code.
14584
14585         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
14586
14587         * mini.h: Bump corlib version.
14588
14589 2005-07-27  Martin Baulig  <martin@ximian.com>
14590
14591         * mini-codegen.c
14592         (create_copy_ins): Added `const unsigned char *ip' argument; set
14593         `copy->cil_code' from it.
14594
14595 2005-07-27  Martin Baulig  <martin@ximian.com>
14596
14597         * mini-exceptions.c (mono_handle_exception): Don't call
14598         mono_debugger_handle_exception() for filters.
14599
14600 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
14601
14602         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
14603         as well.
14604
14605 2005-07-26  Martin Baulig  <martin@ximian.com>
14606
14607         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
14608
14609         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
14610         helper_compile_generic_method() if the method is actually virtual
14611         and non-final.
14612
14613 2005-07-26  Martin Baulig  <martin@ximian.com>
14614
14615         * mini.c
14616         (trampoline_code): Renamed to `mono_trampoline_code' and made it
14617         public; this is now accessed directly by the debugger.
14618         (mono_generic_trampoline_code): Removed.
14619
14620         * debug-mini.c
14621         (mono_debug_init_method): Also add interncalls and wrappers.
14622
14623 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
14624
14625         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
14626
14627 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14628
14629         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
14630
14631 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14632
14633         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
14634
14635 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14636
14637         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
14638         getting TLS offsets on AMD64 too.
14639
14640 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
14641
14642         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
14643
14644 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
14645
14646         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
14647         inssel-arm.brg, mini-arm.h: ARM port work in progress.
14648
14649 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14650
14651         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
14652
14653         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
14654         to mini.c.
14655
14656         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
14657         mono_sparc_is_virtual_call ().
14658         
14659         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
14660
14661         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
14662         trampoline parameters.
14663
14664         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
14665         
14666         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
14667         to mono_arch_get_vcall_slot_addr.
14668
14669         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
14670         trampoline code.
14671
14672         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
14673
14674 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14675
14676         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
14677
14678 2005-07-19  Martin Baulig  <martin@ximian.com>
14679
14680         * exceptions-amd64.c (throw_exception): Call
14681         mono_debugger_throw_exception() here like we're doing it on i386.
14682
14683 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
14684
14685         * mini-ia64.c: Add optimized TLS access support.
14686
14687 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
14688
14689         * mini-exceptions.c: Ongoing IA64 work.
14690
14691         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
14692
14693         * mini.c: Use the default optimization set when embedding. Fixes
14694         #75194.
14695
14696 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
14697
14698         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
14699         of trampolines to a separate file.
14700
14701         * mini-trampolines.c: New file.
14702
14703         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
14704         separate file.
14705         
14706         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
14707         amd64/ia64 code.
14708
14709         * mini-codegen.c: Fix cygwin build.
14710
14711 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
14712
14713         * mini.c: Add some minor changes needed by the IA64 port.
14714
14715         * *-ia64.*: Ongoing IA64 work.
14716
14717 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
14718
14719         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
14720         trampolines into arch-independent and arch-dependent parts.
14721
14722         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
14723
14724 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
14725
14726         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
14727
14728         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
14729         the xp-regalloc-branch for amd64.
14730
14731         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
14732         xp-regalloc-branch for x86.
14733
14734 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14735
14736         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
14737
14738 2005-07-06  Martin Baulig  <martin@ximian.com>
14739
14740         * mini.c
14741         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
14742         (mono_jit_runtime_invoke): Likewise.
14743
14744 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14745
14746         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
14747         on x86 too.
14748         
14749         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
14750         without loading their metadata. Reorganize the file format so exception handling+
14751         debug info is kept separate from normal method info. Create MonoJitInfo 
14752         structures for methods lazily.
14753
14754         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
14755         loading metadata.
14756         (x86_class_init_trampoline): Patch AOT class init trampolines too.
14757
14758         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
14759
14760         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
14761         in AOT code.
14762
14763         * mini.h: Bump AOT file version.
14764
14765 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
14766
14767         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14768
14769 2005-07-01  Raja R Harinath  <rharinath@novell.com>
14770
14771         * Makefile.am (check-local): Call semdel-wrapper.
14772
14773 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
14774
14775         * mini-x86.c: Revert the last change as it seems to break the build..
14776
14777 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14778
14779         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
14780         
14781         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
14782
14783 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
14784
14785         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
14786         outside of the macro, so strange stuff doesn't happen with gcc4
14787         (NEW_AOTCONST_TOKEN): Likewise.
14788
14789 2005-06-28  Martin Baulig  <martin@ximian.com>
14790
14791         * mini.c (mini_class_is_system_array): New static method; use this
14792         instead of `klass->parent == mono_defaults.array_class' everywhere
14793         since this also works for the new generic array class.
14794
14795 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14796
14797         * inssel.brg: Remove warnings.
14798
14799 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
14800
14801         * mini-ia64.c: Ongoing IA64 work.
14802
14803         * basic-float.cs: Add float->i1 conversion test.
14804
14805         * iltests.il: Add conv.u4 test.
14806
14807 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
14808
14809         * inssel-long.brg: Fix bug caused by last change.
14810
14811 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
14812
14813         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
14814         BSDs.  Allows the x86 JIT to work on OSX86
14815
14816 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
14817
14818         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
14819         u4->i8 conversion.
14820
14821         * mini-ia64.c: Ongoing IA64 work.
14822
14823 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14824
14825         * mini-ia64.c: Ongoing IA64 work.
14826
14827         * driver.c: Clean up jit_code_hash as well when using --regression.
14828
14829         * inssel-long.brg: Fix long->i4/u4 conversion rules.
14830
14831         * basic-long.cs: Add tests for long->u4 conversion.
14832
14833 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
14834
14835         * mini.c: Take mono_get_domainvar out of macros. This makes sure
14836         that we do not depend on undefined C behavior: the order stuff
14837         gets evaluated within an expression. Fixes mono when compiled on
14838         GCC 4.
14839
14840 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
14841
14842         * *-ia64.*: Ongoing IA64 work.
14843
14844         * aot.c: Lower memory usage while loading AOT methods.
14845
14846         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
14847
14848         * mini.h: Bump AOT file format version.
14849
14850 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14851
14852         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
14853
14854 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
14855
14856         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
14857         not on callee assembly). Fixed some comments.
14858
14859 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
14860
14861         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
14862         it gets proper disassembly.
14863         (emit_method_info): Remove some dead code.
14864
14865         * mini.c (mini_method_compile): Allways allocate the GOT var in
14866         mono_method_to_ir for emulating opcodes.
14867
14868 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
14869
14870         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
14871         before freeing the code memory. Fixes #74990.
14872
14873         * objects.cs: Add regression test for #74992.
14874
14875         * liveness.c: Extend live ranges of arguments to the beginning of the
14876         method. Fixes #74992.
14877
14878         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
14879         so it points into the faulting instruction.
14880
14881 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
14882
14883         * jit-icalls.c (mono_imul_ovf): Add exception handling.
14884
14885         * *-ia64.*: Ongoing IA64 work.
14886
14887         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
14888
14889 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
14890
14891         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
14892
14893         * *-ia64.*: Ongoing IA64 work.
14894
14895 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
14896
14897         * basic-long.cs: Add tests for add/sub.ovf.
14898
14899         * basic.cs: Add tests for sub.ovf.
14900
14901         * *-ia64.*: Ongoing IA64 work.
14902
14903 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
14904
14905         * *-ia64.*: Ongoing IA64 work.
14906
14907         * basic.cs: Add conv.ovf.i4.un test.
14908
14909 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
14910
14911         * mini.c: (remove_block_if_useless) Fixed bug 75061.
14912         
14913 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14914
14915         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
14916
14917 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14918
14919         * *-ia64.*: Ongoing IA64 work.
14920
14921 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14922
14923         * trace.[ch]:
14924         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
14925
14926 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
14927
14928         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
14929
14930 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
14931
14932         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
14933
14934         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
14935         of a call is callable by a near call.
14936
14937 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
14938
14939         * mini-ia64.c: Ongoing IA64 work.
14940
14941 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
14942
14943         * genmdesc.c: Make the generated array non-static.
14944
14945         * inssel-long.brg: Fix LSHR_IMM rule.
14946
14947         * *-ia64.*: Ongoing IA64 work.
14948
14949         * *-ia64.*: Ongoing IA64 work.
14950
14951 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14952
14953         * *-ia64.*: Ongoing IA64 work.
14954
14955         * *-ia64.*: Ongoing IA64 work.
14956         
14957         * mini-ia64.c: Ongoing IA64 work.
14958
14959         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
14960
14961 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * objects.cs basic-calls.cs: Move some tests to objects.cs.
14964         
14965         * objects.cs basic-long.cs: Move some tests to objects.cs.
14966
14967 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
14968
14969         * *-ia64.*: Ongoing IA64 work.
14970
14971         * iltests.il: Add a new test.
14972
14973         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
14974         newobj. Fixes #75042.
14975
14976 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
14977
14978         * *-ia64.*: Ongoing IA64 work.
14979         
14980         * *-ia64.*: Ongoing IA64 work.
14981         
14982         * *-ia64.*: Ongoing IA64 work.
14983
14984         * basic.cs objects.cs: Move tests accessing static variables as well.
14985
14986         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
14987
14988 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
14989
14990         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
14991
14992         * driver.c: Always print failed tests.
14993
14994         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
14995         frame pointer.
14996
14997         * *ia64*: Ongoing IA64 work.
14998
14999 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15000
15001         * basic.cs: Add tests for add.ovf. Fix warnings.
15002
15003 2005-05-18  Miguel de Icaza  <miguel@novell.com>
15004
15005         * driver.c (mono_main): Avoid crash if no argument is passed to
15006         --break;  Do not use g_error, but f_printf.   And fix all other
15007         ocurrences of the same crash.
15008
15009 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
15010
15011         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
15012         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
15013         Fixes #74742.
15014
15015 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
15016
15017         * *-ia64.*: Add beginnings of IA64 backend.
15018
15019         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
15020
15021 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
15022
15023         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
15024         Fixes #74925.
15025
15026         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
15027
15028         * mini-amd64.c: Fix a warning.
15029
15030 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
15031
15032         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
15033         in float_neg. Fixes #74897.
15034
15035         * mini-amd64.c (emit_call): Fix another near call bug.
15036
15037 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
15038
15039         * declsec.c: Keep the appdomain information in the structure. Added a 
15040         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
15041         value gets overwritten).
15042         * declsec.h: Set the default MonoArray for the the stack to 6. Added
15043         an MonoAppDomain member to MonoSecurityFrame.
15044         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
15045         used in the stack walk. Now use a MonoArray which grow (double) when
15046         it gets full.
15047
15048 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15049
15050         * mini.c: Re-enabled runtime cleanup, since running threads should
15051         now properly stop when exiting.
15052
15053 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15054
15055         * mini-codegen.c: New file contaning the arch-independent local
15056         register allocator. Not used by any architectures yet.
15057
15058         * mini.h linear-scan.c: Merge some changes from the 
15059         mini-xp-local-regalloc branch.
15060
15061 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15062
15063         * mini-amd64.c (emit_call): Fix calls to native functions when the
15064         runtime is compiled as a shared library. Fixes #74756.
15065
15066         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
15067         on a literal field. Fixes #74751.
15068
15069 2005-04-25  Raja R Harinath  <rharinath@novell.com>
15070
15071         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
15072
15073 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15074
15075         * objects.cs: Add missing null casting test.
15076
15077 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15078
15079         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
15080         in wrapper methods. Also rename 'address' variable to 'offset'.
15081
15082 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15083
15084         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
15085         warnings.
15086         
15087         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
15088
15089         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
15090         work on windows.
15091
15092 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15093
15094         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
15095
15096 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15097
15098         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
15099         just the last bytes.
15100
15101 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
15102
15103         * aot.c (mono_compile_assembly): Fix warning.
15104
15105         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
15106         by the _MSC_VER stuff.
15107
15108 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15109
15110         * inssel-long.brg: Fix #74588.
15111
15112         * cpu-amd64.md: Fix #74591.
15113
15114         * iltests.il: Add new regression tests.
15115
15116 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15117
15118         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
15119         valuetype.
15120
15121 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
15122
15123         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
15124
15125         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
15126         from Bill Middleton <flashdict@gmail.com>.
15127
15128 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15129
15130         * arrays.cs: Add new regression test. Fix warnings.
15131
15132 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
15133
15134         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
15135         and leakage in CKFINITE.
15136
15137         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
15138         this to a null op since it is called on amd64 too.
15139
15140         * exceptions-amd64.c (get_throw_trampoline): Align stack.
15141
15142         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
15143         body since this is not used on amd64.
15144         
15145         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
15146
15147         * mini-amd64.c: Remove obsolete fixmes.
15148
15149         * mini.c (print_method_from_ip): Fix debugging support.
15150
15151 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15152
15153         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
15154         so that expressions that don't give much gain are not reduced.
15155         * ssapre.h: Likewise.
15156
15157 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15158
15159         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
15160
15161         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
15162
15163         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
15164
15165 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
15166
15167         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
15168
15169         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
15170
15171 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
15172
15173         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
15174         stack touching.
15175
15176         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
15177
15178         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
15179
15180         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
15181
15182         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
15183         MONO_ARCH_USE_SIGACTION. Fixes #74252.
15184
15185         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
15186
15187         * mini-x86.c: Fix up stack overflow handling.   
15188
15189         * exceptions.cs: Add new regression test.
15190
15191 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
15192
15193         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
15194         mono_jit_thread_attach.
15195
15196         * mini.c (mono_method_to_ir): Verify called method is not abstract.
15197
15198 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15199
15200         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
15201         avoid calling constructors using callvirt.
15202
15203         * inssel.brg: Fix #74073.
15204
15205 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15206
15207         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
15208         compilation with non-GCC compilers.
15209         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
15210         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
15211
15212 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15213
15214         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
15215         klass->interface_offsets (will likely fix bug#74073).
15216
15217 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15218
15219         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
15220
15221 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
15222
15223         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
15224         to amd64_div_reg_size ().
15225         
15226         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
15227
15228 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15229
15230         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
15231
15232 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15233
15234         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
15235
15236 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15237
15238         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
15239         
15240         * mini.c (mono_precompile_assembly): Load and precompile referenced
15241         assemblies as well. Fixes #74015.
15242
15243 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15244
15245         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
15246
15247 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15248
15249         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
15250         a lot of checks and (anyway) permissions cannot work until corlib is 
15251         loaded.
15252
15253 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
15254
15255         * mini-ppc.c: fixed ABI issue on sysv/ppc.
15256
15257 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15258
15259         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
15260         calls (fixes bug#72824).
15261
15262 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15263
15264         * mini.c: fix tail recursion elimination (see test in bug#73936).
15265
15266 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
15267
15268         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
15269         some fp functions in sse2 mode.
15270
15271 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
15272
15273         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
15274
15275 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
15276
15277         * mini.h mini.c: Add mono_get_jit_tls_key ().
15278
15279         * mini-x86.c: Enable fast TLS support on windows.
15280
15281 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15282
15283         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
15284         * mini.c: Check for p/invoke method when generating code. If a
15285         p/invoke method, or it's class, isn't decorated with [Suppress
15286         UnmanagedCodeSecurity] then generate code to call System.Security.
15287         UnmanagedDemand (only if the security manager is active).
15288
15289 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15290
15291         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
15292         last change as it seems to cause strange crashes.
15293         
15294 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15295
15296         * *.c: handle unsafe function pointers where needed.
15297
15298 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15299
15300         * mini.c (mono_jit_free_method): Remove the fixme too.
15301
15302 2005-03-15  Miguel de Icaza  <miguel@novell.com>
15303
15304         * mini.c: As discussed, make the code actually free the delegate
15305         thunk now, to enable the debugging of delegate problems, use
15306         MONO_DEBUG=1 when running Mono. 
15307
15308         This takes also care of parts of the leaks as seen by Joe.
15309
15310 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
15311
15312         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
15313         thread_tls_offset calculation.
15314
15315 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
15316
15317         * declsec.c: Reworked linkdemand checks for icall. The previous code
15318         was using the declaration code (untrusted) and didn't work as expected
15319         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
15320         specific case.
15321
15322 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15323
15324         * iltests.il: Add new localloc test.
15325
15326         * mini-amd64.c: Handle large stack allocations the same way as on
15327         windows if stack overflow handling is working.
15328         
15329         * mini-amd64.c: Allocate the signal stack using mmap.
15330
15331         * mini.c (sigsegv_signal_handler): Fix reading of context.
15332
15333         * mini-exceptions.c: Fix up stack overflow handling.
15334
15335         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
15336
15337         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
15338
15339         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
15340
15341         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
15342
15343         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
15344         tramp_init functions as they are no longer needed.
15345
15346 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
15347
15348         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
15349         
15350         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
15351
15352         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
15353         
15354         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
15355         support that now.
15356
15357         * mini-ops.h: Add OP_LMUL_IMM.
15358
15359         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
15360         long mul/div opcodes as intrinsic.
15361
15362         * mini-amd64.c (emit_call): Handle the case when the callee might be
15363         an AOT method.
15364
15365 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
15368         extra safe.
15369         
15370         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
15371
15372         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
15373
15374 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
15375
15376         * mini.c (mono_codegen): Don't leak here, to help people running
15377         monogrind.
15378
15379 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15380
15381         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
15382         conversions in sse2 mode.
15383
15384         * basic-float.cs: Add regression test.
15385         
15386         * mini-amd64.c: Reenable sse2.
15387
15388 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15389
15390         * mini-amd64.c: Disable sse2 until some regressions are fixed.
15391
15392 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
15393
15394         * driver.c: Copyright text should include 2005.
15395         
15396 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
15397
15398         * cpu-amd64.md (load_membase): Fix more max lengths.
15399
15400 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
15401
15402         * cpu-amd64.md (load_membase): Fix max length.
15403
15404         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
15405
15406         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
15407
15408         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
15409         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
15410
15411         * basic-float.cs: Add rounding regression test.
15412
15413         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
15414
15415 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
15416
15417         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
15418         structures in registers for pinvoke wrappers.
15419
15420 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15421
15422         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
15423
15424 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15425
15426         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
15427         wrapper to mono_jit_thread_attach.
15428
15429         * mini.c (mini_jit_thread_attach): New jit icall.
15430
15431         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
15432         native->managed wrappers.
15433
15434         * exceptions.cs: Add new regression test.
15435
15436         * mini.c (optimize_branches): Check regions in the cbranch to throw
15437         block case as well. Fixes #73242.
15438
15439 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15440
15441         * mini.c: thread safety fixes.
15442
15443 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
15444
15445         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
15446         patching stuff, since delegates use jump trampolines so there is
15447         no caller.
15448
15449         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
15450         jump trampolines.
15451         
15452         * tramp-amd64.c: Fix build.
15453
15454         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
15455         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
15456
15457         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
15458         Rename this to mono_arch....
15459         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
15460
15461         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
15462
15463         * mini-amd64.c (emit_call): If both the caller and the callee is
15464         guaranteed to have 32 bit addresses, emit a normal call.
15465
15466         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
15467
15468         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
15469         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
15470         method_ptr inside delegates.
15471
15472 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
15473
15474         * mini.c (mono_jit_free_method): Free the method info even if the native code is
15475         invalidated. Fixes #73001.
15476
15477         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
15478
15479         * mini-x86.c: Only use stdcall for pinvokes on windows.
15480
15481 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15482
15483         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
15484         * mini-x86.c: remove unreliable __thread var offset detection,
15485         use the correct accessors and enable by default.
15486
15487 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15488
15489         * mini.c (mono_jit_free_method): Fix memory leak.
15490
15491 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
15492
15493         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
15494
15495 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
15496
15497         * cpu-amd64.md: Fix lengths of atomic opcodes.
15498
15499 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15500
15501         * driver.c: try to not imply using ICU is any good.
15502
15503 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15504
15505         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
15506         functions as inline ops.
15507
15508         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
15509         some Interlocked functions as inline ops.
15510
15511         * mini.c (move_basic_block_to_end): Fix bug in last patch.
15512
15513         * mini.h (MonoBasicBlock): Reorganize fields a bit.
15514
15515         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
15516
15517         * mini.c: Add support for OP_NOT_TAKEN.
15518
15519         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
15520         structures in registers for pinvoke wrappers.
15521
15522         * mini-amd64.c: Fix warnings.
15523
15524 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
15525
15526         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
15527
15528         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
15529
15530         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
15531         address instead of loading the address from it.
15532
15533         * mini-x86.c: Add support for returning small structs in registers
15534         on Win32. Fixes part of #70864.
15535         
15536 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
15537
15538         * trace.c (get_token): Improve error checking.
15539
15540 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15541
15542         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
15543
15544 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
15545  
15546         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
15547         it can be reused for MonoClass.
15548         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
15549         _LINKDEMAND.
15550
15551 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
15552
15553         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
15554         instead of a MonoReflectionMethod. The method information wasn't used
15555         when displaying SecurityException details (but will be now).
15556
15557 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
15558
15559         * Makefile.am : windows build fix.
15560
15561 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15562
15563         * iltests.il: Add new regression test.
15564
15565         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
15566         #72522.
15567
15568 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
15569  
15570         * mini.c: Moved linkdemand check into helper function check_linkdemand
15571         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
15572         LDFTN, LDVIRTFTN).
15573
15574 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
15575
15576         * declsec.c: Added statistics counter for different kinds of 
15577         LinkDemands.
15578         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
15579         (and commented) declaration.
15580         * mini.c: Added statistics counter for security Demand code 
15581         generation. Added display of security statistics.
15582
15583 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15584
15585         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
15586         Fix compilation errors under gcc-2.95.
15587
15588 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15589
15590         * mini.c, driver.c: Use the new jit trampoline hashtable
15591
15592 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15593
15594         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
15595
15596 2005-02-11  Martin Baulig  <martin@ximian.com>
15597
15598         * debug-mini.c (mono_debug_close_method): Free the line number array.
15599
15600 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15601
15602         * aot.c: Break up large methods into smaller ones. Share GOT slots for
15603         icalls.
15604
15605         * mini.h: Bump AOT file format version. 
15606
15607 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15608
15609         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
15610         APTC and P/Invoke.
15611         * declsec.h: Added macros to get/set lazyly initialized security 
15612         informations about assemblies. Added new enum for different type of
15613         possible LinkDemand violation. Added function to check LinkDemands.
15614         * mini.h: Added a field to MonoCompile to hold any security violation
15615         detected when JITting a method (so it can be thrown later).
15616         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
15617         and CEE_CALLVIRT. Added code to throw exception at the end of
15618         mini_method_compile (note: the exception is unhandled right now).
15619
15620 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15621
15622         * mini.c, jit-icalls.c: use the managed implementation of
15623         memset for initobj and memset, to avoid managed <-> unmanaged
15624         transitions.
15625
15626 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
15627
15628         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
15629         optimization if it would need a GOT var.
15630
15631         * basic.cs: Add tests for constant propagation and switch statements.
15632
15633         * ssa.c: Fix out-of-range constant propagation and switch statements.
15634
15635 2005-02-09    <vargaz@freemail.hu>
15636
15637         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
15638
15639 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
15640
15641         * cpu-amd64.md (load_membase): Fix max length of load_membase.
15642
15643 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
15644
15645         * mini.c: update to new signature of mono_class_get_allocation_ftn().
15646
15647 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
15648
15649         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
15650         arithmetic operations.
15651
15652 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
15653
15654         * mini-ppc.c: add a workaround for broken user code that
15655         DllImports vararg functions with non-vararg signatures.
15656
15657 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15658
15659         * mini.c (mono_jit_compile_method_inner): Add detection and a 
15660         meaningfull error message for assemblies written in Managed C++.
15661
15662         * tramp-amd64.c mini-amd64.h: Add support for 
15663         create_trampoline_from_token ().
15664
15665         * aot.c mini-x86.c abcremoval.c: Applied patch from
15666         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15667
15668 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
15671         which takes a MonoImage/token as parameter instead of a MonoMethod.
15672
15673         * aot.c: Use the new trampoline for initializing vtables.
15674
15675         * aot.c: Add support for ldfld/stfld_remote wrappers.
15676
15677         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
15678         rules for compare <MEM>, IMM.
15679
15680         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
15681
15682         * aot.c: Handle inherited finalizers correctly.
15683
15684 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15685
15686         * inssel.brg (stmt): Add a missing _setup_... ().
15687
15688         * aot.c: Save some parts of the class state to the AOT file and use it
15689         to recompute that state when a class is initialized.
15690
15691         * mini.c: Install AOT hooks into the runtime.
15692
15693         * mini.h: Bump AOT file format version.
15694         
15695         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
15696         Fixes #72148.
15697
15698         * iltests.il: Add new test.
15699
15700 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15701
15702         * mini.c: fix typo.
15703
15704 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
15705
15706         * mini.c: setup the statistical profiler in the thread attach
15707         callback to cope with the new single thread code.
15708
15709 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15710
15711         * mini-ppc.c: ensure we have enough room for the profiler
15712         calls (fixed bug#72084).
15713
15714 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15715
15716         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
15717         it.
15718
15719 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15720
15721         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
15722
15723 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15724
15725         * ssapre.c: Fixed an issue with down safety (this allows IronPython
15726         to succesfully execute parrotbench).
15727         * ssapre.h: Likewise.
15728
15729 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
15730
15731         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
15732         variable for stores to method arguments (fixes a SSAPRE issue).
15733
15734 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15735
15736         * mini.c: handle value types in dup, fixes gen-112.cs.
15737
15738 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
15739
15740         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
15741         sequence for calls in dynamic methods to avoid thunks.
15742
15743 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15744
15745         * mini.c: correctly remove dynamic methods from the hashtable.
15746
15747 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15748
15749         * driver.c: Disabled SSAPRE until fix the bug that appears
15750         in IronPython's parrotbench.
15751
15752 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15753
15754         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
15755
15756         * mini.c (mono_method_to_ir): Revert the previous change.
15757         
15758         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
15759         when AOT compiling.
15760
15761         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
15762         mono_jit_info_table_find () etc. when running under valgrind.
15763
15764         * inssel.brg: Fix warnings.
15765
15766         * mini-exceptions.c: Fix warnings.
15767
15768 2005-01-31  Martin Baulig  <martin@ximian.com>
15769
15770         * driver.c (compile_all_methods_thread_main): Don't try to compile
15771         generic methods or anything which has type parameters.
15772
15773 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15774
15775         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
15776
15777         * TestDriver.cs: Add --verbose flags.
15778
15779         * graph.c ssa.c: Fix 64 bit warnings.
15780         
15781         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
15782         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
15783         Fix 64 bit warnings.
15784
15785         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
15786         variable not spotted by gcc.
15787         
15788         * mini-amd64.c inssel-amd64.brg: Applied patch from  
15789         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
15790         X86_COMPARE_MEMBASE opcodes.
15791
15792         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
15793
15794 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15795
15796         * *: MonoMethod->signature might be NULL now. You *MUST* use
15797         mono_method_signature.
15798
15799 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15800
15801         * driver.c (compile_all_methods_thread_main): Compile the methods
15802         without invoking cctors.
15803
15804 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15805
15806         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
15807         * basic-calls.cs: test for the above.
15808
15809 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15810
15811         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
15812         MonoJitInfo changes.
15813
15814 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
15815
15816         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
15817         eagerly if it contains dynamic methods.
15818         
15819         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
15820
15821         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
15822         trace, it is now computed by an icall from trace_ips.
15823         
15824         * mini-exceptions.c: Fix a warning.
15825
15826 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15827
15828         * mini-exceptions.c: don't bother getting stack trace info if
15829         it's not going to be used.
15830
15831 2005-01-27  Raja R Harinath  <rharinath@novell.com>
15832
15833         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
15834         ssapre-mini-ops.h.
15835
15836 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
15837
15838         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
15839
15840         * aot.c: Avoid calling mono_method_get_header () if not needed.
15841
15842         * mini.h: Bump AOT file format version.
15843         
15844         * mini.c (mono_emit_native_call): Allocate a GOT var here.
15845
15846         * mini.c (mono_print_tree): Print more info for calls.
15847
15848 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15849
15850         * declsec.h: Remove warning by adding missing include for marshal.h
15851
15852 2005-01-26  Martin Baulig  <martin@ximian.com>
15853
15854         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
15855         `ip' twice.
15856
15857 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
15858
15859         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
15860         flags.
15861
15862         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
15863
15864         * aot.c (mono_compile_assembly): Fix a warning.
15865
15866 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
15867
15868         * declsec.c: Look for security attributes on the original MonoMethod 
15869         (and not the wrapped one). This fix permissions on icalls.
15870
15871 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15872
15873         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15874
15875         * mini.c (mono_allocate_stack_slots): Add a fixme.
15876
15877         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
15878
15879 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15880
15881         * inssel.brg: optimize casts of sealed types (more
15882         optimizations waiting for fixes in remoting).
15883
15884 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
15885
15886         * inssel.brg (stmt): Add another dummy rule.
15887
15888         * driver.c: Fix warnings.
15889
15890         * driver.c (mono_main): If running under valgrind, instruct glib to use
15891         the system allocation functions so valgrind can track the memory
15892         allocated by the g_... functions.
15893
15894         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
15895
15896         * mini-ops.h: Add OP_DUMMY_STORE opcode.
15897
15898         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
15899
15900         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
15901         variables in try regions.
15902
15903         * mini.c (mini_method_compile): Don't disable optimizations on large
15904         methods when AOT compiling.
15905
15906         * mini.c (mono_allocate_stack_slots): New arch independent method to 
15907         allocate stack slots. Not yet used.
15908
15909 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15910
15911         * debug-mini.c (mono_debug_close_method): Plug some leaks.
15912
15913 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
15914
15915         * mini-ppc.c: make the branch info relative as the code
15916         buffer can be reallocated.
15917
15918 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15919
15920         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
15921         * driver.c: Removed the AOT/security restriction. Now initialize the
15922         security manager (in metadata) if --security is used.
15923         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
15924         rather than the pointer to declarative security, when AOT is used.
15925
15926 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
15927
15928         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
15929         basic blocks, reduced intrinsic exception throwing code size.
15930
15931 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
15932
15933         * driver.c (mini_usage): Reorder the usage screen.
15934
15935 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * mini.c (mono_resolve_patch_target): Fix warning.
15938
15939 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
15942         previous patch.
15943
15944         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15945
15946         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
15947         breaks the amd64 build.
15948
15949         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
15950         register allocation. Fixes #71454.
15951
15952         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
15953
15954         * arrays.cs: Add new regression test.   
15955
15956 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15957
15958         * ssapre.c: Turned usage of snprintf to GString.
15959         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
15960         (I left it on by mistake in my previous commit).
15961
15962 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
15963
15964         * mini.c, cfold.c, basic-calls.cs: preserve side effects
15965         on cond branch optimization (fixes bug# 71515).
15966
15967 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15968
15969         * abcremoval.c: Fixed bug 71062.
15970         * abcremoval.h: Likewise.
15971
15972 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
15973
15974         * mini.c: Added a new functionality to optimize_branches, the removal
15975         of useless basic blocks, and fixed some problem in the removal of
15976         critical edges; some utility functions added for both purposes.
15977         * ssapre.c: Added complex expression support, and fixed bug 70637.
15978         * ssapre.h: Likewise.
15979         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
15980         enabled in SSAPRE.
15981         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
15982         * driver.c: Re-enabled SSAPRE.
15983
15984 2005-01-19  Martin Baulig  <martin@ximian.com>
15985
15986         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
15987         the result of mono_get_method_constrained().
15988
15989 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
15990
15991         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
15992         manager.
15993
15994 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
15995
15996         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
15997         be detected.  Fixes #59296.
15998
15999 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16000
16001         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
16002         which can happen. Fixes #71361.
16003
16004 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16005
16006         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
16007         manager.
16008
16009 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16010
16011         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
16012         appdomain-unload.exe to fail.
16013         
16014         * mini.c: Fix some memory leaks.
16015
16016 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
16017
16018         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
16019         Fixed bug and sped up some codepaths.
16020
16021 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * mini.c: Fix some memory leaks.
16024
16025         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
16026         conversion.
16027
16028         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
16029
16030         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
16031         #71320.
16032
16033         * iltests.il: Add regression test for #71320.
16034
16035 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16036
16037         * mini.c (mono_codegen): Fix installation of profiler hooks.
16038
16039         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
16040
16041 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16042
16043         * mini.h, mini.c, cfold.c: optimize access to enum
16044         readonly fields, too. Eval conditional branches if possible
16045         to perform unreachable code removal in more cases.
16046
16047 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
16048
16049         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
16050
16051         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
16052         code manager.
16053
16054         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
16055         WinXP DEP. Fixes #71244.
16056
16057 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
16058
16059         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
16060
16061 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16062
16063         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
16064
16065 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16066
16067         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
16068         changes.
16069
16070         * mini.h: Bump AOT version.
16071
16072         * mini.h (MonoCompile): Change exvar to a hash table.
16073
16074         * mini.c: Allocate a separate exvar for each handler block.
16075
16076         * mini.c: Get rid of the computation of filter_lengths, its not needed.
16077
16078         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
16079         ex var with the pending exception and only throw if the two are equal.
16080         Fixes #68552.
16081         
16082         * exceptions.cs: Add tests for rethrow and nested catch clauses.
16083
16084         * mini-x86.c: Fix warnings.
16085
16086         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
16087         used by all the ports now.
16088
16089         * aot.c: Add write-symbols and save-temps options.
16090
16091 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16092
16093         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
16094
16095 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
16096
16097         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
16098         operations.
16099
16100         * tramp-s390.c: Check vtable slot belongs to the domain.
16101
16102         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
16103         as per other platforms.
16104
16105         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
16106
16107 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16108
16109         * driver.c: we don't run the Main() code in a subthread anymore.
16110
16111 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
16112
16113         * mini.c: added experimental rtc support in the statistical
16114         profiler: if the user has the permission, more accurate statistics
16115         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
16116         The MONO_RTC value must be restricted to what the linux rtc allows:
16117         power of two from 64 to 8192 Hz.
16118
16119 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
16122
16123 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
16124
16125         * mini-ppc.c: better icache flush for smp.
16126
16127 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16128
16129         * mini-amd64.c (emit_move_return_value): Fix memory leak.
16130
16131         * mini-x86.c (get_call_info): Add the get_call_info () code from the
16132         amd64 port, not yet used.
16133
16134 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
16137         a struct type.
16138
16139 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16140
16141         * driver.c: Added --security option to activate the security manager.
16142         Right now this will allow code generation for declarative demands and
16143         is disabled when AOT is specified.
16144         * mini.c: Add code generation for declarative security demands.
16145         * mini.h: Add mono_use_security_manager as an extern gboolean.
16146
16147 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16148
16149         * aot.c (mono_compile_assembly): Speed up compilation a bit by
16150         emitting more dense assembly code.
16151
16152         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
16153         exception throwing stuff.
16154
16155 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16156
16157         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
16158         dead code.
16159
16160         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
16161         left in by mistake.
16162
16163         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
16164         fixed.
16165
16166         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
16167
16168         * tramp-*.c: Only patch vtable slots if the object is in the current
16169         domain. Fixes appdomain-unload.exe.
16170
16171         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
16172         
16173         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
16174         x86 branch.
16175
16176 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16177
16178         * mini.c (reverse_branch_op): New helper function.
16179
16180         * mini.c (optimize_branches): Run the new optimization only on 
16181         platforms which support it. Also reverse all kinds of branches.
16182
16183         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
16184
16185         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
16186         a throw statement.
16187
16188         * mini.c (optimize_branches): Reverse not-equals branches if the false
16189         bblock is a throw. This happens a lot of time with argument checking in
16190         corlib.
16191
16192         * mini.c (mono_codegen): Add support for placing basic blocks after
16193         the function epilogue.
16194
16195         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
16196         function epilogue.
16197         
16198 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
16199
16200         * mini.c (setup_stat_profiler): Only set this up if the platform
16201         supports ITIMER_PROF.
16202
16203 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16204
16205         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
16206         previous patch.
16207
16208         * inssel.brg: Fix a warning.
16209
16210 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16211
16212         * mini.c: added support for statistical profiler 
16213         (run with: --profile=default:stat).
16214
16215 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
16216
16217         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
16218
16219         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
16220
16221         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
16222         related to global registers from the amd64 port.
16223
16224 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16225
16226         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
16227
16228         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
16229         with global registers.
16230         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
16231
16232         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
16233
16234 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
16235
16236         * debug-mini.c (encode_value): Fix off-by-one.
16237
16238         * aot.c (encode_value): Likewise.
16239
16240         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
16241
16242 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16243
16244         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
16245         AOT.
16246
16247         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
16248         
16249         * aot.c (emit_method_info): Increase size of temp buffer.
16250
16251         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
16252         the AOT case.
16253
16254 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
16255
16256         * aot.c (emit_method_info): Fix build.
16257         
16258         * aot.c: Further rework of the AOT file format to reduce the size of
16259         the method info data.
16260
16261         * mini.h: Bump AOT file format version.
16262
16263 2004-12-27  Martin Baulig  <martin@ximian.com>
16264
16265         * mini.c (mini_get_method): New static method; call
16266         mono_get_method_full() and mono_get_inflated_method().
16267         (mono_method_to_ir): Use mini_get_method() instead of
16268         mono_get_method_full(). 
16269
16270 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
16271
16272         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
16273
16274 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
16275
16276         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
16277
16278         * inssel-amd64.brg: Add some optimization rules.
16279
16280 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16281
16282         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
16283         standard not GC'd stuff is fine.
16284
16285 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
16286
16287         * aot.c: Rework the AOT file format to get rid of most of the global
16288         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
16289
16290         * mini.h: Bump AOT file format version.
16291         
16292 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
16293
16294         * mini.h: Bump AOT file format version.
16295
16296         * aot.c (mono_aot_is_got_entry): New function to determine if an 
16297         address is inside a GOT.
16298
16299         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
16300
16301         * cpu-pentium.md: Increase the maximum size of some instructions which
16302         might involve a got access.
16303         
16304         * mini.c (get_method_from_ip): Another debug helper function.
16305
16306         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
16307         when got var accesses are created during the decompose phase.
16308
16309         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
16310
16311         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
16312         argument mini_compile_method and to MonoCompile, and use this to
16313         determine whenever a given method is compiled for AOT. This allows the
16314         other methods compiled during AOT compilation to be free of AOT stuff,
16315         so the backends does not need to add special support for them by
16316         creating a fake GOT etc.
16317
16318         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
16319         longer needed.
16320
16321 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16322
16323         * mini.c (mono_method_to_ir): It turns out that some of the
16324         x-appdomain wrappers are lax with types, so just ignore this for
16325         all wrappers.
16326
16327         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
16328         at the vtable->klass. If it is non-shared code we can just use the
16329         vtable.
16330
16331 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
16332
16333         * mini-ppc.c: access MonoDomain from tls, too.
16334
16335 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
16336
16337         * declsec.c: Removed unused variable (and related warning ;-)
16338
16339 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
16340
16341         * iltests.il: New test for LDELEMA on an array of ref types.
16342
16343         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
16344         all ldelema's on reftypes.
16345         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
16346         it was the wrong place to put it.
16347
16348         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
16349         register to pop to make this cleaner, at the request of Paolo.
16350
16351 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16352
16353         * mini-ops.h (OP_GETHASHCODE): New op.
16354
16355         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
16356
16357         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
16358         operation.
16359
16360         For a microbenchmark, this reduces the cost of Hashtable.get_Item
16361         by 25%.
16362         
16363         * mini-x86.c (mono_arch_output_basic_block): Rather than
16364
16365         add ebp, 4
16366
16367         Emit
16368
16369         pop edx
16370
16371         The first is 3 bytes while the second is 1. This saves 36 kb on
16372         mscorlib, quite a big saving. When bootstraping mcs, I was able to
16373         see a small boost because of icache locality.
16374
16375         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
16376
16377 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
16378
16379         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
16380         started code sharing with the generic code.
16381
16382 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
16383
16384         * mini-ppc.c, cpu-g4.md: added code for direct access to
16385         tls data slots.
16386
16387 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
16388
16389         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
16390          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
16391         to OP_TLS_GET.
16392
16393 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16394
16395         * declsec.c|h: Added functions to cache the declarative stack modifiers
16396         in MonoJitInfo and to create a security frame from a MonoJitInfo 
16397         structure.
16398         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
16399         created. Register internal calls for System.Security.SecurityFrame::
16400         _GetSecurityFrame and _GetSecurityStack.
16401         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
16402         the definitions for the new stack walk/callback mechanism.
16403         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
16404         first security frame for LinkDemands and InheritanceDemands) and
16405         GetSecurityStack for Demands. Both use the new mono_walk_stack code
16406         from lupus.
16407         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
16408         walk initialization (lupus).
16409
16410 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16411
16412         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
16413         idiom.
16414         (handle_loaded_temps): Do not create a temporary variable for
16415         things that we know are temps. They will never be modified.
16416         (mono_spill_call): Set MONO_INST_IS_TEMP
16417         (mono_emulate_opcode): ditto
16418         (emit_tree): ditto
16419         (mono_method_to_ir.CEE_DUP): ditto
16420
16421 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
16422
16423         * mini.c (type_to_eval_stack_type): Make this handle the void type
16424         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
16425         (emit_tree): use ip_in_bb to special case some common idioms
16426         Update all callers to pass in the IP.
16427         (mono_method_to_ir): Make CEE_CALL* do the above as well.
16428
16429         This gives us a nice 2% speedup in mcs bootstrap.
16430
16431         * mini-x86.c (peephole_pass): Peephole pass to make
16432         mov  [foo], eax
16433         push [foo]
16434
16435         into
16436
16437         mov [foo], eax
16438         push eax
16439
16440         * mini.c (ip_in_bb): new method.
16441         (mono_method_to_ir): use this method rather than doing the hash
16442         lookup ourselves.
16443
16444         * linear-scan.c (mono_linear_scan): When expiring actives, you
16445         don't need to keep around variables that expire on this
16446         instruction. This makes it so that:
16447              a = b + 1
16448         will turn into:
16449              store (ebx add (ebx, 1))
16450         which will become
16451              add ebx, 1
16452
16453 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
16454
16455         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
16456         combination to avoid doing two copies. Fix up problems with previous
16457         patch.
16458
16459         * mini.c: Fix 64 bit warnings.
16460
16461         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
16462
16463 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
16464
16465         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
16466         changes from the x86 code.
16467
16468         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
16469
16470 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16471
16472         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
16473         throwing code to reduce its size, unify the AOT and non-aot code and 
16474         get rid of relocations in the AOT case.
16475
16476         * mini-x86.h mini.c exceptions-x86.c 
16477         (mono_arch_get_throw_corlib_exception): New arch specific function to 
16478         raise corlib exceptions which doesn't require relocations in the 
16479         caller.
16480
16481         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
16482
16483 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * mini.c (mono_emit_method_call): Only allocate the got var when it is
16486         needed.
16487
16488         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
16489         in the AOT case.
16490
16491 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16492
16493         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
16494         with add function when used from Inc/dec atomic 
16495         functions. Re-enabled optimization on x86.
16496         * mini-ops.h: renamed atomic_add functions to
16497         allow _add to match the Interlocked::Add and
16498         _add_next to match Interlocked::Inc/Dec.
16499
16500 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
16501
16502         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
16503         linking of BBs to the end BB, and enabled SSAPRE also with
16504         consprop and copyprop (which was prevented by that bug).
16505
16506 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16507
16508         * mini-x86.c: disabling the Interlocked optimizing code. 
16509
16510 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16511
16512         * aot.c (load_aot_module): Move reading of got_addr after the AOT
16513         file version check.
16514         
16515 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
16516
16517         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
16518         interlocked optimization due lack of support on x86, rewrote 
16519         exchange to take into account that base may be in eax.
16520         
16521         xsp works again; activated Interlocked optimizing code.
16522         
16523 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16524
16525         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
16526
16527 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
16528
16529         * mini-ops.h: Add new opcodes.
16530
16531         * mini.h: Add new patch types. Add got_var to MonoCompile.
16532
16533         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
16534         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
16535         make it work with all kinds of patchable code.
16536
16537         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
16538         address of the GOT, and referencing entries in the GOT.
16539
16540         * mini.c: Add code to load the GOT address if needed by an opcode.
16541
16542         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
16543         independent AOT code on the x86 using an elf-style Global Offset Table.
16544
16545 2004-12-14  Raja R Harinath  <rharinath@novell.com>
16546
16547         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
16548
16549 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16550
16551         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
16552         when running xsp.
16553
16554 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
16555
16556         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
16557         of Interlocked:Increment/Decrement/Add as inline ops.
16558         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
16559
16560 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
16561
16562         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
16563         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
16564
16565 2004-12-12  Duncan Mak  <duncan@ximian.com>
16566
16567         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
16568         again. `patch_info->table_size' is no longer valid after Zoltan's
16569         commit #37636.
16570
16571 2004-12-12  Martin Baulig  <martin@ximian.com>
16572
16573         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
16574         if we are the "real" method, ie. not an inlined method inside it.
16575
16576 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
16577
16578         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
16579         before we look in the special fields table. This fixes
16580         ../tests/thread-static-init.cs.
16581
16582 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16583
16584         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
16585         for Array get_Rank and get_Length. Fixes bug #70465.
16586
16587 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
16588
16589         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
16590         separate structure to reduce the size of MonoJumpInfo.
16591
16592 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16593
16594         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
16595
16596 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
16597
16598         * mini.c (mini_get_inst_for_method): Changed to allow ports
16599         to return a MonoInst instead of opcode 
16600         (renamed mini_get_opcode_for_method to better reflect the new functionality)
16601         
16602         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
16603         Allow ports to return a created MonoInst instead of op-code, will enable
16604         new optimizations.
16605         (renamed mini_get_opcode_for_method to better reflected the functionality)
16606
16607 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
16610
16611 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16612
16613         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
16614         Fixes #69985.
16615
16616 2004-12-08  Martin Baulig  <martin@ximian.com>
16617
16618         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
16619         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
16620
16621 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16622
16623         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
16624         correctly.
16625
16626         * exceptions.cs: Disable some tests which depend on properties of x86 fp
16627         arithmetic.
16628
16629 2004-12-08  Raja R Harinath  <rharinath@novell.com>
16630
16631         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
16632
16633 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
16636         bug introduced by the previous patch.
16637
16638 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16639
16640         * mini-ppc.c, objectc.cs: handle large structs passed by value
16641         (fixes bug #69972).
16642
16643 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16644
16645         * mini-ppc.c: OP_ARGLIST implementation from
16646         Geoff Norton  <gnorton@customerdna.com>.
16647
16648 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16649
16650         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
16651         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
16652
16653 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
16654
16655         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
16656
16657 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16658
16659         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
16660         support.
16661
16662 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16663
16664         * mini-sparc.c: Zero out localled-ed memory.
16665
16666         * iltests.il: Add tests for zeroing out localloc-ed memory.
16667
16668 2004-12-04  Martin Baulig  <martin@ximian.com>
16669
16670         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
16671         mono_method_get_signature_full().       
16672
16673 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
16674
16675         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
16676         and some utility functions (always for SSAPRE), integrated SSAPRE.
16677         * mini.h: Likewise.
16678         * driver.c: Added ssapre option.
16679         * ssa.c: Small fix on OP_ARG handling.
16680         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
16681         * Makefile.am: Likewise.
16682
16683 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16684
16685         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
16686         now in the xp code.
16687
16688         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
16689         icall.
16690
16691 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16692
16693         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
16694         
16695         * cpu-s390.md : Increase instruction length of oparglist.
16696
16697         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
16698
16699 2004-11-30  Martin Baulig  <martin@ximian.com>
16700
16701         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
16702         virtual generic methods.  We call a special helper_compile_generic_method()
16703         icall to retrieve the method from the vtable, inflate and compile
16704         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
16705
16706         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
16707
16708 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
16709
16710         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
16711
16712 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
16713
16714         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
16715         Fixes #69929.
16716
16717 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
16718
16719         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
16720         platforms with PIC aot.
16721
16722 2004-11-28  Martin Baulig  <martin@ximian.com>
16723
16724         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
16725         Fixes gen-112.cs.
16726
16727 2004-11-28  Martin Baulig  <martin@ximian.com>
16728
16729         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
16730         the result of mono_type_get_underlying_type() to check whether
16731         we're byref.
16732
16733 2004-11-26  Martin Baulig  <martin@ximian.com>
16734
16735         * mini.c
16736         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
16737         in the g_assert().
16738
16739 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
16740
16741         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
16742         the same way as the other arguments so they won't get clobbered.
16743
16744         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
16745         calls through R11 since it is clobbered by the trampoline code.
16746
16747 2004-11-26  Raja R Harinath  <rharinath@novell.com>
16748
16749         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
16750         pick up in-tree mscorlib.dll.
16751
16752 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16753
16754         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
16755
16756         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
16757         runtime data/code are now stored in a table similar to the GOT in ELF. 
16758         This allows the code itself to be position independent.
16759
16760         * aot.c: Fix loading of referenced assemblies after the lazy assembly
16761         loading changes.
16762
16763         * aot.c: Attach ELF type (object/function) directives to all global
16764         symbols.
16765
16766         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
16767
16768         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
16769
16770         * mini-amd64.h: Turn on PIC AOT code.
16771
16772         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
16773         returning the offset within an OP_AOTCONST instruction where the GOT
16774         offset needs to be added.
16775
16776         * mini.h: Bump AOT file format version.
16777
16778 2004-11-25  Martin Baulig  <martin@ximian.com>
16779
16780         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
16781         uninflated generic methods.
16782
16783 2004-11-25  Martin Baulig  <martin@ximian.com>
16784
16785         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
16786
16787 2004-11-24  Martin Baulig  <martin@ximian.com>
16788
16789         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
16790         original klass (this only applies for generic instances).
16791
16792 2004-11-24  Martin Baulig  <martin@ximian.com>
16793
16794         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
16795         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
16796         that array).
16797
16798 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16799
16800         * mini.c (mono_method_to_ir): Disable inlining for methods containing
16801         localloc. Fixes #69678.
16802
16803         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
16804         
16805 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
16808         used SSE registers on pinvoke calls. Fixes #69774.
16809
16810 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
16811
16812         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
16813         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
16814
16815 2004-11-23  Raja R Harinath  <rharinath@novell.com>
16816
16817         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
16818         Refer directly to the mcs/ tree.
16819
16820 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16821
16822         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
16823         Check if a trampoline for a synchronized method is required. 
16824
16825 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
16826
16827         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
16828         with localloc if needed. Throe arithmetric exception in
16829         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
16830         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
16831
16832 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
16833
16834         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
16835         types before switching on type.  Fixes #69622.
16836
16837 2004-11-19  Raja R Harinath  <rharinath@novell.com>
16838
16839         * Makefile.am (check-local): New.  Integrate into 'make check'.
16840         (MCS,RUNTIME): Define using in-tree mono and mcs.
16841         (ILASM): New.
16842         (%.exe): Use $(ILASM).
16843
16844 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
16845
16846         * mini-ppc.c: adjust initial prolog size (bug #69691).
16847
16848 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
16849
16850         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
16851         #69664.
16852
16853 2004-11-17  Raja R Harinath  <rharinath@novell.com>
16854
16855         * Makefile.am (clean-local): Rename from 'clean'.
16856
16857 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16858
16859         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
16860         to mono_arch_is_int_overflow. 
16861         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
16862         SIGFPE events.
16863
16864 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16865
16866         * declsec.c|h: New files to support declarative security attributes.
16867         Added function to check if a method has (applicable) security.
16868         * mini.c|h: Add check for declarative security attributes in
16869         mono_method_check_inlining.
16870         * Makefile.am: Added declsec.c and declsec.h to the build.
16871
16872 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16873
16874         * mini.c, mini.h: update to keep dynamic code info per-domain.
16875
16876 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16877
16878         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
16879         (mini_init): Get rid of it from here too.
16880
16881 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16882
16883         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
16884         implemented OP_RETHROW (patch by Geoff Norton
16885         <gnorton@customerdna.com>).
16886
16887 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
16888
16889         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
16890         between appdomains.  Fixes appdomain-unload on PPC.
16891
16892 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
16893
16894         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16895         mini-exceptions.c: handle the new wrapper types.
16896         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
16897         token value as a MonoClass* when compiling a wrapper.
16898         mono_jit_create_remoting_trampoline now takes an additional
16899         MonoRemotingTarget parameter.
16900         
16901 2004-11-10  Martin Baulig  <martin@localhost>
16902
16903         * mini.c (mono_method_to_ir): Use `generic_container->context'
16904         rather than creating a new one.
16905
16906 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16907
16908         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
16909
16910         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
16911
16912 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16913
16914         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
16915         the experimental aot cache stuff.
16916
16917 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
16918
16919         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16920         mini-exceptions.c: update to exception clause structure changes.
16921
16922 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16923
16924         * exceptions-x86.c (throw_exception): Fix warnings.
16925
16926         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
16927         for OP_RETHROW.
16928
16929 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * exceptions-sparc.c (get_throw_exception): Really fix this.
16932
16933 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16934
16935         * tramp-*.c: we no longer support icalls without wrappers, so
16936         a bit of code can be removed here
16937
16938 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
16939
16940         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
16941         patch.
16942
16943         * cpu-sparc.md: Add op_rethrow.
16944
16945         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
16946
16947         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
16948
16949         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
16950         * mini-ops.h: Add OP_RETHROW.
16951
16952         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
16953
16954         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
16955
16956 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16957         
16958         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
16959         Makes the output much easier to read
16960
16961 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
16962
16963         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
16964         prevents another huge leak when compiling with ssa. Secondly, the
16965         performance of doing this rather than freeing the lists is much
16966         better. GList does a lock every time you allocate a list link,
16967         so that it can use a memory pool. So, it is better to just use
16968         a memory pool of our own.
16969         
16970         * ssa.c, linear-scan.c: replace g_list_remove_link with
16971         g_list_delete.  The remove one does not free the GList, so we were
16972         leaking memory. On -O=all --compile-all with corlib, this cut down
16973         3 MB of allocations.
16974
16975 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16976
16977         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
16978
16979         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
16980
16981         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
16982         into a new function mono_create_jit_trampoline ().
16983
16984 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * trace.c (get_spec): Allow tracing of classes without a namespace.
16987
16988 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
16989
16990         * mini.c: Fix pointer overwrite in mini_method_compile.
16991
16992 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
16993
16994         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
16995         The darwin ABI needs some special handling for 1 and 2 byte structs
16996         Lets use lbz/lhz instead of lwz everywhere.
16997         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
16998         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
16999         Use stb/sth for the former, and put the latter always on stack instead of in
17000         argument registers.
17001
17002 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
17003
17004         * trace.c (is_filenamechar): Add '_'.
17005
17006 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
17007
17008         * mini-s390.c: Fix prolog length to allow for large trace requirements.
17009
17010         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
17011
17012 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
17013
17014         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
17015         depends on libmonogc. Fixes #68805.
17016
17017 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
17018
17019         * mini.c (mono_jit_free_method): Provide extra information for
17020         this error.  Currently this leaks, but will be turned into a
17021         developer option in the future.
17022
17023 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
17024
17025         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
17026
17027 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17028
17029         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
17030         boundary. Fixes reading of PATCH_INFO_R4 and R8.
17031         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
17032
17033 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
17034
17035         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
17036         trampolines for AOT code.
17037
17038 2004-10-22    <vargaz@freemail.hu>
17039
17040         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
17041         constructed types. Fixes #68136.
17042
17043 2004-10-21  Martin Baulig  <martin@ximian.com>
17044
17045         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
17046         if it returns true, unwind the stack to the call instruction.
17047
17048 2004-10-21    <vargaz@freemail.hu>
17049
17050         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
17051
17052         * mini.h: Bump AOT version number.
17053
17054         * objects.cs: Add another test for unbox trampolines.
17055
17056         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
17057         valuetype methods.
17058
17059 2004-10-20    <vargaz@freemail.hu>
17060
17061         * driver.c: Add SHARED to the set of optimizations tested.
17062
17063         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
17064
17065         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
17066         used by CEE_NEWARR.
17067
17068         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
17069
17070 2004-10-20  Martin Baulig  <martin@ximian.com>
17071
17072         * mini-exceptions.c (mono_handle_exception): Call
17073         mono_debugger_handle_exception() to tell the debugger about
17074         catch/finally clauses.
17075
17076 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
17079
17080         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
17081         #68447.
17082
17083 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
17084
17085         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
17086         methods as their native size, fixed bug #57543, #57545.
17087         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
17088         This saves a temporary register and mullw call down into 1 (minor perf
17089         increase for cases like sum = sum * 5;  This use to translate into:
17090             li r11,5
17091             mullw r28,r28,r11
17092         It now translates to
17093             mulli r28,r28,5
17094
17095 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
17096
17097         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
17098         #68388.
17099
17100 2004-10-11  Martin Baulig  <martin@ximian.com>
17101
17102         * mini.c (mono_method_to_ir): If we're a generic method, get the
17103         MonoGenericContainer from our MonoMethodNormal and create a
17104         MonoGenericContext from it.
17105
17106 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17107
17108         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
17109
17110         * basic-long.cs: Add test for checked i8->i2 cast.
17111
17112 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17113
17114         * inssel-ppc.brg: added a couple of speedup rules.
17115
17116 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17117
17118         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
17119         to speed up rebuilds.
17120
17121 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17122
17123         * mini-s390.c: Minor fix to OP_OR_IMM.
17124
17125 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
17128         better. Fixes appdomain-unload.exe on sparc.
17129
17130 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17131
17132         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
17133         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
17134         see bug 67324.
17135
17136 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
17137
17138         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
17139
17140 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17141
17142         * mini.c: Always generate a field read/write wrapper for members
17143         of the class MarshalByRefObject since the actual instance could
17144         be a CBO.
17145
17146 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17147
17148         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
17149
17150 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17151
17152         * driver.c mini.h trace.c: Move the setting of the main assembly into
17153         a separate function called mono_trace_set_assembly () and call it after
17154         actually loading the main assembly. Fixes #66872.
17155
17156 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17157
17158         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
17159         using the code manager.
17160
17161 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
17164
17165 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * cpu-amd64.md: Fix bug in previous patch.
17168         
17169         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
17170         #66650.
17171
17172 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
17173
17174         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17175         mini-exceptions.c: updates for changed stack walk interface.
17176
17177 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17178
17179         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
17180
17181 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17182
17183         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
17184
17185 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17186
17187         * driver.c (mini_regression_list): Do not call mono_assembly_close 
17188         since assemblies can't be unloaded.
17189         
17190 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17191
17192         * cpu-amd64.md: Fix more instruction lengths.
17193
17194         * cpu-amd64.md: Fix lengths of some instructions.
17195
17196 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
17197
17198         * inssel.brg: Make the array ldelema check aot friendly.
17199
17200 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
17203
17204         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
17205
17206 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17207
17208         * mini-x86.c: Fix build.
17209
17210         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
17211         mono_type_get_underlying_type () helper function to simplify code.
17212         
17213 2004-09-09  Martin Baulig  <martin@ximian.com>
17214
17215         * mini-amd64.c: Don't access `type->data.klass' directly, call
17216         mono_class_from_mono_type() instead since the type may be a
17217         generic instance.
17218
17219 2004-09-09  Martin Baulig  <martin@ximian.com>
17220
17221         * mini-amd64.c (get_call_info): Fix support for generic instances.
17222         (add_valuetype): Use mono_class_from_mono_type() to get the class
17223         since we can be a generic instance.
17224
17225 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
17226
17227         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
17228
17229 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17230
17231         * liveness.c: reset spill costs on each scan: bug 62107
17232
17233 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
17234
17235         * exceptions-sparc.c (mono_arch_find_jit_info): remove
17236         unnecessary line that doesn't compile
17237
17238 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
17241         trampolines, make them call an error function so people can fix their
17242         code.
17243
17244 2004-09-06  Martin Baulig  <martin@ximian.com>
17245
17246         * mini.c (mono_method_to_ir): When initializing locals, handle a
17247         generic instances like a valuetype if it's a valuetype and like a
17248         class if it's a class.
17249
17250 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17251
17252         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
17253         stack. Fixes #64674.
17254
17255         * exceptions.cs: Add test for unwinding of call arguments.
17256
17257 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
17258
17259         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
17260         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
17261         set the carry/borrow flag). The sparc and s390 implementations
17262         can now use optimized versions (and simplify the code). ppc bugfixes.
17263
17264 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
17267
17268 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
17269
17270         * inssel-amd64.brg: Remove leftover 32 bit rule.
17271
17272         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
17273
17274 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
17275
17276         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
17277         mono_arch_find_jit_info functions into a new function. Fix a memory
17278         leak.
17279
17280         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
17281         refactored code.
17282         
17283 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17284
17285         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
17286         as well.
17287         
17288         * exceptions.cs: Add array size tests.
17289
17290         * mini.c: Allocate a separate icall wrapper for each arity of 
17291         mono_array_new_va. Fixes #59509.
17292
17293         * exceptions.cs: Add testcase for 64578.
17294
17295         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
17296
17297         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
17298         
17299 2004-09-02  Martin Baulig  <martin@ximian.com>
17300
17301         * mini.c (mono_method_to_ir): When initializing the locals, call
17302         handle_initobj() on the generic instance itself, not its
17303         underlying type.
17304
17305 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17306
17307         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
17308         MonoJitInfo for dynamic methods.
17309
17310         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
17311
17312         * mini.c: Add support for freeing JIT data for dynamic methods.
17313         
17314 2004-09-01  Martin Baulig  <martin@ximian.com>
17315
17316         * mini-x86.c (is_regsize_var): Added support for generic
17317         instances.
17318         (mono_arch_emit_prolog): Make this compile again, use
17319         `x86_push_imm_template (code)'.
17320
17321 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
17322
17323         * mini-x86.c: make all push_imm instructions that get
17324         patched always emit the long form
17325
17326 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17327
17328         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
17329         in a per-domain hash.
17330
17331         * mini-amd64.c (merge_argument_class_from_type): Handle generic
17332         types.
17333
17334 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17335
17336         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
17337         work.
17338         
17339         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
17340         work.
17341
17342         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
17343         Beginnings of SSE2 support.
17344
17345         * exceptions.cs: Add more tests for checked int<->uint casts.
17346
17347 2004-08-28  Martin Baulig  <martin@ximian.com>
17348
17349         * mini-x86.c (mono_arch_instrument_epilog): Added support for
17350         generic instances.
17351
17352         * mini.c
17353         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
17354         Handle generic instances recursively.
17355
17356 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17357
17358         * iltests.il: test for conv.u8 on a constant
17359
17360 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17361
17362         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
17363         LCONV_x4 (shrun_32 (membase)).
17364
17365 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
17366
17367         * inssel-x86.brg: c&p rules for push/setret of long
17368
17369 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17370
17371         * inssel-x86.brg: c&p rules for compare (base, regvar) and
17372         compare (regvar, base)
17373
17374         * inssel-x86.brg: more burg love
17375
17376         * inssel.brg: more cleanup
17377
17378         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
17379
17380 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
17381
17382         * basic-long.cs, basic-calls.cs: new tests for optimization.
17383
17384 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17385
17386         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
17387         patch.
17388
17389 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17390
17391         * mini-amd64.c (read_tls_offset_from_method): Add another case.
17392         
17393 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
17394
17395         * inssel.brg (mini_emit_memcpy): use 
17396         NO_UNALIGNED_ACCESS to disable memcpy optimization
17397
17398 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * mini-amd64.c: Handle generic types in various places.
17401
17402         * mini.c (mono_method_to_ir): Handle generic types in init locals.
17403
17404 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
17405
17406         * mini.c (handle_box): Fix warning.
17407
17408         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
17409
17410         * mini-amd64.h: Enable the emit_state optimization.
17411
17412         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
17413
17414         * mini-amd64.c: Add some new 64 bit peephole opts.
17415
17416         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
17417
17418         * cpu-amd64.md: sreg1 of div instructions must be %rax.
17419
17420         * mini-amd64.c: Register allocator fixes.
17421
17422         * mini.c: Add an optimization to emit_state to avoid allocation of new
17423         registers on some platforms.
17424
17425 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17426
17427         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
17428
17429         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
17430         allocation. Fixes #63085.
17431
17432         * basic-long.cs: Add new regression test.
17433
17434         * mini-amd64.c: Register allocator improvements.
17435
17436 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
17437
17438         * mini-amd64.c (read_tls_offset_from_method): Add another code
17439         sequence.
17440
17441         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
17442         instruction sequence for nullifying class init trampolines.
17443
17444         * objects.cs: Add new regalloc test.
17445
17446         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
17447
17448 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17449
17450         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
17451         
17452         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
17453         arguments.
17454
17455         * driver.c: Fix profiling after TLS changes.
17456         
17457         * driver.c (mono_main): Set mono_stats.enabled if needed.
17458
17459         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
17460         CEE_BOX.
17461
17462 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
17463
17464         * mini-x86.c: use a 1 op rather than a 2 op tls access
17465         instruction -> faster.
17466
17467 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17468
17469         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
17470         x86 backend.
17471
17472 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
17473
17474         * exceptions-sparc.c (throw_exception): fix typo
17475
17476 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17477
17478         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
17479         set tree->dreg correctly with tls. Allow any
17480         register to be used.
17481
17482         * mini-x86.c (read_tls_offset_from_method): add new code
17483         generation pattern seen with GCC.
17484
17485
17486 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17487
17488         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
17489         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17490         exceptions-sparc.c: fix some performance issues in exception
17491         handling and setting of the stack trace for exceptions that were
17492         already thrown.
17493
17494 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17495
17496         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
17497         x86 backend.
17498         
17499         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
17500         registers.
17501
17502 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17503
17504         This patch inlines tls access, when possible.
17505         
17506         * mini.h: new arch functions for TLS intrinsics.
17507         All platforms updated with a stub.
17508
17509         * mini.c: use the new intrinsics
17510
17511         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
17512         arch specific intrinsic for tls variables
17513
17514 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17515
17516         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
17517         under windows.
17518
17519 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17520
17521         * mini.c: thread local allocation
17522
17523 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
17526
17527         * Makefile.am: Link against the static version of libmonogc.
17528         
17529         * Makefile.am: Link the static versions of the convenience libraries
17530         into the mono executable.
17531
17532         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
17533
17534 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17535
17536         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
17537         on integer overflow.
17538
17539         * mini-amd64.c: Reorganize function call code.
17540
17541         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
17542
17543 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17544
17545         * inssel-x86.brg: use xor eax,eax.
17546         
17547         * basic.cs: new tests
17548
17549 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17550
17551         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
17552         in exception throwing code.
17553         
17554 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17555
17556         * inssel-x86.brg: use xor esi,esi.
17557
17558 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17559
17560         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
17561         can trace methods compiled during mini_init () too.
17562
17563         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
17564         CEE_CONV_U4.
17565
17566 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
17567
17568         * Makefile.am: static link on x86 (r=zoltan)
17569
17570 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17571
17572         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
17573         code since it causes some programs to fail.
17574
17575 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
17576
17577         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
17578
17579 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17580
17581         * mini.c: ovfops_op_map - add STACK_OBJ case for
17582         CONV_I 
17583         * basic.cs: add test_0_pin_string as test
17584         case for above.
17585
17586 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
17587
17588         * Makefile.am: build C# if srcdir != builddir
17589
17590 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17591
17592         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
17593         fall-through blocks.
17594
17595 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17596
17597         * driver.c: enable loop by default again and include abcrem in -O=all.
17598
17599 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
17600
17601         * iltests.il: Add some localloc tests.
17602
17603         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
17604
17605         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
17606         Fixes #62574.
17607
17608         * inssel-amd64.brg: Add some optimizations.
17609
17610         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
17611         for gcc-3.4.
17612
17613         * Makefile.am: Statically link mono against libmono on AMD64.
17614         
17615         * mini-amd64.c inssel-amd64.brg: Optimizations.
17616
17617 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
17618
17619         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
17620
17621         * tramp-amd64.c: Patch calling code in trampolines.
17622
17623 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
17624
17625         * mini-amd64.c: pinvoke struct passing fixes.
17626
17627 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
17628
17629         * mini-sparc.c: redo change, make mono_arch_cpu_init call
17630         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
17631
17632 2004-08-05  Duncan Mak  <duncan@ximian.com>
17633
17634         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17635         CEE_LDELEM_ANY.
17636
17637 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17638
17639         * mini-amd64.c (emit_move_return_value): Move return value for normal
17640         calls too.
17641
17642 2004-08-05  Martin Baulig  <martin@ximian.com>
17643
17644         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
17645         `type->type'; just modify `type' itself when dealing with enums
17646         and generic instances.
17647         (check_call_signature): Make `simple_type' a `MonoType *'.
17648
17649 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * mini.c: Use OP_PADD to add offsets to addresses.
17652
17653         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
17654
17655 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
17656
17657         * mini-sparc.c (mono_arch_emit_epilog): fix check
17658         for folding last op into restore instruction
17659
17660 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17661
17662         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
17663         helper methods using the code manager.
17664         
17665         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
17666
17667         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
17668
17669 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17670         
17671         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
17672           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
17673
17674         * mini-s390.c: fix tail processing
17675
17676 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
17677
17678         * mini-ppc.c: mul.ovf.un exception name fix.
17679
17680 2004-08-03  Martin Baulig  <martin@ximian.com>
17681
17682         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
17683         instances; before jumping to `handle_enum', also modify `ptype'.
17684
17685 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
17686
17687         * cpu-sparc.md: fcall maximal length too small.
17688
17689 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
17690
17691         * mini-amd64.c mini.h: Add initial support for passing/returning 
17692         structures to/from pinvoked methods.
17693
17694 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
17695
17696         * mini-ppc.c: reg allocator fix.
17697
17698 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
17699
17700         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
17701
17702         * inssel.brg: Optimize memset on 64 bit machines.
17703
17704         * mini-amd64.c: Fix some vararg cases.
17705
17706 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17707
17708         * mini-s390.c: Corrected macro in emit_float_to_int
17709
17710         * s390-abi.cs: Tests to exercise the s390 ABI
17711
17712 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
17715         caller saved regs.
17716
17717         * basic.cs: Add a test for add.ovf.un.
17718
17719 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
17720
17721         * mini-sparc.c: add case for OP_IDIV_UN
17722
17723 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17724
17725         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
17726         
17727         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
17728
17729 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
17730
17731         * basic.cs: regression tests.
17732
17733         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
17734         regressions.
17735
17736 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17737
17738         * basic.cs: Add a new test.
17739
17740         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
17741         and AOT. Various fixes and optimizations.
17742
17743         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
17744
17745 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17746
17747         * mini-ppc.c: make sure temp regs are not used for global reg
17748         allocation.
17749
17750 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17751
17752         * cpu-sparc.md: conv_i8 fix for 64bits
17753
17754         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
17755
17756 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
17757         
17758         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
17759         add opcode for cmp BYTE PTR [eax], imm.
17760
17761         * inssel.brg: Make memcpy and memset takes bases.
17762
17763 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17764
17765         * *-amd64.*: More AMD64 work.
17766         
17767 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17768
17769         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
17770         add a compare-not-equal opcode.
17771         
17772 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17773
17774         * mini.c: Use mono_init_from_assembly instead of mono_init.
17775         
17776 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
17777
17778         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
17779
17780         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
17781
17782         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
17783
17784         * inssel.brg: 64 bit fixes.
17785
17786         * mini.h (MonoCallInst): Add some AMD64 specific data.
17787
17788         * mini.h: Add some OP_P opcodes.
17789
17790 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
17791
17792         * basic.cs: tests for 61797 and 61740
17793
17794 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17795
17796         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
17797         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
17798
17799 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
17800
17801         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
17802
17803         * *-amd64*.*: Ongoing AMD64 work.
17804
17805 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
17806
17807         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
17808
17809         * *-amd64*: Ongoing AMD64 work.
17810
17811         * mini-arch.h: Add AMD64 support.
17812
17813         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
17814
17815         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
17816
17817         * mini-ops.h: Add new opcodes.
17818
17819         * Makefile.am: Add AMD64 support.
17820
17821         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
17822         rules into the inssel-long*.brg files.
17823
17824         * *-amd64.*: Add beginnings of AMD64 backend.
17825
17826 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
17827
17828         * mini.c (print_dfn): commenting out the code that prints
17829         the cil. With -O=deadce, this makes -v -v crash.
17830         
17831         * cpu-pentium.md: make checkthis have a length of 2
17832
17833 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
17834
17835         * mini-sparc.h: fix implementations of __builtin
17836         functions for Sun compiler for V9.
17837
17838 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17839
17840         * mini.c: use the new stelem.ref wrapper
17841         * exceptions.cs, arrays.cs: new stelem.ref tests
17842
17843 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17844
17845         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
17846         new XSP should work with these changes).
17847
17848 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
17849         
17850         * inssel-{long32,x86,}.brg: trivial optimizations.
17851         
17852 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17853
17854         * mini.c: load value when emitting box operation in
17855         constrained calls.
17856
17857 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
17858
17859         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
17860         is one byte shorter than cmp DWORD PTR [eax], 0.
17861
17862 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17863
17864         * inssel-ppc.brg: arguments on the stack are always
17865         relative to the stack pointer (spotted by Neale Ferguson).
17866
17867 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17868
17869         * exceptions-x86.c: delay appending the method name to the trace until
17870         after mono_jit_info_table_find is called, as this gets the real
17871         MonoMethod.
17872
17873 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17874
17875         * aot.c: register roots
17876
17877 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17878
17879         * aot.c : I could just use PLATFORM_WIN32 flag.
17880
17881 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17882
17883         * aot.c : Reverting the previous fix. This time it broke linux build.
17884
17885 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
17886
17887         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
17888
17889 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17890
17891         * mini.c (handle_stack_args): Remove some more debugging code.
17892         
17893         * mini.c (handle_stack_args): Remove debug output left in by mistake.
17894
17895         * driver.c mini.h aot.c: Allow additional options to be specified with
17896         --aot and pass them to mono_compile_assembly.
17897
17898         * aot.c: Add experimental code to AOT compile all loaded assemblies
17899         on demand and save the code into a cache in the filesystem.
17900
17901         * aot.c: Add support for more wrapper methods.
17902         
17903         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
17904         58863.
17905
17906         * cpu-*.md: Remove removed opcodes.
17907
17908         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
17909         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
17910         related icalls to marshal.c.
17911
17912 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
17915
17916         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
17917
17918         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
17919
17920 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17921         * liveness.c: If liveness is recomputated we need to reset the information
17922         for each variable. This way, if the liveness range has been narrowed
17923         by optimizations that happened after the last computation, we can return
17924         a smaller range.
17925         
17926         For example, if you have
17927         
17928         {
17929                 int i = 0;
17930                 
17931                 // Tons of code that does not affect i
17932                 
17933                 i = foo ();
17934                 ...
17935         }
17936         
17937         i = 0 is dead code and will be removed by SSA. However, when
17938         linear scan gets to the code, i will still appear to be live
17939         throughout the entire block. This prevents good register allocation.
17940
17941 2004-07-06  Martin Baulig  <martin@ximian.com>
17942
17943         * debug-mini.c (mono_debug_init_method): Allow
17944         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
17945         (mono_debug_add_icall_wrapper): New method.
17946
17947         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
17948
17949 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17950
17951         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
17952         optimization.
17953
17954 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * aot.c (mono_aot_load_method): Fix loading of debug info.
17957
17958 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * aot.c: Add logging support.
17961
17962 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * mini.h: Add prototype for mono_print_method_from_ip.
17965
17966         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
17967
17968         * inssel.brg: 64 bit fixes.
17969
17970         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
17971         inssel-long32.brg.
17972
17973         * Makefile.am: Add SPARC64 support.
17974
17975 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17976
17977         * aot.c: Fix alignment problems on 32 bit platforms.
17978
17979 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
17980
17981         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
17982         SPARC64.
17983
17984         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
17985         problems.
17986
17987         * mini.h: Bump AOT file version. Some 64 bit fixes.
17988
17989 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17990
17991         * inssel-sparc.brg: Add new rule to avoid register moves.
17992
17993         * inssel.brg: Add ldind_to_load_membase helper function.
17994
17995 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17996
17997         * mini.c: OffsetToStringData intrinsic.
17998         
17999 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
18002
18003         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
18004         regression tests.
18005
18006         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
18007 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18008
18009         * mini.c: reinstated mono_compile_get_interface_var()
18010         on x86, too, since the change breaks the Gtk# build there as well.
18011
18012 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18013
18014         * driver.c: remove loop from the default optimizations: it seems to
18015         interact badly with some of the other options (see bug #60613).
18016
18017 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
18018
18019         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
18020         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
18021
18022 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
18023
18024         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
18025         vararg-using methods.
18026
18027 2004-06-21  Martin Baulig  <martin@ximian.com>
18028
18029         * mini/mini-exceptions.c
18030         (mono_handle_exception): Added `gpointer original_ip' argument.
18031         After calling mono_unhandled_exception(), call
18032         mono_debugger_unhandled_exception() and if that returns true,
18033         restore the context and return.
18034
18035 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18036
18037         * mini-ppc.c: prefer the use of relative branches so
18038         they won't need to be patched in aot code (patch from Patrick Beard).
18039
18040 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18041
18042         * aot.c: patch from Patrick Beard to make the output assembly
18043         more correct for the MacOSX assembler. Small tweak to
18044         generate sane images on Linux/PPC, too.
18045
18046 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18047
18048         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
18049         case until bug #59509 is fixed (shows up in #60332).
18050
18051 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18052
18053         * mini.c: make sure the needed wrappers are compiled, too, with
18054         precomp.
18055
18056 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
18057
18058         * driver.c: remove NPTL reference in --version output.
18059
18060 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18061
18062         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
18063         generate valid assembly for the Mach-O assembler.
18064
18065 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18066
18067         * driver.c: don't include abcrem in the all optimization specifier
18068         since it slows down jit compilation too much for now.
18069
18070 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
18071
18072         * mini.c: use BIGMUL only if both operands have the same signage.
18073         * iltests.il: Test for bug 60056. (errors related to signage in
18074         BIGMUL).
18075
18076         r=lupus.
18077
18078 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
18079
18080         * mini.c, aot.c: memory leak fixes.
18081
18082 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18083
18084         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
18085
18086 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
18087
18088         * Makefile.am: remove the -static hack completely, it links in
18089         statically glib as well.
18090
18091 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
18092
18093         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
18094         * exceptions.cs: make it compile with new mcs/csc.
18095
18096 2004-06-03 Massimiliano Mantione <massi@ximian.com>
18097         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
18098         and added relevant test case.
18099
18100 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18101
18102         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
18103         regressions in gtk-sharp.
18104
18105 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * exceptions.cs: New regression tests.
18108
18109         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
18110
18111 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18112
18113         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
18114
18115 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18116
18117         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
18118
18119         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
18120
18121 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
18122
18123         * mini.c (mono_jit_runtime_invoke): Init class in this
18124         method instead of trusting mono_jit_compile_method to
18125         do the work (because wrappers can be in object class)
18126
18127 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
18130
18131         * basic-long.cs: New regression test.
18132
18133 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
18134
18135         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
18136         and div/rem checks.
18137
18138 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18139
18140         * Makefile.am: fix miguel's change to build mono statically against
18141         libmono (track build dependencies).
18142
18143 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18144
18145         * cfold.c: Some glib versions do not have G_MININT32.
18146
18147 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
18148
18149         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
18150         with precision of tan, atan, sin and cos, and implemented related
18151         regressions tests (fixes bug 54467, but one new problem appeared and
18152         is not fixed yet).
18153
18154 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18155
18156         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
18157
18158         * exceptions.cs: Add test for constant folding && division by zero.
18159
18160         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
18161         since driver.c is in libmono too, so the optimization was useless.
18162
18163         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
18164         variable to driver.c so the compiler can emit more efficient code to
18165         access them.
18166
18167 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18168
18169         * Makefile.am: don't distribute generated inssel.[ch] files.
18170
18171 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18172
18173         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
18174         into the default appdomain. Fixes #58707.
18175
18176         * jit-icalls.c: Remove the broken approximation for truncl, doing
18177         no conversion is better.
18178
18179         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
18180         Fixes #58863.
18181
18182 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18183
18184         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
18185         of the mcrxr instruction which is not available on some processors
18186         even if it's documented to be. Implement add and sub overflow correctly
18187         (still not complete for long unsigned). Speed up icalls a bit.
18188
18189 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
18190
18191         * mini.c (mono_jit_compile_method_with_opt): Make sure that
18192         we run .cctor in the current domain instead of target_domain.
18193         
18194         Fixes bug #58558, .cctor not being called in -O=shared.
18195
18196 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18197
18198         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
18199
18200 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
18201
18202         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
18203         which can be done with an imm8, do it that way.
18204         (mono_arch_output_basic_block): ditto for a jmp
18205         (mono_arch_emit_prolog): Computate maximum offset of a label.
18206
18207 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
18208
18209         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
18210         now tries to allocate prefered physical reg's for virtual
18211         regs. This reduces the number of emited spills/loads with
18212         20-30% on our core assemblies.
18213
18214 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18215
18216         * jit-icalls.c: truncl() is not needed and trunc() is
18217         the correct thing to do anyway (bug #58287).
18218
18219 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
18220
18221         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
18222         if available.
18223
18224 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18225
18226         * driver.c: enable loop optimizations by default.
18227
18228 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
18229
18230         * mini-x86.c: fix calc of max loop size when aligning loops start.
18231
18232 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
18235         the stack.
18236
18237 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18238
18239         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
18240         should set carry.
18241
18242         * basic-long.cs: Add tests for add/subtract of immediates with carry.
18243
18244         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
18245         
18246         * mini.c (inline_method): Allways inline some wrappers even if the cost
18247         is too large. Fixes #58785.
18248
18249         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
18250         
18251 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
18254         (crichton@gimp.org). Beginning of support for sparc/linux.
18255
18256         * mini-sparc.c: Optimize retrieval of LMF address.
18257
18258 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
18259
18260         * exceptions-ppc.c:  handle alloca in methods with clauses.
18261
18262 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
18263
18264         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
18265
18266 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18267
18268         * mini.c: Delegate most of the abort signal work to 
18269           mono_thread_request_interruption, which also handles Stop and Suspend
18270           states.
18271
18272 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18273
18274         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
18275         supports the save/restore lmf opcodes.
18276
18277 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
18280         by gcc-3.4 as well.
18281
18282         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
18283
18284 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
18287         methods which contain array accesses.
18288
18289         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
18290         boundaries. Fixes #58537.
18291
18292         * iltests.il: Add regression test for #58537.
18293
18294 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18295
18296         * mini-x86.c (mono_arch_local_regalloc): Last part of
18297         fix for bug #58633 (releasing register to early).
18298
18299 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
18300
18301         * basic-long.cs: Add new regression test.
18302
18303 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
18304
18305         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
18306         register too early on the chain.
18307
18308 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18309
18310         * mini.c (create_helper_signature): Use a helper function to reduce
18311         the code which needs to be written. Also set the calling convention of
18312         icalls on windows. Fixes #57840.
18313
18314 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
18315
18316         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
18317         exceptions-ppc.c: added helper function to get the instruction address
18318         from a signal handler context.
18319
18320 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18321
18322         * helpers.c: use g_get_tmp_dir. Invokes happyness 
18323         from gonzalo.
18324
18325 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18326
18327         * helpers.c: Add new env variable to pass args to objdump.
18328         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
18329
18330 2004-05-17  Radek Doulik  <rodo@ximian.com>
18331
18332         * Makefile.am (common_sources): added abcremoval.h so it get
18333         disted and daily mono packages on go-mono.com will build again
18334
18335 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
18336
18337         * abcremoval.c: Fixed coding style, added copyright header.
18338
18339         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
18340
18341         * mini.h: Added prototype for abc removal main function.
18342
18343         * build_relations_propagation_table.pl: Added copyright header.
18344
18345 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18346
18347         * basic-long.cs: reg test for complex ceq_long bug.
18348
18349 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
18350
18351         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
18352         reg in long and clob case (bug #58343). Fixed/added comments.
18353
18354 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18355
18356         * mini.c (mono_jit_runtime_invoke): Follow new convention
18357         of calling the invoke method with an function pointer.
18358
18359 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18360
18361         * ChangeLog: Fix author of memory leak patch.
18362
18363 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
18364
18365         * Makefile.am: fix make dist as well...
18366
18367
18368 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
18369
18370         * cfold.c: Made so that conversions from pointer to int4 are no-ops
18371         on archs where pointers are 4 bytes long.
18372
18373         * Makefile.am: Added abcremoval.c source file.
18374
18375         * abcremoval.c: Added abcremoval.c.
18376
18377         * abcremoval.h: Added abcremoval.h.
18378
18379         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
18380
18381         * inssel.brg: Enabled bounds check removal.
18382
18383         * mini.c: Added support for abcrem optimization.
18384
18385         * mini.h: Added abcrem optimization label.
18386
18387         * driver.c: Added support for abcrem optimization.
18388
18389         * propagated_relations_table.def: Added propagated_relations_table.def.
18390
18391 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
18392
18393         * mini.c, cfold.c: fix style.
18394
18395 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18396
18397         * mini.c: handle issue with the low-level implementation of
18398         some long opcodes (bug #54209).
18399
18400 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
18401
18402         * basic.cs: test for my new cmov stuff.
18403
18404 2004-05-13      Patrik Torstensson
18405
18406         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
18407         opt and added peephole documentation.
18408
18409 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18410
18411         * tramp-ppc.c: rewrote the generic trampoline code.
18412
18413 2004-05-11      Patrik Torstensson
18414
18415         * mini-x86.c: optimize long shl/shr asm code (one less branch)
18416
18417 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18418
18419         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
18420
18421         * mini.h mini.c dominators.c: Applied patch from Derek Woo
18422         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
18423
18424         * mini.c: Add new icalls for AsAny marshalling.
18425
18426 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
18427
18428         * tramp-ppc.c, mini-ppc.c: more cleanups.
18429
18430 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18431
18432         * mini.c: no warnings.
18433
18434 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18435
18436         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
18437
18438 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18439
18440         * mini.c: In the thread abort signal handler, if the thread is in the
18441         process of being stoped, don't throw the Abort exception, just stop the
18442         thread.
18443
18444 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
18445
18446         * tramp-ppc.c: removed old code.
18447
18448 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18449
18450         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
18451         do some simple speed optimizations on ppc.
18452
18453 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18454
18455         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
18456         and large offsets in load/store.
18457
18458 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18459
18460         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
18461         it causes regressions.
18462
18463 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
18464
18465         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
18466         support.
18467
18468 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18469
18470         * jit-icalls.c: remove warnings.
18471         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
18472         speedups for unsafe code.
18473
18474 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18475
18476         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
18477
18478 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * basic-calls.cs: Add new regression test.
18481
18482         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
18483         more portable.
18484
18485         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
18486
18487         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
18488         is no longer used.
18489
18490 2004-05-06      Patrik Torstensson
18491
18492         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
18493         long reg allocation in any reg (not only eax:edx) and implemented 
18494         long shl/shr ops in asm instead of helpers.
18495
18496 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18497
18498         * mini-sparc.h: Fix warnings.
18499
18500         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
18501         stack.
18502
18503         * mini-exceptions.c (mono_handle_exception): Call the filter in a
18504         separate statement for clarity.
18505
18506         * mini-sparc.c: Update status.
18507
18508 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
18509
18510         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
18511         here.
18512
18513 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18514
18515         * inssel-ppc.brg: another small pre-release workaround:
18516         we don't do overflow detection for long_sub_un.
18517
18518 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18519
18520         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
18521         (also works around a weird ppc bug: 57957).
18522
18523 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
18524
18525         * tramp-ppc.c: trampoline fixes.
18526
18527 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
18528
18529         * mini-ppc.c: fixed typos.
18530
18531 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18532
18533         * mini-ppc.c, exceptions-ppc.c: more code saves registers
18534         at the top of the stack. Fixed typos. Use a frame registers
18535         for all the methods with exception clauses.
18536
18537 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18538
18539         * exceptions-ppc.c: restore fp registers.
18540
18541 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
18542
18543         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
18544         order from the stack top (moved the stack room to save the
18545         return value for trace after the param area). Fixed corruption
18546         in restoring registers on unwind.
18547
18548 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18549
18550         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
18551
18552 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18553
18554         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
18555         and prolog/epilog for methods that use it. Allow
18556         enough param area room for varargs methods. Fix miguel's
18557         breakage in exception handling.
18558
18559 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
18560
18561         * Makefile.am: run genmdesc only on current arch.
18562
18563 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18564
18565         * exceptions-x86.c:
18566         * mini-x86.h: fix the build on windows.
18567
18568 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * 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.
18571
18572         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
18573
18574         * mini-exceptions.c: New file.
18575         
18576         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
18577         Move some parts of the x86 exception handling code to an 
18578         arch-independent file so it can be shared with other ports.
18579
18580 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18581
18582         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
18583
18584 2004-04-26  David Waite  <mass@akuma.org>
18585
18586         * driver.c: remove comma from end of enumeration declaration
18587
18588 2004-04-26  Jackson Harper  <jackson@ximian.com>
18589
18590         * driver.c: parse config file before loading first assembly. This
18591         allows the user gac to be enabled/disabled. 
18592         
18593 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
18594
18595         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
18596         simpler mechanism: we do not care what is encoded initially
18597         (branch absolute or relative), we care about the code and its
18598         target.  I kept the old code for reference for now.
18599
18600         The new code tries first to determine if the jump is anywhere in
18601         the -/+32 absolute meg range, if it succeeds, it encodes using the
18602         absolute branch;  If not, it tried to find something in the
18603         relative range, if not, it uses the handle_thunk code. 
18604
18605 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
18606
18607         * exceptions-ppc.c: use the correct ip register on macosx.
18608
18609 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
18610
18611         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
18612
18613 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
18614
18615         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
18616         Raise exception on integer divide by zero by hand since the hw
18617         doesn't support it. Handle NaNs in FP compares.
18618
18619 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18620
18621         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
18622         code reducing duplication between the platforms and enabled
18623         signal exception handling (on linux for now).
18624
18625 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
18626
18627         * exceptions-ppc.c: more macosx support.
18628
18629 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18630
18631         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
18632
18633 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18634
18635         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
18636
18637 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18638
18639         * iltests.il: more tests.
18640
18641 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
18644         vars as well.
18645
18646 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18647
18648         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
18649
18650 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * liveness.c: Mark variables as volatile in all basic blocks reachable
18653         from exception clauses.
18654
18655 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
18658         inlining.
18659
18660 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18661
18662         * iltests.il, basic.cs: more tests for regalloc.
18663
18664 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18665
18666         * iltests.il: Some tests for register allocation modifications
18667         I have locally.
18668
18669 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
18670
18671         * exceptions.cs: Add regression test for bug #56782.
18672
18673         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
18674         original stack trace if an exception is rethrown. Fixes #56782. Oh,
18675         the beauty of fixing the same thing in 5 different files...
18676
18677 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
18678
18679         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
18680         methods.
18681
18682 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18683
18684         * mini.c: Add support for STRWLPARRAY marshalling convention.
18685
18686 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18687
18688         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
18689         to init the context to setup the regs pointer).
18690
18691 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
18692
18693         * exceptions-ppc.c: more exceptions work.
18694
18695 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18696
18697         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
18698         not allowed.
18699
18700 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18701
18702         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
18703         can use the memory directly.
18704
18705         * cpu-pentium.md: Update documentation from a post from Zoltan. 
18706
18707         add x86_add_membase, x86_sub_membase, x86_mul_membase
18708
18709 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18710
18711         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
18712         GENERAL_REGS they were also hardcoded for all PPC ports.
18713
18714         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
18715
18716         Remove hard-coded limit for floating point registers, use
18717         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
18718
18719         Notice that in MacOS X calling conventions you can fit a lot more
18720         floating point values in registers, so I should update the PInvoke
18721         test to excercise the passing of floating point values on the
18722         stack (currently broken).
18723         
18724 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
18725
18726         * tramp-ppc.c (create_trampoline_code): Added
18727         JUMP_TRAMPOLINE_SIZE. 
18728         (ppc_magic_trampoline): Follow the pattern from
18729         x86_magic_trampoline: if code is set to zero, return. 
18730         (create_trampoline_code): Always pass MonoMethod to the jump
18731         trampoline, before it was passing a null.
18732         (mono_arch_create_jump_trampoline): Implement the jump stub, could
18733         share the code with mono_arch_create_jit_trampoline. 
18734
18735         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
18736         implemented.
18737         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
18738         implemented.  
18739
18740         * cpu-g4.md: Added length for jmp instruction, the worst case
18741         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
18742         for save_lmf).
18743
18744 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
18747
18748 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
18749
18750         * mini.c: Only set bblock->real_offset when adding a new bblock, and
18751         before each IL instruction.
18752
18753         * mini.c (CEE_BOX): Fix warnings.
18754
18755 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18756
18757         * mini.c: removed a few unused vars and extra whitespace.
18758
18759 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
18760
18761         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
18762         checks.
18763         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
18764         index.
18765         (OP_GETCHR): use the above
18766         (CEE_LDELEMA): use the above.
18767
18768         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
18769         version of the generic impl.
18770         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
18771         (CEE_LDELEMA): use the above.
18772
18773 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
18776         Fixes #56317.
18777
18778         * iltests.il: Added new regression test for #56317.
18779
18780 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
18783         under NetBSD. Fixes #56450.
18784
18785         * liveness.c (update_gen_kill_set): Fix previous patch.
18786
18787 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18788
18789         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
18790
18791 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18792
18793         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
18794         ldsfld and ldsflda.
18795
18796         * inssel-sparc.brg: Add more optimizations.
18797
18798         * mini-sparc.c: Replace multiply/divide with shifts if possible.
18799
18800 2004-04-01  Martin Baulig  <martin@ximian.com>
18801
18802         * mini.c (handle_box): New static function; moved the
18803         implementation of CEE_BOX here.
18804         (mono_method_to_ir): Added `constrained_call' variable.
18805         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
18806         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
18807         mono_method_get_constrained() to get the method.
18808
18809 2004-04-01  Martin Baulig  <martin@ximian.com>
18810
18811         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
18812         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
18813         (mono_method_to_ir): We don't need these macros anymore since
18814         mono_class_get_full() already takes care of it. 
18815
18816 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18817
18818         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
18819         use @function (as doesn't accept #function here) and check the return
18820         value of system and stop if fails.
18821
18822 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18823
18824         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
18825
18826 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
18829
18830         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
18831
18832         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
18833         #56223.
18834
18835         * basic-long.cs: Add test for negation of Int64.MinValue.
18836
18837 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini-sparc.c: Update status.
18840
18841         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
18842
18843         * exceptions-sparc.c: Fix return value in filters.
18844
18845         * inssel-sparc.brg: Fix register allocation in some rules.
18846
18847 2004-03-28  Martin Baulig  <martin@ximian.com>
18848
18849         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
18850         if neccessary.  
18851
18852 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * mini-x86.c (mono_arch_patch_code): Fix warnings.
18855         
18856         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
18857         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
18858         remove unused conv_u4 opcode.
18859
18860         * mini-x86.c: Remove valgrind workaround since it slows down things
18861         even when mono is not run under valgrind.
18862
18863 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini-sparc.c: Update status.
18866
18867         * inssel-sparc.brg: Add some optimizations.
18868
18869         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
18870         future delay slot filling. Add support for varargs, tail calls and JMP.
18871
18872         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
18873         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
18874
18875         * inssel.brg: Fix register allocation in OP_ARGLIST.
18876
18877         * inssel.brg: Fix warnings.
18878
18879 2004-03-25  Martin Baulig  <martin@ximian.com>
18880
18881         * mini.c (inflate_generic_field): Removed.
18882         (mini_get_method): Removed, use mono_get_method_full(),
18883         (mini_get_class): Removed, use mono_class_get_full().
18884         (mono_method_to_ir): Pass our generic context to
18885         mono_field_from_token().        
18886
18887 2004-03-25  Martin Baulig  <martin@ximian.com>
18888
18889         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
18890         of a `MonoMethod *'.
18891         (mini_get_method): Take a `MonoGenericContext *' instead
18892         of a `MonoMethod *'.
18893         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
18894         a new local variable called `generic_context' which holds the
18895         current `MonoGenericContext *'; use it to lookup things.
18896
18897 2004-03-24  Martin Baulig  <martin@ximian.com>
18898
18899         * mini.c (mini_get_class): New static method; if we're inside a
18900         generic instance, inflate the class if neccessary.
18901         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
18902
18903 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * iltests.il: New regression test for #55976.
18906
18907         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
18908         #55976.
18909
18910 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18911
18912         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
18913         output.
18914
18915 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
18916
18917         * liveness.c: Consider SSA stores as well as loads when making vars
18918         volatile.
18919
18920         * exceptions.cs: New regression tests for register allocation.
18921         
18922 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18923
18924         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
18925         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
18926           domain lock only to protect puntual access to data structures.
18927           Added access lock for sighash, jit_icall_hash_name, 
18928           jit_icall_hash_addr and domain->code_mp.
18929
18930 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
18931
18932         * driver.c: Print SIGSEGV handling method.
18933
18934         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
18935
18936         * mini.c (setup_jit_tls_data): Handle case when this is called
18937         multiple times for a thread.
18938
18939         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
18940         is different from fbxx_un. Fixes #54303. Also use constants instead of
18941         magic numbers in a lot of places.
18942
18943 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * exceptions.cs: Fix cctor test when --regression is used.
18946
18947 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
18948
18949         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
18950         for Linux/ppc.
18951
18952 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18953
18954         * inssel-ppc.brg: fixed register assignments for some rules.
18955
18956 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18957
18958         * exceptions.cs: Add test for exceptions in static constructors.
18959
18960         * mini.c (mono_jit_compile_method_with_out): Move the calling of
18961         static constructors outside the domain lock. Fixes #55720.
18962
18963 2004-03-17  Martin Baulig  <martin@ximian.com>
18964
18965         * mini.c (get_generic_field_inst): Removed, this'll never happen.
18966         (inflate_generic_field): Take the `MonoMethod *' instead of the
18967         `MonoClass *' and added support for generic method.
18968         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
18969         have a `field->parent->gen_params', only inflate the field if it's
18970         an open constructed type.
18971
18972 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
18975         exception object instead of the preconstructed ones.
18976
18977 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18978
18979         * mini.c: reverted changed to sigsegv_signal_handler commited
18980         accidentally in the previous patch.
18981
18982 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18983
18984         * mini.c:
18985         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
18986         running --aot with an old assembly.
18987
18988 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
18991         point values.
18992
18993         * mini-sparc.c: Add support for v9 branches with prediction.
18994
18995 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
18996
18997         * mini.c (mini_init): #warning is GNUC only
18998
18999         * mini-sparc.h: implement __builtin_frame_address
19000         and __builtin_return_address for Sun C compiler
19001
19002 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
19005
19006 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * basic-calls.cs: Add test for unaligned byref long argument passing.
19009
19010         * mini-ops.h: Add sparcv9 compare and branch instructions.
19011
19012         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
19013         v9 instructions if we have a v9 cpu.
19014
19015         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
19016         registers for global allocation.
19017
19018         * exceptions-sparc.c: Fixes.
19019         
19020 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
19021
19022         * liveness.c (mono_analyze_liveness): Optimized version.
19023
19024         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
19025
19026         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
19027         sparc work.
19028
19029         * basic-float.cs basic-calls.cs: New regression tests.
19030
19031 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
19032
19033         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
19034         sigaltstack implementation.
19035
19036         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
19037         
19038         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
19039         stuff if SIGSEGV_ON_ALTSTACK is not defined.
19040
19041 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * mini.c: Fix warnings.
19044         
19045         * mini.c (mono_resolve_patch_target): New function which contains the
19046         arch independent part of the patching process.
19047
19048         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
19049         patching code to a separate function.
19050
19051 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
19052
19053         * mini.c (add_signal_handler): ifdef out on Windows
19054
19055 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
19056
19057         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
19058         cpu-sparc.md: Add exception handling support + other fixes.
19059
19060         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
19061         typed GC detection in --version.
19062
19063         * basic.cs exceptions.cs: New regression tests.
19064
19065         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
19066         the arch specific code can store data during a compilation.
19067
19068         * mini-ops.h: Add OP_SETFRET.
19069
19070         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
19071         function, register a separate icall for each arity, so the icalls can
19072         get a wrapper.
19073         
19074         * mini.c (mono_print_tree): Print negative offsets in a more readable
19075         form.
19076         
19077         * mini.c: Make signal handling work on sparc.
19078         
19079         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
19080
19081         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
19082
19083         * jit-icalls.c: Emulate truncl by aintl on solaris.
19084
19085         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
19086
19087 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
19090
19091 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19092
19093         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
19094         a MarshalByRef type, inline a method that performs the check, taking into
19095         account that the object can be a proxy. Also implemented tow new opcodes:
19096         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19097         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
19098         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
19099
19100 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19101
19102         * mini-ppc.c: if a relative branch displacement is too big
19103         but it points to and area reachable with an absolute branch, 
19104         avoid the thunks.
19105
19106 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19107
19108         * mini.c: optimize small copies in cpblk.
19109
19110 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * basic-calls.cs basic-float.cs: New regression tests.
19113
19114         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
19115         negative offsets from %fp. Implement localloc. Fix local register 
19116         allocation. Fix the case when the this argument needs to be saved to
19117         the stack. Implement some missing opcodes.
19118
19119 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * mini.c (mini_method_compile): Reenable global regalloc in methods
19122         with exception handlers.
19123
19124         * linear-scan.c (mono_varlist_sort): Fix warning.
19125
19126         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
19127
19128         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
19129         regalloc costs.
19130
19131         * liveness.c: Make all variables uses in exception clauses volatile, to
19132         prevent them from being allocated to registers. Fixes #42136.
19133
19134 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
19135
19136         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
19137         causes regressions.
19138
19139         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
19140         argument to mono_arch_regalloc_cost.
19141
19142         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
19143         precisely.
19144
19145 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
19148         Make the cost of allocating a variable to a register arch dependent.
19149
19150         * basic-calls.cs: Fix compilation of tests.
19151         
19152         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
19153         helper function to cut back on the number of #ifdefs needed.
19154
19155         * mini-ppc.c: Fix compilation.
19156
19157         * basic-calls.cs: New regression tests.
19158
19159         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
19160
19161         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
19162         of l0 since that is callee saved.
19163
19164         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
19165         to virtual calls.
19166
19167         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
19168         of delay instruction.
19169
19170         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
19171
19172         * mini.h (MonoCallInst): Add 'virtual' flag.
19173
19174         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
19175
19176 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * *.cs: New regression tests.
19179
19180         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
19181         work.
19182
19183         * mini.c (mono_runtime_install_handlers): Fix build.
19184
19185         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
19186         'signal_stack_size' members.
19187
19188         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
19189         alternate signal stack.
19190
19191         * exceptions-x86.c: Add stack overflow handling.
19192
19193         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
19194         functions to arch independent code.
19195
19196         * mini.c (mono_print_tree): Print more detailed info for load_membase
19197         opcodes.
19198         
19199 2004-02-23  Martin Baulig  <martin@ximian.com>
19200
19201         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
19202
19203 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19204
19205         * mini-x86.c: fixed reg allocation for div/rem.
19206
19207 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
19208
19209         * driver.c (mono_main): Report some configuratio options on --version.
19210
19211 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
19212
19213         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
19214         low in the address space. Correctly flush memory in thunks where we
19215         output native code.
19216
19217 2004-02-20  Martin Baulig  <martin@ximian.com>
19218
19219         * mini.c (mini_get_method): New static method; inflate all generic
19220         methods and methods in open generic instances.
19221         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
19222         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
19223
19224 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
19227
19228         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
19229
19230 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
19231
19232         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
19233
19234         * mini-sparc.c (flushi mono_arch_output_basic_block): make
19235         it compile using Sun's compiler.
19236
19237 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * 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.
19240
19241         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
19242
19243 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19244
19245         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
19246         code.
19247         * mini-ppc.c: handle calls outside of the allowed range with thunks
19248         allocated using the code manager.
19249         * tramp-ppc.c: use the code manager to hold generated native code.
19250         Fixed the magic trampoline to just patch vtable entries.
19251
19252 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
19253
19254         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
19255         independent file.
19256
19257 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
19258
19259         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
19260         PPC.
19261
19262         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
19263         if we have a working __thread implementation.
19264
19265         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
19266         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
19267
19268 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
19269
19270         * mini-x86.c: Fix compilation under gcc 2.
19271         
19272 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19273
19274         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
19275         contains a call to the wrapped function.
19276
19277         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
19278         OP_<CALL>_IMM opcodes, and use them under X86.
19279         
19280         * mini.c (mono_jit_find_compiled_method): Fix warning.
19281
19282         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
19283
19284         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
19285
19286         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
19287         functionality to mini.c.
19288
19289         * mini.c (mono_create_jump_trampoline): New function to create a jump
19290         trampoline. Return a compiled method instead of a trampoline if it
19291         exists. Add a cache for jump trampolines.
19292
19293         * mini.c (mono_jit_find_compiled_method): New function to return a
19294         compiled method if it exists.
19295
19296         * mini-x86.c: Call mono_create_jump_trampoline instead of 
19297         mono_arch_create_jit_trampoline.
19298
19299         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
19300         a jump trampoline. Fixes #52092.
19301         
19302 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19303
19304         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
19305         which is not up-to-date. Add check_corlib_version () instead.
19306
19307         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
19308         have to call it.
19309         
19310         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
19311         since newer valgrind versions do not need it.
19312
19313         * mini.c (mono_jit_compile_method_with_opt): New helper function to
19314         compile a method with a given set of optimizations.
19315
19316         * mini.c: Compile icall wrappers on-demand instead of at startup.
19317
19318         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
19319         wrapper for an icall.
19320
19321 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
19324         #54063.
19325
19326         * iltests.il: Add test for non-empty stack before switch instruction.
19327
19328 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * mini.c: Add support for new stringbuilder marshalling conventions.
19331
19332         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
19333
19334 2004-02-01  Martin Baulig  <martin@ximian.com>
19335
19336         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
19337         in `ginst->mtype_argv'.
19338
19339 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
19340
19341         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
19342         facilitate grepping.
19343
19344 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
19345
19346         * mini.c: fixed buglet in initobj generic implementation for references.
19347
19348 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
19349
19350         * Makefile.am: make the version script conditional.
19351         * jit-icalls.c: handle missing truncl().
19352
19353 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * exceptions.cs: Add more tests for double->int conversion.
19356
19357         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
19358         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
19359
19360 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
19361
19362         * driver.c: make --verbose --version emit an error
19363         if the loaded corlib doesn't match the runtime version.
19364
19365 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19366
19367         * mini-ppc.h: export ppc_patch().
19368         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
19369         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
19370         on par or better than on MacOSX.
19371
19372 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
19375         mono_lookup_pinvoke_call.
19376
19377         * mini-x86.c: Under windows, the default pinvoke calling convention is
19378         stdcall. Fixes #52834.
19379
19380         * mini.c (optimize_branches): Add an upper bound to the number of
19381         iterations to prevent infinite loops on strange loops. Fixes #53003.
19382
19383 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
19386         and ISINST. Fixes #52093.
19387
19388         * objects.cs (test_0_vector_array_cast): New tests.
19389         
19390 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
19393         checking in Array.Set ().
19394
19395         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
19396         #52590.
19397
19398         * object.cs (test_0_multi_array_cast): New regression test.
19399
19400 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
19401
19402         * exceptions-ppc.c: fix build on Linux/PPC.
19403
19404 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
19407         running under valgrind.
19408         (x86_magic_trampoline): Fix build bustage.
19409
19410         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
19411         negative values as well. This is needed for the encoding of the line number
19412         info, since sometimes the line numbers are not in increasing order.
19413
19414 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19415
19416         * cpu-pentium.md (localloc): Increase the size of the localloc 
19417         instruction since it is a loop under Win32.
19418
19419         * debug-mini.c (record_line_number): Get rid of unneccesary memory
19420         allocation.
19421
19422 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
19425         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
19426         Max Horn (max@quendi.de). Fix file names in comments.
19427
19428 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
19429
19430         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
19431         avoid stack overflow.
19432         (replace_usage): Avoid uninitialized variable warnings.
19433
19434         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
19435         and taking the address of valuetype variables.
19436
19437 2004-01-03  Patrik Torstensson
19438
19439         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
19440         for other purposes than FP later on.
19441
19442 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
19443
19444         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
19445         of tail calls.
19446
19447 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19448
19449         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
19450
19451 2003-12-30  Patrik Torstensson <p@rxc.se>
19452
19453         * mini-x86.h: Decreased number of availiable fp regs.
19454         Solves corner cases with FP spilling.
19455
19456 2003-12-23  Patrik Torstensson <p@rxc.se>
19457
19458         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
19459         for floating point stack tracking / spilling on x86. 
19460         Fixes bug #49012.
19461         
19462         * basic-float.cs: added float mul overflow test.
19463
19464 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
19467
19468 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19469
19470         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
19471         supports for cond branches that overflow the immediate
19472         overflow offset. mcs can compile simple programs.
19473
19474 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
19475
19476         * exceptions-ppc.c: exception handling support wip:
19477         finally handlers get run on exception.
19478
19479 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19480
19481         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
19482         profiling.
19483
19484 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19485
19486         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
19487         initial support for stack walking and unwinding.
19488
19489 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
19490
19491         * driver.c (mono_main): Make corlib-out-of-sync message more 
19492         descriptive. Also remove verify_corlib call.
19493
19494 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19495
19496         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
19497         not overlap with other call's arguments, too.
19498
19499 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
19500
19501         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
19502         move to arch-specific code the choice of arch-specific
19503         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
19504         * mini.c: ensure emulation calls will not interleave
19505         with other calls.
19506
19507 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
19508
19509         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
19510         the magic trampoline stack frame is dropped before executing
19511         the new method.
19512
19513 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
19514
19515         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
19516         and integer to fp conversions. Added support for overflowing
19517         arguments on the stack. Reserve a couple more registers as temps.
19518         Added support for aot compilation (as output still needs to be
19519         tweaked, though).
19520
19521 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19522
19523         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
19524         Don't overwrite return register in some corner cases.
19525
19526 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
19529         static constructors when AOT compiling.
19530
19531         * driver.c (mono_main): Call mono_check_corlib_version.
19532
19533 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19534
19535         * cpu-g4.md, basic.cs: fixed div target register.
19536
19537 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
19538
19539         * mini-ppc.c, basic.cs: shl_imm fix with test.
19540
19541 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19542
19543         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
19544         structures by value. Misc fixes.
19545         * objects.cs: more tests.
19546
19547 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
19548
19549         * mini-ppc.c: lconv.ovf.i implemented.
19550
19551 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19552
19553         * mini.c:
19554         (mini_init): don't error out if someone already called g_thread_init.
19555
19556 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
19557
19558         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
19559         to be any type per the spec. Fix abnormal memory usage when
19560         the same object is repeatedly thrown.
19561
19562 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
19563
19564         * mini.c: check for overruns in IL code.
19565
19566 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19567
19568         * TODO: Add/remove some todo entries.
19569
19570 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19571
19572         * driver.c (mono_main): Call mono_verify_corlib.
19573
19574 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19575
19576         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
19577         This has been moved to mini.c
19578         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
19579         type being casted is marshalbyref it could be a proxy, so instead of
19580         emitting the type check code, emit a call to a runtime method that will
19581         perform the check by calling CanCastTo if needed.
19582
19583 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
19584
19585         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
19586         methods with large stack frames under Win32.
19587
19588 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * Makefile.am: Distribute regression tests.
19591
19592         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
19593         at the end instead of inserting each variable into the sorted list.
19594
19595         * linear-scan.c (mono_varlist_sort): New helper function.
19596         
19597 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
19598
19599         * mini.c: ensure arguments and locals are within bounds.
19600
19601 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
19602
19603         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
19604         related fixes.
19605
19606 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * mini.c (mono_cprop_copy_values): Fix crash.
19609
19610         * aot.c: Set verbosity back to 0.
19611         
19612 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19613
19614         * regalloc.c: complete memory leak fix by Laurent Morichetti
19615         (l_m@pacbell.net).
19616
19617 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * driver.c (main_thread_handler): Revert the previous patch.
19620
19621         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
19622         under valgrind.
19623
19624         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
19625         memory from the memory pool.
19626
19627         * driver.c (main_thread_handler): Turn on all optimizations when
19628         --aot is used.
19629
19630         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
19631         an array for better performance.
19632
19633         * regalloc.c (mono_regstate_assign): Fix memory leak.
19634
19635         * debug-mini.c (mono_debug_serialize_debug_info): New function to
19636         serialize the debug info.
19637
19638         * debug-mini.c (mono_debug_add_aot_method): New function to load the
19639         debug info from the serialized representation.
19640
19641         * aot.c: Save debug info into the generated file and load it when 
19642         loading a method.
19643
19644         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19645
19646 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19647
19648         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
19649         More FP-related fixes.
19650
19651 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
19652
19653         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
19654         and register allocation buglet. Hello world now runs.
19655
19656 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
19657
19658         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
19659         * tramp-ppc.c: fixed class init trampoline.
19660         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
19661
19662 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19663
19664         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
19665         mini.c: more ppc changes/fixes.
19666
19667 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
19670         Also optimize the case when the arguments are the same in the caller 
19671         and in the callee.
19672
19673         * iltests.il: Add tests for tail calls with valuetype arguments.
19674
19675 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19676
19677         * mini-ppc.c: fixes for struct return type.
19678
19679 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
19680
19681         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
19682         mono_spillvar_offset() to arch-specific code.
19683
19684 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
19685
19686         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
19687
19688 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * exceptions-x86.c: Fix stack space leaks.
19691         
19692         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
19693         registers from the lmf if the method has save_lmf set.
19694
19695 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
19696
19697         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
19698         of icall wrappers into InvokeInDomain, since these are now per-domain.
19699
19700 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
19701
19702         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
19703         make some opcode emulation and intrinsic ops enabled/disabled 
19704         according to the architecture. More fixes.
19705
19706 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
19707
19708         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
19709
19710 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
19711
19712         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
19713         arch-specific handling for 'this' and struct return type to
19714         arch-specific code.
19715
19716 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19717
19718         * aot.c: prevent divide by zero error when reporting (it happened with
19719         Accessibility.dll).
19720
19721 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
19722
19723         * mini.h (inst_switch): Remove unused macro.
19724
19725 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19726
19727         * aot.c:
19728         (load_aot_module): free 'info->methods' and 'info' properly. No more
19729         "free(): invalid pointer blah" messages when you have an old aot
19730         compiled assembly.
19731
19732 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
19733
19734         * jit-icalls.c, mini.c: Added support for context static fields.
19735
19736 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * mini.c (mono_method_blittable): Methods which set LastError are not 
19739         blittable either. Fixes #51108.
19740         
19741 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
19742
19743         * mini.c: flush icache.
19744         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
19745
19746 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
19749
19750 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
19753         safe on IA32.
19754
19755         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
19756         vararg calls.
19757
19758         * inssel.brg (CEE_MKREFANY): Fix AOT case.
19759
19760 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
19761
19762         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
19763         instruction when the result is discarded.
19764
19765         * iltests.il (test_0_div_regalloc): New regression test.
19766
19767         * arrays.cs: Fix compilation error.
19768
19769 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
19770
19771         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
19772         float rules to inssel-x86.brg: sane architectures with FP registers
19773         don't need to implement these rules.
19774
19775 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
19776
19777         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
19778
19779 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
19780
19781         * mini.h, inssel-long32.brg: fixed endianess issues in int64
19782         implementation of 32 bit systems.
19783
19784 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
19785
19786         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
19787         (Jeroen Zwartepoorte).
19788
19789 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
19792         the caller and the callee matches.
19793         
19794         * mini.c (mono_method_to_ir): Add comment.
19795
19796         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
19797         signbit is missing on some platforms.
19798
19799 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
19802
19803         * mini.c (setup_jit_tls_data): Call the new function.
19804         
19805         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
19806
19807         * mini-x86.c: Add experimental support for fast access to the lmf
19808         structure under NPTL/Linux 2.6.x.
19809
19810 2003-11-06  Martin Baulig  <martin@ximian.com>
19811
19812         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
19813         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
19814         the debugger.
19815
19816 2003-11-02  Martin Baulig  <martin@ximian.com>
19817
19818         * mini.c (inflate_generic_field): New static method.
19819         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
19820         generic instance and the field is declared in a generic type, call
19821         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
19822
19823 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * mini.h mini.c (mono_method_same_domain): New function to return
19826         whenever the caller and the callee are in the same domain.
19827
19828         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
19829
19830 2003-10-30  Martin Baulig  <martin@ximian.com>
19831
19832         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
19833         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
19834         method parameters.
19835         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
19836         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
19837
19838 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
19839
19840         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
19841         propagation.
19842
19843         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
19844         object here, so it is in the correct appdomain etc.
19845
19846 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
19849         already done.
19850         (mono_method_to_ir): Avoid freeing the type created returned from
19851         mono_type_create_from_typespec, since it is put into an internal cache
19852         by the function. Fixes pointer.exe.
19853
19854         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
19855         trampolines for icalls and pinvokes as well. Fixes #33569.
19856
19857 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * mini.c: Update after appdomain changes.
19860
19861         * mini.c (mono_jit_compile_method_inner): Allways compile native
19862         method wrappers in the root domain, since there can only be one
19863         instance of them, whose address is stored in method->info.
19864
19865 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
19868         environment variable. Instead detect automatically whenever running
19869         under valgrind using the magic macro RUNNING_ON_VALGRIND from
19870         valgrind.h.
19871
19872 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
19873
19874         * trace.c, trace.h: New files that implement the new trace option
19875         parsing. 
19876
19877         * driver.c: Document new --trace options.
19878
19879         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
19880         mini-x86.c: Apply:
19881
19882         -       if (mono_jit_trace_calls)
19883         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
19884
19885         * mini.h: prototypes.
19886         
19887 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
19888
19889         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
19890
19891         * mini.c inssel.brg: Implement typedefbyref opcodes.
19892
19893         * mini.c (mono_jit_compile_method): Remove unused local variable.
19894
19895         * mini.c (mono_jit_compile_method_inner): Ditto.
19896         
19897 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * tramp-x86.c (x86_class_init_trampoline): Fix build.
19900         
19901         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
19902
19903 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini.c (mono_no_aot): Remove unused global variable.
19906
19907         * mini.c: Thread safety fixes.
19908
19909 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * mini.c (mono_create_class_init_trampoline): Add a lock around
19912         class_init_hash_addr.
19913
19914         * arrays.cs (test_0_newarr_emulation): Add new regression test for
19915         #30073.
19916
19917         * mini.c: Decompose the NEWARR instruction before decomposing its
19918         arguments. Fixes #30073.
19919
19920 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
19923         convention.
19924
19925 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19926
19927         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
19928
19929         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
19930
19931         * driver.c: Add support for compiling icall wrappers to --compile.
19932
19933 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19934
19935         * inssel.brg: The empty value in class->interface_offsets is -1, not
19936         0. Fixes #49287.
19937
19938 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19939
19940         * objects.cs: New test for 'is' operator on an array of interfaces.
19941
19942 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * tramp-ppc.c: update trampoline code to support jumps
19945         and class initialization.
19946
19947 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
19950
19951         * inssel.brg (OP_UNBOXCAST): Fix #46027.
19952
19953         * inssel.brg (OP_UNBOX): Remove unused rule.
19954
19955         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
19956         region instead of one for each method. Fixes #47813.
19957
19958 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * exceptions.cs (test_0_nested_finally): New regression test for
19961         nested exception handlers.
19962
19963         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
19964
19965         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
19966
19967         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
19968         inlining.
19969
19970         * mini.c (mono_method_check_inlining): Make the inlining limit 
19971         configurable by an environment variable.
19972         
19973         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
19974
19975         * mini.h: Bump AOT file version.
19976
19977         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
19978         token, store the image along with the token, since the token might not 
19979         refer to the same image as the method containing the relocation, 
19980         because of inlining.
19981
19982 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
19983
19984         * mini.c (mono_precompile_assemblies): New function to compile
19985         all methods in all loaded assemblies.
19986
19987         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
19988
19989         * regalloc.h regalloc.c (MonoRegState): Change the type of 
19990         iassign and fassign to int*, since they can contain large negative
19991         values if the register is spilled. Also added some comments. Fixes
19992         #45817.
19993
19994         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
19995         under Win32. Fixes #42964.
19996
19997 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
20000
20001         * aot.c: Added support for AOT compiling methods which contain calls
20002         to wrappers. Currently, only remoting-invoke-with-check wrappers are
20003         handled.
20004         
20005         * driver.c (compile_all_methods): Run the compilation in a thread
20006         managed by mono. Fixes #44023.
20007
20008         * mini.c (mono_codegen): Print full method name in verbose output.
20009
20010         * mini-x86.c (mono_arch_patch_code): Fix warning.
20011         
20012         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
20013         jumps, since the method we are jumping to might be domain-specific.
20014
20015         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
20016
20017 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20018
20019         * inssel.brg: string chars are unsigned.
20020
20021 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
20022
20023         * TODO: New todo item.
20024
20025         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
20026         which calls mono_runtime_class_init and patches the call site to
20027         avoid further calls.
20028         (mono_arch_create_class_init_trampoline): New arch specific function 
20029         to create a class init trampoline.
20030         (create_trampoline_code): Generalized so it can create
20031         class init trampolines as well.
20032
20033         * mini.c (helper_sig_class_init_trampoline): New helper variable.
20034         (mono_create_class_init_trampoline): New function to create and cache
20035         class init trampolines.
20036         (mono_find_class_init_trampoline_by_addr): New function to lookup the
20037         vtable given the address of a class init trampoline. Used by the
20038         patching process.
20039         (mono_codegen): Generate a call to a trampoline instead of
20040         mono_runtime_class_init in LDSFLD[A].
20041         (mono_codegen): Add relocations for the new trampoline.
20042         
20043         * mini.h mini-x86.c aot.c: Added a new relocation type: 
20044         MONO_PATCH_INFO_CLASS_INIT.
20045
20046         * mini.h: Bump AOT version number.
20047
20048         * aot.c: Create a copy of the loaded code instead of using the original
20049         so methods which call each other will be close in memory, improving
20050         cache behaviour.
20051         
20052         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
20053         patch since it breaks the regression tests.
20054         
20055         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
20056         for the register saving instruction sequence since the 
20057         frame_state_for function in glibc 2.3.2 don't seem to detect it.
20058
20059 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
20060
20061         * TODO: Fix todo item && remove another.
20062
20063 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
20064
20065         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
20066         previous checkin.
20067
20068         * aot.c: Moved the check for MONO_LASTAOT into the initialization
20069         function of the module.
20070
20071         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
20072         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
20073         --no-aot command line option.
20074
20075 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
20076
20077         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
20078         by Bernie Solomon (bernard@ugsolutions.com).
20079
20080         * inssel.brg: Refactor the interface offset table related code into
20081         its separate functions and add support for the AOT case.
20082
20083 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * aot.c (mono_aot_get_method_inner): Fix memory leak.
20086         
20087         * aot.c: Added mono_aot_verbose variable and made all debugging
20088         output depend on the value of this variable.
20089
20090         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
20091         method_label and info_label.
20092
20093         * mini.h mini-x86.c aot.c: Added a new relocation type 
20094         MONO_PATCH_INFO_IID for klass->interface_id.
20095
20096         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
20097         the MonoJitInfo structure.
20098
20099         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
20100         a non-root appdomain in shared mode.
20101
20102 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20103
20104         * aot.c: make aot loader less verbose. Remove free of unused variable.
20105
20106 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
20109
20110         * .cvsignore: Added *.dll.
20111
20112         * mini.c (mono_print_tree_nl): New function callable while debugging.
20113
20114         * mini.c (mono_print_code): Export this.
20115
20116         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
20117         patched code.
20118
20119 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * mini.h (MonoCompile): Added 'jit_info' field.
20122
20123         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
20124         the cfg structure, since it is needed by the AOT compiler.
20125
20126         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20127
20128         * aot.c: A major rewrite. Changes include:
20129         - save exception tables for methods which have them.
20130         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
20131         to g_module_symbol.
20132         - reworked the file format so it is now much smaller and needs
20133         fewer relocation entries.
20134         
20135 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * aot.c (load_aot_module): Fix build bustage on platforms without
20138         Boehm GC.
20139
20140 2003-09-04  Martin Baulig  <martin@ximian.com>
20141
20142         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
20143
20144 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * TODO: Some new optimization ideas.
20147
20148         * aot.c: Move AOT module loading logic here from mono_assembly_open.
20149
20150         * aot.c: Save the optimization flags used to compile the code into
20151         the AOT module.
20152
20153         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
20154         support emitting domain specific code.
20155         
20156         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
20157         no longer domain neutral. It can be made domain neutral by compiling 
20158         with --optimize=shared.
20159
20160         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
20161         between appdomains.
20162
20163         * driver.c mini.h mini.c: New --no-aot debugging option which disables
20164         loading of AOT code.
20165
20166         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
20167         
20168         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
20169         if there is no domain neutrality information.
20170
20171 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
20174         format version into the generated library.
20175
20176         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
20177         callee method into the caller since one of them could be shared.
20178
20179         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
20180         system exceptions from AOT code now works.
20181
20182         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
20183         method if it is domain neutral and the callee is not.
20184
20185         * graph.c (cfg_emit_one_loop_level): Fix warning.
20186
20187 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
20188
20189         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
20190         last checkin.
20191
20192 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
20193
20194         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
20195         is needed  by code which is executed before mono_runtime_init ().
20196         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
20197         
20198         * mini.c (mono_thread_abort): Fix warning.
20199         (mono_jit_compile_method): Call static constructor in the AOT case too.
20200
20201         * aot.c (mono_compile_assembly): Fix warning.
20202
20203 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20204
20205         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
20206
20207 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
20210
20211         * cpu-pentium.md: Fix the length of call opcodes so they include the
20212         ESP restoring instruction. Fixes #47968.
20213
20214 2003-08-28  Martin Baulig  <martin@ximian.com>
20215
20216         * mini-x86.c (mono_arch_call_opcode): Added support for
20217         MONO_TYPE_GENERICINST.
20218
20219         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
20220
20221 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
20224         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
20225
20226         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
20227         metadata_section.
20228
20229 2003-08-26  Martin Baulig  <martin@ximian.com>
20230
20231         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
20232         when reporting an error, set this to the actual error location.
20233         (mono_method_to_ir): Report the correct error location if
20234         get_basic_blocks() returned an error.
20235
20236 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
20237
20238         * mini.c (mono_type_blittable): OBJECT is not blittable.
20239         (mono_method_blittable): Methods which have marshalling descriptors
20240         are not blittable either. Fixes #47842.
20241
20242 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
20243
20244         * driver.c mini.c: Use an environment variable instead of a global 
20245         variable. Also fix the build.
20246
20247         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
20248         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
20249         reporting this. 
20250
20251         * driver.c mini.c: Added --with-valgrind option to turn off some
20252         code which prevents mono from running under valgrind.
20253
20254         * mini.c (mono_emit_call_args): Fixed warning.
20255
20256         * mini.c (mono_emulate_opcode): Fixed warning.
20257
20258 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20259
20260         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
20261         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
20262         regalloc.c, regalloc.h: specify available registers in arch-specific
20263         code and support floats in the regallocator (patch by Laurent Morichetti 
20264         <l_m@pacbell.net>)
20265
20266 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20267
20268         * mini.c: mono_thread_current() can be called only after
20269         mono_runtime_init(): rearrange code to not call it early on.
20270
20271 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20272
20273         * mini.c: allocate jump tables in the code mempools.
20274
20275 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20276
20277         * mini.c, mini.h: make sure per-thread data allocated by the jit is
20278         freed.
20279
20280 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
20281
20282         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
20283         12 to 16.  This fixes bug #47453.
20284
20285
20286 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20287
20288         * mini-ppc.c: fixed indexed load and unsigned compares.
20289
20290 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
20291
20292         * mini.c: reenabled installation of handler for
20293           thread abort signal.
20294
20295 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20296
20297         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
20298         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
20299         until it's fixed and actually useful.
20300
20301 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20302
20303         * inssel-long32.brg: couple more opcodes implemented.
20304
20305 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20306         
20307         * mini-sparc.c: Even more opcodes implemeted.
20308
20309 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
20310
20311         * mini-sparc.c: More opcodes implemented.
20312
20313 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
20314
20315         * mini-sparc.c: More opcodes implemented.
20316
20317 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
20318
20319         * inssel-sparc.brg: Add some needed rules.  Direct
20320         copy from PPC.
20321         * Makefile.am: Use inssel-sparc.brg
20322         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
20323         an assert happy for now.
20324
20325 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
20326
20327         * mini-sparc.c: Fixed compile errors.
20328         * exceptions-sparc.c: Same.  We now produce a mono binary 
20329         on sparc-linux.  Yea.
20330
20331 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
20332
20333         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
20334         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
20335         They compile, but do not work.
20336
20337 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20338
20339         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
20340         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
20341         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
20342         (ct@gentoo.org).
20343
20344 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20345
20346         * mini.c: more opcodes implemented and better support for generics.
20347
20348 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20349
20350         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
20351         * mini.c, mini.h: first cut at generics support: some new instructions 
20352         added and changed the behaviour of some of the existing ones.
20353
20354 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
20355
20356         * mini.c: Removed definition of metadata_shared mutex here.
20357
20358 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20359
20360         * mini-x86.c: make vararg calls work for instance methods.
20361
20362 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
20363
20364         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
20365         returns the arguments in a separte list, now.
20366
20367 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20368
20369         * aot.c, mini.c: updates for array type representation changes.
20370
20371 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
20372
20373         * mini.c: register function to perform jit shutdown.
20374
20375 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20376
20377         * mini.c: use a faster allocator if possible.
20378
20379 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20380
20381         * aot.c: some cleanups and portability changes.
20382
20383 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20384
20385         * mini.c: use faster allocation for CEE_BOX if possible.
20386
20387 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20388
20389         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
20390         Moved inlined mempcy code to its own function so that is can be
20391         reused. Added an inline memset function as well (optimized initobj).
20392         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
20393
20394 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20395
20396         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
20397
20398 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20399
20400         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
20401         arch code can setup the cpu for CLR execution, if needed.
20402         We use it on x86 to set the precision of FP operations.
20403
20404 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20405
20406         * mini.c: disable some optimizations if we can guess they'll cost too
20407         much for a given method.
20408
20409 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
20412         
20413 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
20414         * mini.h mini.c mini-x86.c: Added instruction level coverage 
20415         info collection support.
20416
20417 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20418
20419         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
20420         is now implemented in the profiling API. Get rid of a couple of
20421         unnecessary global variables.
20422
20423 2003-06-15  Nick Drochak <ndrochak@gol.com>
20424
20425         * basic-long.cs: tests for negative values for bigmul, and unsigned.
20426         * cpu-g4.md: add op_bigmul and op_bigmul_un
20427         * cpu_pentium.md: add op_bigmul_un
20428         * inssel-long32.brg: add rule for unsigned bigmul
20429         * mini-ops.h: define OP_BIGMUL_UN
20430         * mini-x86.c: THE BUG: handle (un)signed properly
20431         * mini.c: choose unsigned opcode if needed.
20432         This set of patches fixes bug #44291
20433
20434 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
20435
20436         * mini.c (optimize_branches): improved to handle all kinds of
20437         conditional branches.
20438
20439 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20440
20441         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
20442         don't raise exceptions.
20443
20444 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20445
20446         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
20447         to arch-specific files.
20448
20449 2003-06-09  Martin Baulig  <martin@ximian.com>
20450
20451         * Makefile.am (libs): Added $(LIBGC_LIBS).
20452
20453 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
20454
20455         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
20456         and OP_ATAN (fixes bug#44293).
20457
20458 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
20459
20460         * Makefile.am, mini-x86.c: rename cpu description array to
20461         pentium_desc, since some compilers define the 'pentium' preprocessor
20462         symbol.
20463
20464 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
20465
20466         * mini.c (mini_select_instructions): add explicit branch if the
20467         following block is not the false target of a conditional branch -
20468         we need this with any optimization that reorder or remove bblocks
20469
20470         * mini.c (optimize_branches): bug fixes
20471
20472 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
20473
20474         * mini.c (mono_method_to_ir): inline static readonly fields
20475
20476         * ssa.c (fold_tree): start cfold support for long (very simple
20477         cases only)
20478
20479         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
20480
20481 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
20482
20483         * inssel.brg: fixed memcpy (bug #44219).
20484
20485 2003-06-05  Dick Porter  <dick@ximian.com>
20486
20487         * driver.c: Set the glib log levels to not abort if g_message
20488         recurses.
20489
20490         g_set_prgname() has to happen before mini_init() so that the
20491         process handle gets the info.
20492         
20493 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20494
20495         * driver.c: add intrins to the default optimizations to get wider
20496         exposure.
20497
20498 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20499
20500         * mini.h: some large basic blocks will overflow a 16-bit
20501         integers for symbolic registers.
20502
20503 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20504
20505         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
20506         (mono_arch_output_basic_block): fix bug 43499 
20507
20508 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20509
20510         * mini.c: kill duplicated definition of mono_debug_format.
20511
20512 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
20513
20514         * mini-x86.c, arrays.cs: fixed register allocation bug.
20515
20516 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
20517
20518         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
20519
20520         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
20521
20522 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20523
20524         * mini.c:
20525         (print_method_from_ip): also print source location information if
20526         available.
20527
20528 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
20529
20530         * mini.c (mono_find_block_region): bug fix in region code
20531         (mini_method_compile): enable removing unreachable code again, but
20532         only in methods without exception clauses.
20533
20534 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
20535
20536         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
20537         Implemented arglist opcode and handling of TypedReference type.
20538         Fixed x86 call convention when a structure is returned.
20539         Minimal support for calling static vararg methods.
20540
20541 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
20542
20543         * mini.c (mini_method_compile):  always remove unreachable code,
20544         because the code in them may be inconsistent  (access to dead
20545         variables for example).
20546
20547 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20548
20549         * driver.c, debug-mini.c: warning fixes.
20550
20551 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20552
20553         * Makefile.am, jit.h, mini.h: install header for embedding mono.
20554
20555 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
20556
20557         * mini.c: thread-static fields are registered in mono_class_vtable(),
20558         so ensure the function is called before checking for them.
20559
20560 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
20561
20562         * mini.c (optimize_branches): fix for bug 43586
20563
20564         * jit-icalls.c (mono_llmult_ovf): added an additional check for
20565         overflow (fixes Bug #43639)
20566
20567 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20568
20569         * mini.c, objects.cs: allow the use of stobj for primitive types.
20570
20571 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20572
20573         * mini.c: be less strict about argument checking until we support
20574         running the verifier.
20575
20576 2003-05-27  Nick Drochak <ndrochak@gol.com>
20577
20578         * basic-long.cs: tests for (ulong)int * (ulong)int also
20579         * mini.c: use the same trick for (ulong)int * (ulong)int
20580
20581 2003-05-27  Nick Drochak <ndrochak@gol.com>
20582
20583         * basic-long.cs: add regression test for (long)int * (long)int
20584         * cpu-pentium.md: add op_bigmul specification
20585         * inssel-long32.brg: add OP_BIGMUL rule
20586         * mini-ops.h: add OP_BIGMUL
20587         * mini-x86.c: register allocator: handle case where src1 needs to be
20588         in EAX.
20589         * mini.c: substitute special BIGMUL opcode in the tree for 
20590         (long)int * (long)int
20591
20592 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
20593
20594         * jit-icalls.c: call the type ctor on field access if needed.
20595
20596 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20597
20598         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
20599         to a method (including results of ldelema, bug#43207).
20600
20601 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20602
20603         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
20604         colors to show exception handler blocks.
20605
20606         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
20607         (fix for pinvoke7.cs).
20608
20609 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20610
20611         * mini.h, mini.c: ensure correct initialization order for types that
20612         require it. Prepare for lazy compilation of jit icall wrappers.
20613         Provide a name for opcode emulation to reduce unneeded mallocing.
20614
20615 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20616
20617         * mini-x86.c: better register restoring code and profiling
20618         support for tail calls.
20619
20620 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20621
20622         * mini.h, driver.c: prepare for leaf methods optimization.
20623
20624 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20625
20626         * mini.c: get targets of branches before converting a method.
20627
20628 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
20629
20630         * mini.c (optimize_branches): added some experimental code (disbaled) 
20631
20632 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
20633
20634         * mini.c (optimize_branches): fix branch to branch optimization 
20635
20636         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
20637
20638         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
20639
20640         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
20641
20642         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
20643         if needed.
20644
20645 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20646
20647         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
20648         enable use of interface variables again.
20649
20650         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
20651         I1 to registers because there is no simply way to sign extend 8bit
20652         quantities in caller saved registers on x86.
20653
20654         * inssel-float.brg: set costs of some rules to 2 so
20655         that monobure always select the arch. specific ones if supplied,
20656         regardless of the order we pass the files to monoburg.
20657
20658 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20659
20660         * mini.c, mini-x86.c: since the magic trampoline for jumps
20661         can't patch the code directly, we do it as soon as the
20662         method gets compiled.
20663
20664 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20665
20666         * mini-x86.c, mini.h: introduce a new patching method
20667         to support CEE_JMP and tail calls.
20668         * mini.c: obey tail.call. Don't precompile methods target
20669         of CEE_JMP.
20670         * tramp-x86.c: new trampoline code to handle methods
20671         reached through a jump.
20672
20673 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
20674
20675         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
20676         bit values to registers
20677
20678 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
20679
20680         * mini.c (mono_compile_get_interface_var): share interface
20681         variables if possible.
20682
20683 2003-05-16  Martin Baulig  <martin@ximian.com>
20684
20685         * debug-mini.c (mono_init_debugger): New function to initialize
20686         the debugger.  This is not in the debugger since it needs to
20687         access some of mini's internals.
20688
20689 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20690
20691         * mini.c (mono_method_to_ir): inlining fixes/cleanups
20692
20693 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
20694
20695         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
20696         for value type handling.
20697
20698 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
20699
20700         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
20701         (mono_method_check_inlining): enable inlining of all kinds of wrappers
20702
20703 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
20704
20705         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
20706           the constructor through a proxy.
20707
20708 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20709
20710         * jit-icalls.c, inssel.brg: fixes to array element address
20711         calculations.
20712
20713 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
20714
20715         * mini-x86.c (is_regsize_var): allocate pointer to registers
20716
20717 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20718
20719         * driver.c: fixed typo, added intrins to the set of optimizations
20720         tested with regressions.
20721
20722 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20723
20724         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
20725         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
20726         test case.
20727
20728 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
20729
20730         * inssel.brg: remove some common pop instructions without side effects
20731
20732 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20733
20734         * inssel-x86.brg: fixed thinko in int to double conversions.
20735
20736 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
20737
20738         * mini.c, jit-icalls.c: added runtime thread-static variable support.
20739
20740 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
20741
20742         * inssel-long32.brg: two more missing instructions.
20743
20744 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20745
20746         * mini.c (mono_emit_call_args): set the cil_code for all arguments
20747         if not already set.
20748
20749 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
20750
20751         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
20752         correctly.
20753
20754         * basic-float.cs: Added tests for negative zero.
20755
20756 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20757
20758         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
20759         a couple of missing operations for long casts, with test cases.
20760
20761 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20762
20763         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
20764
20765 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
20766
20767         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
20768         code size estimation.
20769
20770 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20771
20772         * mini.c (mono_jit_create_remoting_trampoline): make it work with
20773         abstract methods (fix bug 42542)
20774
20775         * aot.c: add ability to handle array types
20776         
20777 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
20778
20779         * mini.c: Call the _specific versions of the object allocation
20780         functions if possible.
20781
20782 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
20783
20784         * driver.c: call setlocale ().
20785
20786 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
20787
20788         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
20789         windows build.
20790
20791 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20792
20793         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
20794
20795         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
20796         wrappers (fix bug 42122)
20797
20798 2003-05-04  Martin Baulig  <martin@ximian.com>
20799
20800         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
20801
20802         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
20803         s/mini_set_defaults/mono_set_defaults/g.
20804
20805 2003-05-04  Martin Baulig  <martin@ximian.com>
20806
20807         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
20808
20809 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20810
20811         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
20812         (reported by Don Roberts).
20813
20814 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
20815
20816         * mini.c: temporarily work around two bugs for this release.
20817
20818 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20819
20820         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
20821         that contains -export-dynamic and it makes using the ld script
20822         useless.
20823         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
20824
20825 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
20826
20827         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
20828         specific cpu.
20829
20830 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
20831
20832         * mini.c: make sure leave calls all the needed finally blocks,
20833         even when the target jumps out of multiple exception clauses.
20834
20835 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
20836
20837         * ldscript, Makefile.am: add linker script to reduce the number of
20838         exported symbols (should also fix the issues with libwine defining
20839         some of the same symbols in io-layer).
20840
20841 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
20842
20843         * driver.c (mini_main): Avoid assertion when no file name is given on 
20844         the command line.
20845
20846 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
20847
20848         * driver.c: added --version/-V command line option.
20849         Added the inline optimization in the regression tests.
20850
20851 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20852
20853         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
20854         to the type in the method signature (fixes bug#42134).
20855
20856 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
20857
20858         * mini.c: when inlining, check this is not null only when needed (bug #42135).
20859
20860 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
20861
20862         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
20863
20864 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20865
20866         * driver.c: fixed bug #42100.
20867
20868 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20869
20870         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
20871
20872 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
20873
20874         * mini.c: moved most of the code required to do inlining to its own
20875         function so it can be reused. Inline also ctors if appropriate.
20876
20877 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * Makefile.am: Link with -export-dynamic so shared libs loaded by
20880         the runtime can call mono API functions.
20881
20882 2003-04-27  Martin Baulig  <martin@ximian.com>
20883
20884         * debug-mini.c (mono_debug_init_method): Added
20885         `guint32 breakpoint_id' argument; if the method has a breakpoint,
20886         send a notification to the debugger.
20887
20888         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
20889         running in the Mono Debugger, just pass the breakpoint number to
20890         mono_debug_init_method().
20891
20892         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
20893
20894 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
20895
20896         * mini.c: allow some more unsafe compares.
20897
20898 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20899
20900         * mini-x86.c, Makefile.am: make distcheck works (partially from
20901         a patch by Richard Lee <r.h.lee@attbi.com>).
20902         * regset.c, regset.h: removed, they are unused.
20903
20904 2003-04-25  Dick Porter  <dick@ximian.com>
20905
20906         * driver.c: Usage reports the name as 'mono' not 'mini'
20907         * exceptions-x86.c: Build and run on freebsd
20908
20909 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
20910
20911         * Makefile.am: install the program with the 'mono' name and
20912         the library as libmono instead of mini and libmini.
20913
20914 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20915
20916         * driver.c: provide the APIs for the embedding interface of the old jit.
20917
20918 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
20919
20920         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
20921
20922 2003-04-23  Martin Baulig  <martin@ximian.com>
20923
20924         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
20925
20926         * driver.c: Added `--debug' command line argument to enable
20927         debugging support.
20928
20929 2003-04-23  Martin Baulig  <martin@ximian.com>
20930
20931         * debug.[ch]: Removed.  The code is now in
20932         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
20933
20934         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
20935         last six months.
20936
20937 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20938
20939         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
20940
20941 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20942
20943         * mini.c:
20944         (mini_cleanup): moved mono_runtime_cleanup call after the call to
20945         mono_domain_finalize.
20946         (mini_method_compile): use mono_method_profile* if the the option is
20947         enabled.
20948
20949 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20950
20951         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20952         methods with their wrapper.
20953
20954         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
20955         methods with their wrapper.
20956
20957         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
20958         their wrapper.
20959
20960         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
20961         wrapper.
20962
20963         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
20964         methods.
20965
20966 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
20967
20968         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
20969
20970 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
20971
20972         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
20973         of the mempool. This is slightly faster and uses less memory
20974
20975 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20976
20977         * mini.c: avoid O(n) allocation for variables.
20978
20979 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20980
20981         * mini.c: handle items on the stack after inlining methods.
20982
20983 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
20984
20985         * mini.c: make the method->opcode optimization dependent
20986         on MONO_OPT_INSTRINS and do it lazily.
20987
20988 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20989
20990         * driver.c: print overall results at the end of regression run.
20991
20992 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
20993
20994         * inssel.brg: don't overwrite symbolic registers.
20995
20996 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
20997
20998         * inssel-x86.brg: fix conversion from long to float.
20999
21000 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
21001
21002         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
21003
21004 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
21005
21006         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
21007
21008         * driver.c: Added --print-vtable option as in the old JIT.
21009
21010 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21011
21012         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
21013
21014 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21015
21016         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
21017
21018 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
21019
21020         * mini.c regalloc.c regalloc.h: Fix memory leak.
21021
21022 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
21023
21024         * aot.c (mono_aot_get_method): register all used strings
21025
21026 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21027
21028         * mini.c: always intern strings references with ldstr at compile time.
21029
21030 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21031
21032         * Makefile.am: add BUILT_SOURCES.
21033
21034 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
21035
21036         * driver.c: give a better error message when the assembly to execute
21037         doesn't have an entry point.
21038
21039 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
21040
21041         * Makefile.am: added hack for automake
21042
21043         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
21044         correct sematics.
21045
21046         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
21047
21048 22003-04-07  Martin Baulig  <martin@ximian.com>
21049
21050         * Makefile.am: Added Makefile.am.
21051
21052         * debugger-main.c: Removed, this is now in the debugger where it
21053         belongs.
21054
21055         * mini.pc.in: Call this package `mini' for the moment.
21056
21057
21058
21059
21060
21061
21062
21063
21064
21065
21066
21067
21068
21069
21070