3fe10956825896397b9177272ce582b6f6d8b1dc
[mono.git] / mono / mini / ChangeLog
1 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4         calls.
5
6         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
7         addressing modes.
8
9 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
10
11         * Makefile.am (llvm_sources): Enable this.
12
13         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
14         failing back to the JIT if something cannot be handled.
15
16         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
17         compiling with LLVM.
18
19         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
20         compiling with LLVM.
21
22         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
23         compiling with LLVM.
24
25         * mini-ops.h: Add a few opcodes needed by LLVM.
26
27         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
28         has no unwind info.
29
30         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
31         backend.
32
33         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
34
35         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
36
37 2009-04-01  Mark Probst  <mark.probst@gmail.com>
38
39         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
40         ridiculously large methods.
41
42 2009-03-31  Martin Baulig  <martin@ximian.com>
43
44         * debug-debugger.c (debugger_remove_breakpoint): Call
45         mono_debugger_remove_class_init_callback ().
46
47 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
48
49         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
50         right before emitting code, not at the start.
51
52         * mini.c (mono_postprocess_patches): Extract this into a separate function
53         from mono_codegen ().
54
55         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
56         byref types correctly.
57
58 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
59
60         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
61         by the last change.
62
63 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
64
65         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
66         indirect calls, this avoids problems where get_vcall_slot () would get
67         confused by the native code for the instruction preceeding the call.
68         (mono_arch_get_vcall_slot): Simplify this.
69         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
70
71         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
72         register allocator now seems to depend on them instead of the data in
73         cpu-<ARCH>.md.
74
75         * mini.c (mini_method_compile): Throw the correct type of exception if
76         mono_method_get_header () fails because of a loading error.
77
78 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
79
80         * mini.c (mini_method_compile): Clear the loader error if the method
81         header cannot be decoded.
82
83         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
84         interface methods on proxies correctly.
85
86         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
87         this argument for vtype methods. Add precise liveness info for arguments.
88
89         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
90         LIVERANGE_START/END opcodes.
91
92         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
93         for arguments and values in registers.
94
95 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
96
97         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
98         return a valuetype. Fixes #487518.
99
100         * iltests.il: Add a test.
101         
102         * aot-compiler.c: Use mono_thread_create () to create helper threads.
103
104         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
105         closed over a null reference correctly.
106
107 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
108
109         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
110
111 2009-03-25  Mark Probst  <mark.probst@gmail.com>
112
113         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
114         allocated to the same registers as fixed sregs.
115
116 2009-03-24  Mark Probst  <mark.probst@gmail.com>
117
118         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
119         ATOMIC_CAS_IMM ops.
120
121         * method-to-ir.c: Handle more cases for
122         Interlocked.CompareExchange.
123
124         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
125         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
126         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
127
128 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
129
130         * aot-runtime.c (decode_method_ref): Fix a warning.
131
132         * unwind.c (mono_unwind_frame): Ditto.  
133
134 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
135
136         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
137         (mono_compile_assembly): Enable the binary writer for full-aot as well.
138
139         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
140         fix the handling of large values in the ALU_PC_G0_NC relocation.
141
142 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
143
144         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
145
146 2009-03-22  Mark Probst  <mark.probst@gmail.com>
147
148         * method-to-ir.c (mono_spill_global_vars): Support for ternary
149         ops.
150
151 2009-03-22  Mark Probst  <mark.probst@gmail.com>
152
153         * method-to-ir.c: MINI_OP3 needs a comma.
154
155         * method-to-ir.c, mini.h, mini.c: Remove
156         mono_init_op_sreg_counts ().
157
158 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
159
160         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
161         OP_JMP.
162         
163         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
164         assertion.
165
166         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
167
168         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
169         code somewhat.
170
171 2009-03-21  Mark Probst  <mark.probst@gmail.com>
172
173         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
174         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
175         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
176         operations.
177
178 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
179
180         * driver.c: Change location of gc_wrapper.h.
181
182         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
183         inside finally clauses correctly. Fixes #485721.
184
185         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
186         after the change above.
187
188         * exceptions.cs: Add a test.
189         
190 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
191
192         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
193
194         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
195         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
196         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
197
198         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
199         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
200
201 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
202
203         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
204         Simplify logic for ensure_method_is_allowed_to_call_method. 
205         Handle wrappers on callers.
206
207 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
208
209         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
210         them don't run yet.
211
212         * basic-simd.cs: Fix the names of some test methods.
213
214 2009-03-18  Geoff Norton  <gnorton@novell.com>
215
216         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
217
218 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
219
220         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
221
222 2009-03-17  Jb Evain  <jbevain@novell.com>
223
224         * driver.c: remove now uneeded call to mono_gc_base_init before
225         mono_profiler_load.
226
227 2009-03-17  Jb Evain  <jbevain@novell.com>
228
229         * dwarfwriter.c (token_handler): handle more cases.
230
231 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
232
233         * method-to-ir.c: Remove more dead code (that was required only
234         because of method_is_safe). Fix compiler warnings.
235
236 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
237
238         * method-to-ir.c: Remove unneeded/useless method_is_safe
239         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
240
241 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * mini.c (mini_method_compile): Print the method been compiled with
244         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
245         for people not familiar with the runtime.
246
247 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
248
249         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
250         a managed object which is later put into a GList. Return its class instead.
251
252         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
253         stack slots when using sgen.
254
255 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
256
257         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
258
259 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
260
261         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
262         > so it works on the first vreg as well.
263
264 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
265
266         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
267         trigger randomly.
268
269         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
270         
271         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
272         implement GArray.
273
274 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
275
276         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
277         native->IL offset mapping.
278
279 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
280
281         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
282
283         * basic.cs: Add a test.
284
285 2009-03-11  Mark Probst  <mark.probst@gmail.com>
286
287         * mini-x86.c (mono_arch_output_basic_block): Use different
288         registers in case the ones we want to overwrite are used by the
289         other operand.  Fixes regression in #480807.
290
291 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
292
293         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
294
295         * dwarfwriter.c (emit_line_number_info): The line number info for
296         IL code was off by one. Fix that.
297
298         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
299         stack.
300
301 2009-03-09  Mark Probst  <mark.probst@gmail.com>
302
303         Contributed under the terms of the MIT/X11 license by Steven
304         Munroe <munroesj@us.ibm.com>.
305
306         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
307         Fixes #483462.
308
309 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
310
311         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
312         as well.
313
314 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
315
316         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
317         the delegate ctor handling code. Fixes #482638.
318         
319         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
320         #481458.
321
322         * iltests.il.in: Add a test.
323         
324         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
325         mini-posix.c.
326
327 2009-03-05  Mark Probst  <mark.probst@gmail.com>
328
329         * mini-trampolines.c (mono_create_jump_trampoline): If the method
330         is shared generic code, return the trampoline, even if the method
331         has already been compiled.  Fixes #479763.
332
333         * mini.c, mini.h: New function
334         mono_jit_find_compiled_method_with_jit_info() which is the same as
335         mono_jit_find_compiled_method() but also returns the jit info.
336
337 2009-03-05  Mark Probst  <mark.probst@gmail.com>
338
339         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
340         for methods which actually have one.  For all other methods, make
341         sure the this argument var is live the whole method.
342
343         * mini.c (mini_method_compile): Every shared method has a
344         this/vtable/mrgctx info.  Fixes #480807.
345
346 2009-03-05  Mark Probst  <mark.probst@gmail.com>
347
348         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
349         generic/imt thunks where some entries branch through the vtable,
350         while other entries branch directly.
351
352 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
353
354         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
355
356         * mini-windows.c: Ditto.
357         
358         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
359         ctors.
360
361 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
362
363         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
364         down an assert.
365
366 2009-03-04  Mark Probst  <mark.probst@gmail.com>
367
368         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
369         #481403.
370
371 2009-03-04  Mark Probst  <mark.probst@gmail.com>
372
373         * exceptions-x86.c: Include debug-mini.h - fixes build.
374
375 2009-03-04  Martin Baulig  <martin@ximian.com>
376
377         * debug-mini.c: Clean up the exception API and add documentation.
378         (mono_debugger_handle_exception): New public method; this is
379         called when throwing an exception or encountering an unhandled one.
380         (mono_debugger_call_exception_handler): Formerly known as
381         mono_debugger_handle_exception(); this is used to tell the
382         debugger that we're about to invoke an exception handler.
383
384 2009-03-04  Martin Baulig  <martin@ximian.com>
385
386         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
387         ../metadata/mono-debug-debugger.c; save and reset exception state.
388
389 2009-03-02  Martin Baulig  <martin@ximian.com>
390
391         * debug-mini.c: Moved the debugger exception handling here from
392         ../metadata/mono-debug-debugger.c.
393
394         * debug-mini.h
395         (MonoDebuggerExceptionAction): New exception typedef.
396
397         * debug-mini.c
398         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
399
400         * exceptions-amd64.c
401         (mono_amd64_throw_exception): Use the new debugger exception
402         handling code.
403
404         * mini-exceptions.c
405         (mono_handle_exception_internal): Don't call
406         mono_debugger_unhandled_exception() here.
407
408 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
409
410         * mini.c aot-compiler.c: Update after the changes to 
411         mono_marshal_get_runtime_invoke ().
412
413         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
414         Virtual generic methods might not have method->slot set, work around
415         that.
416
417         * generics.cs: Add a test.
418
419 2009-03-02  Geoff Norton  <gnorton@novell.com>
420
421         * mini.c:
422         * driver.c: Allow signal chaining of SIGFPE as well.
423
424 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
425
426         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
427         this since it now receives the method not its generic context in the
428         IMT reg.
429
430         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
431         generic/imt thunks where some entries branch through the vtable, while
432         other entries branch directly.
433
434         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
435
436         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
437         support for interface methods as well.
438
439         * mini-trampolines.c: Add support for virtual generic methods in interfaces
440         using the normal IMT thunks.
441
442         generics.cs: Add new tests.
443         
444         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
445         the generic inst to the generic imt thunks. This fixes AOT support, 
446         improves consistency with the normal IMT thunks, and makes it easier to
447         add support for interface generic virtual methods later.
448
449         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
450         
451 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
452
453         * driver.c (mono_set_signal_chaining): New public API function to enable
454         signal chaining on POSIX platforms.
455
456         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
457         (si@lindenlab.com) to implement signal chaining. The original patch was
458         contributed under the MIT X/11 license:
459         https://bugzilla.novell.com/show_bug.cgi?id=318894
460
461 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
462
463         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
464         too until it can be made to run on amd64.
465
466 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
467
468         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
469         to  get_generic_context_from_code () + get_call_info () if possible.
470
471 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
472
473         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
474         suspend-on-sigsegv functionality.
475
476         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
477         to suspend when a native SIGSEGV is received. This is useful for debugging
478         crashes which don't happen under gdb, since a live process contains more
479         information than a core file.
480
481         * mini-exceptions.c (mono_print_thread_dump): Use 
482         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
483
484         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
485
486         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
487         
488         * basic-float.cs: Disable the tests which currently fail on amd64.
489
490         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
491         value to mono_arch_patch_callsite () to fix crashes.
492         
493         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
494
495 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
496
497         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
498         nop code by patching the call address to point to the nullified class init
499         trampoline, as the former does not seem to be safe on SMP machines.
500
501 2009-02-23  Mark Probst  <mark.probst@gmail.com>
502
503         * mini-ops.h: Fix the argument types for a few x86 opcodes where
504         they were wrong.
505
506 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
507
508         * basic-float.cs basic-calls.cs: Fix warnings.
509
510 2009-02-22  Mark Probst  <mark.probst@gmail.com>
511
512         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
513         correct frame pointer in the LMF.  Should fix #478394.
514
515 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
516
517         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
518
519         * image-writer.c: Make the binary writer less verbose.
520
521 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
522
523         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
524         are called from runtime invoke wrappers.
525
526 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
527
528         * cpu-ppc.md (store_memindex): Increase the size of this.
529
530 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
531
532         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
533
534         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
535
536         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
537         OP_LCONV_TO_R_UN.
538
539         Last fix for of #467201.
540
541
542 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
543
544         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
545
546         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
547         and long_conv_to_r8_2:
548
549         Fixed part of #467201.
550
551 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
552
553         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
554
555         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
556         conversion to 32 bits.
557
558         * cpu-x86.md: Increase the size of int_conv_to_r4.
559
560         * basic-float.cs: Add a test for this.
561
562         Fixed part of #467201.
563
564 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
565
566         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
567
568         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
569         conversion to 64 bits.
570
571         * basic-float.cs: Add a test for this.
572
573         Fixed part of #467201.
574
575 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
576
577         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
578
579         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
580         This behavior is compatible with MS.
581
582         * iltest.il.in: Add a test for this.
583
584         Fixed part of #467201.
585
586 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
587
588         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
589
590         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
591         change the precision of the value.
592
593         * cpu-x86.md: Define len for float_conv_to_r4.
594
595         * basic-float.cs: Add a test for this.
596
597         Fixed part of #467201.
598
599 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
600
601         * mini.c: Adjust locking order to the new semantics where the loader lock
602         comes first.
603
604 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
605
606         * aot-runtime.c:
607         * mini-amd64.c:
608         * mini-arm.c:
609         * mini-ia64.c:
610         * mini-mips.c:
611         * mini-ppc.c:
612         * mini-sparc.c:
613         * mini-trampolines.c:
614         * mini-x86.c:
615         * mini.c:
616         * tramp-alpha.c:
617         * tramp-amd64.c:
618         * tramp-arm.c:
619         * tramp-hppa.c:
620         * tramp-ia64.c:
621         * tramp-mips.c:
622         * tramp-ppc.c:
623         * tramp-s390.c:
624         * tramp-s390x.c:
625         * tramp-sparc.c:
626         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
627
628 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
629
630         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
631         as it is incorrect.
632
633 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
634
635         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
636         for cctors if needed.
637
638 2009-02-17  Mark Probst  <mark.probst@gmail.com>
639
640         * mini-ppc.c: Fix build on Darwin.
641
642 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
643
644         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
645         version instead of 3 as valgrind doesn't like version 3.
646
647         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
648
649         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
650         usable for hashing methods.
651         (emit_extra_methods): Use the new hash to avoid putting every method in the
652         same hash bucket.
653
654         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
655
656         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
657         whenever a method ref could match a method.
658         
659         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
660         test to fail.
661         
662         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
663         methods refs.
664
665         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
666
667         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
668         the encoding buffer.
669
670         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
671         mono_method_get_header () on inflated methods as an optimization.
672
673 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
674
675         * ssa.c (fold_ins): Fix another crash if the instruction following the
676         switch was optimized away.
677
678 2009-02-16  Mark Probst  <mark.probst@gmail.com>
679
680         Contributed under the terms of the MIT/X11 license by Steven
681         Munroe <munroesj@us.ibm.com>.
682
683         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
684
685 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
686
687         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
688         around the mono_domain_alloc calls, it is now done by the functions
689         themselves.
690
691         * aot-compiler.c (compile_method): Only add wrappers referenced by
692         the method if compiling with full AOT.
693         (mono_compile_assembly): Error out if --aot=full is specified on
694         a platform where it is not supported.
695
696         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
697         on ARM too.
698
699         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
700         AOT support.
701
702         * aot-runtime.c (load_named_code): Handle 
703         mono_arm_throw_exception_by_token.
704
705         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
706
707         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
708         unaligned.
709
710         * Makefile.am (fullaotcheck): Exit if a test fails.
711
712         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
713         on ARM.
714         (mono_compile_assembly): Handle the assembler failing.
715
716         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
717         accepting subsections of .bss.
718
719         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
720         was optimized away.
721
722         * aot-compiler.c: Remove some unused includes.
723         
724         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
725         now in MonoImageWriter.
726
727         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
728         code sequence which matches a non-virtual call. Fixes #472654.
729
730 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
731
732         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
733         xdebug code.
734         
735         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
736         use the image/dwarf writers directly.
737
738         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
739         field.
740
741         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
742         MonoDwarfWriter.
743
744         * image-writer.h: Fix some typos.
745
746         * dwarfwriter.h dwarfwriter.c: New files.
747         
748         * aot-compiler.c: Extract the DWARF info writing functionality into a 
749         separate module.
750
751         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
752         argument to return unwind info.
753
754         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
755
756         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
757         
758         * aot-runtime.c (decode_method_ref): Add a case for 
759         MONO_AOT_METHODREF_WRAPPER_NAME.
760
761         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
762         for AOT.
763
764         * aot-compiler.c (encode_method_ref): Use the new constants.
765
766         * aot-runtime.c (decode_method_ref): Ditto.
767
768         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
769         be compiled, not the icall itself.
770
771 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
772
773         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
774         using decode_method_ref ().
775
776         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
777         convert it to an in32. Fixes #475859.
778
779         * arrays.cs: Add a test.
780
781 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
782
783         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
784         OP_LCONV_TO_U2.
785
786         * basic-long.cs: Add a test.
787
788 2009-02-12  Mark Probst  <mark.probst@gmail.com>
789
790         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
791         remove the frame pointer in leaf methods which don't receive any
792         arguments, don't throw exceptions and don't do dynamic stack
793         allocations.
794
795 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
796
797         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
798         the fail_tramp changes. Hopefully fixes #475132.
799
800 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
801
802         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
803         instead of mono_metadata_signature_dup_full.
804
805 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
806
807         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
808         for processing jump tables. Fixes #473787.
809
810 2009-02-11  Mark Probst  <mark.probst@gmail.com>
811
812         * mini-generic-sharing.c: mini_method_get_context() just calls
813         mono_method_get_context_general() now.
814
815         * mini.c, mini.h: Moved get_object_generic_inst(),
816         construct_object_context_for_method() and
817         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
818
819 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
820
821         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
822         basic block fell through to its successor bblock without a branch. Fixes
823         #474718.
824
825         * iltests.il.in: Add a test.
826         
827         * aot-compiler.c (encode_method_ref): Encode methods of array types.
828         (can_encode_patch): We can now handle arrays of generic parameters and
829         array methods.
830
831         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
832
833         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
834         the AOT file to avoid some #ifdefs in aot-runtime.c
835
836         * mini.h: Bump AOT file format version.
837
838 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
839
840         * Makefile.am (fullaotcheck): Make this run the tests.
841
842         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
843
844 2009-02-10  Mark Probst  <mark.probst@gmail.com>
845
846         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
847         individually.  Fixes #473482.
848
849 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
850
851         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
852
853 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
854
855         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
856         (mono_compile_assembly): Hush compile warnings about
857         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
858         code path.
859
860 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
861
862         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
863
864         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
865
866         * aot-compiler.c: Fix arm support.
867
868         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
869         img_writer_emit_unset_mode () function.
870
871         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
872         (mono_unwind_get_dwarf_pc_reg): Ditto.
873
874         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
875         Move almost all platform specific code to a set of arch_ functions, 
876         and document them to ease porting.
877         
878         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
879
880         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
881
882         * aot-compiler.c: Extract the image writing functionality into a separate
883         module to reduce the size of this file.
884
885 2009-02-09  Geoff Norton  <gnorton@novell.com>
886
887         * mini-s390.c: Fix the signature of emit_sig_cookie.
888
889 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
890
891         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
892
893         * aot-runtime.c (is_shared_got_patch): Ditto.
894
895         * aot-runtime.c (load_named_code): Cope with the fact that 
896         decode_got_entry () won't decode the patch fully if its corresponding got
897         entry is already filled.
898         
899         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
900         Initialize *ji.
901         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
902
903         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
904         as the moving pointer instead of 'buf' for consistency with the rest of the
905         codebase.
906         (mono_arch_create_monitor_exit_trampoline): Ditto.
907
908         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
909         generic_class_init trampolines.
910         (add_generic_class): Extract some code from add_generic_instances () into a
911         separate function so it can be called from other places too.
912         (compile_method): Call add_generic_class () for the classes of inflated methods
913         referenced by the method.
914         (can_encode_patch): Allow references to generic parameters.
915
916         * aot-runtime.c: Add support the patches required by the new trampolines.
917         
918         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
919         support.
920
921         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
922         full-aot support.
923
924         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
925         this from get_throw_pending_exception, make the signature full aot compatible.
926
927         * Makefile.am (fullaotcheck): New target to run full-aot tests.
928
929         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
930
931         * exceptions.cs: Add a test.
932
933 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
934
935         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
936         use the DWARF_DATA_ALIGN constant instead.
937
938         * exception-<ARCH>.c: Update after the above change.
939
940         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
941         dwarf unwinder.
942
943         * mini-arm.c: Enable the dwarf unwinder.
944
945         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
946         instead of mono_class_setup_vtable ().
947
948 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
949
950         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
951         dwarf unwinder.
952
953         * mini-x86.h: Enable the dwarf unwinder.
954
955 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
956
957         Fix mcs/tests/test-7.cs
958         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
959         2009-02-03.
960
961 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
962
963         * mini.c (print_jit_stats): Remove some unused statistics.
964
965 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
966
967         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
968
969 2009-02-05  Mark Probst  <mark.probst@gmail.com>
970
971         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
972         the method we get from mono_object_get_virtual_method() because
973         that function does it properly, now.
974
975 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
976
977         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
978         opcodes. Fixes #472775.
979
980 2009-02-05  Mark Probst  <mark.probst@gmail.com>
981
982         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
983         fact that mono_find_jit_info() sometimes returns the context
984         corresponding to the jit info in new_ctx.  Fixes #472600.
985
986 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
987
988         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
989         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
990         klass->enum_basetype directly.
991
992         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
993         enum subtypes.
994
995         * unwind.c: Avoid 0 sized arrays.
996
997 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
998
999         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1000         size on systems with 64k pages. Fixes #471389.
1001
1002 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1003
1004         Contributed under the terms of the MIT/X11 license by Steven
1005         Munroe <munroesj@us.ibm.com>.
1006
1007         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1008         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1009         necessary.
1010
1011 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1012
1013         Contributed under the terms of the MIT/X11 license by Steven
1014         Munroe <munroesj@us.ibm.com>.
1015
1016         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1017         comparison fix.
1018
1019         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1020         The trampoline can be longer on PPC64.
1021
1022 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1023
1024         Contributed under the terms of the MIT/X11 license by Steven
1025         Munroe <munroesj@us.ibm.com>.
1026
1027         * mini-ppc.c: Compiler warning fixes and trivial code
1028         simplifications.
1029
1030 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1033         ins->dreg which could be a hardware register, not a vreg.
1034
1035         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1036         
1037         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1038         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1039
1040         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1041         
1042         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1043         ->dreg, that is not the vreg we are looking for.
1044
1045         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1046
1047         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1048         LIVERANGE_END.
1049
1050         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1051         strange crashes.
1052
1053 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1056
1057         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1058         the line diff is 0.
1059
1060         * aot-compiler.c: Add xdebug support on x86.
1061
1062         * unwind.c: Add x86 support.
1063         
1064         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1065         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1066
1067         * mini.c (mini_method_compile): Ditto.
1068         
1069         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1070         the variable index.
1071
1072         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1073         which mimic .push_section/.pop_section in GAS.
1074         
1075         * aot-compiler.c: Emit precise live range information for variables.
1076
1077         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1078
1079         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1080         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1081         them.
1082
1083         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1084         the live ranges of variables.
1085
1086         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1087         of the variable in terms of native offsets.
1088
1089 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1092         
1093 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1094
1095         Contributed under the terms of the MIT/X11 license by Steven
1096         Munroe <munroesj@us.ibm.com>.
1097
1098         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1099         order (offset then base reg) for ppc_load_multiple_regs.
1100         (emit_save_saved_regs) Correct operand order for
1101         ppc_store_multiple_regs.
1102         (mono_arch_get_call_filter): Correct operand order for
1103         ppc_load_multiple_regs.
1104
1105         * mini-ppc.c (emit_memcpy): Fix operand order for
1106         ppc_load_reg_update and ppc_store_reg_update.
1107         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1108         (mono_arch_emit_epilog): Correct operand order for
1109         ppc_load_multiple_regs.
1110
1111         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1112         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1113
1114 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1115
1116         * cpu-ppc64.md: Fixed storer4_memindex length.
1117
1118 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1121         line number info.
1122         
1123         * aot-compiler.c (emit_line_number_info): Optimize this.
1124
1125 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1128         
1129         * aot-compiler.c: Add debug info for methods without debug info by
1130         emitting an IL file and having the line number info referencing that file.
1131
1132         * aot-compiler.c: Optimize the size of the generated line number info.
1133
1134         * aot-compiler.c: Emit line number info in xdebug mode.
1135
1136         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1137         million arguments.
1138
1139 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1140
1141         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1142
1143         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1144         is used.
1145
1146 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1147
1148         * basic-calls.cs: Test for the weird crash found on arm.
1149         
1150 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1151
1152         * cpu-arm.md: Increase the size of storer8_membase_reg and
1153         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1154
1155         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1156         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1157         reg to LR otherwise we'll be loading/storing from just the offset.
1158
1159 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1160
1161         Question: if we are storing gint32's inside the "*native_offset",
1162         should we change the signature to "gint32 *native_offset" to
1163         ensure that we do not have type definition problems?
1164         
1165         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1166         an int * as this is what the other function expects, causes
1167         problems with Freescale's compiler that defined int32_t to be a
1168         long and makes int incompatible 
1169
1170 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1171
1172         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1173         filename conflict with bjam.
1174
1175 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1176
1177         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1178         as it might use decomposed ops.
1179
1180 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1183
1184         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1185         is defined.
1186
1187         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1188
1189         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1190         offsets.
1191
1192         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1193         way registers are stored in MonoContext on arm.
1194
1195         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1196         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1197
1198         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1199
1200         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1201
1202         * mini.c (mini_init): Register mono_isfinite.
1203
1204         * jit-icalls.c (mono_isfinite): New jit icall.
1205
1206         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1207         
1208         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1209         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1210         the parent frame.
1211
1212 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1213
1214         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1215         separate frame and stack pointers, so we must use FP to find the register
1216         spill area.
1217         The FP reg is retrieved from the MonoContext::regs array.
1218
1219 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1220
1221         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1222         as FPA requires it.
1223
1224 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1227         return R4 and R8 when not running under softfloat.
1228
1229         Fixes basic-calls.exe
1230
1231 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1232
1233         * mini-arm.c: Implement some overflow opcodes.
1234
1235 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1236
1237         * ssa.c: handle another alloca.h
1238
1239         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1240         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1241         MONO_ARCH_USE_SIGACTION. 
1242
1243         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1244         capability defines.
1245
1246         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1247
1248         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1249         PPC targets as sigaction does not exist on all platforms, define
1250         this on a per-platform basis.
1251
1252         Instead of erroring out if the platform is not defined, include
1253         mini-ppc-os.h, and expect that the OS specific setting provides
1254         the required information.   
1255
1256 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * aot-compiler.c: Fix --enable-minimal=aot.
1259
1260 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1263         previous change.
1264
1265 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * exceptions-arm.c: Fix warnings.
1268
1269         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1270         ARM.
1271
1272         * mini-x86.c: Fix --enable-minimal=jit build.
1273
1274         * mini.c: Really fix --enable-minimal=jit build.
1275         
1276         * mini.c (construct_object_context_for_method): Move this outside
1277         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1278
1279         "Backported" of r124984 from 2.0 branch.
1280         
1281         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1282
1283         "Backport" of r124977 + r124978 from 2.0 branch.
1284         
1285         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1286         to avoid calling mono_exception_from_token () from the throw trampoline.
1287         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1288         for throwing corlib exceptions, this fixes full-aot support for corlib
1289         exceptions.
1290
1291         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1292
1293 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1294
1295         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1296         part of the changes to split the code in mini into operating
1297         system specific files.
1298
1299         This patch was done by copying mini.c to the respective files to
1300         preserve SVN history.
1301
1302 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1305
1306 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1309         remoting-invoke-with-check wrappers of shared methods.
1310
1311         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1312
1313 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1314
1315         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1316         optimization if the top of stack is the last instruction in the
1317         bblock.  Otherwise it might have been used after its definition.
1318         Fixes #469742.
1319
1320 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1323         method as well when get_vcall_slot () fails to match a code sequence.
1324
1325         * mini-arm.c: Fix the android build, which doesn't have
1326         __aeabi_read_tp.
1327
1328 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1331         the s390x build.
1332
1333 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1334
1335         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1336
1337 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1340         and put its id into jinfo->used_regs. This is only used on amd64,
1341         which is currently the only platform generating unwind info.
1342
1343         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1344         the dwarf unwinder. This is required to correctly handle async exceptions
1345         like thread abort and stack overflows, which can happen while a method
1346         is in the middle of its prolog or epilog.
1347         
1348         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1349         the unwind info belonging to an AOTed method.
1350
1351         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1352         into cfg->unwind_ops.
1353         
1354         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1355
1356         * mini.c (mini_init): Call mono_unwind_init ().
1357         (mini_cleanup): Call mono_unwind_cleanup ().
1358
1359         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1360         unwind info to be shared between methods.
1361
1362         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1363         saved in the LMF.
1364
1365         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1366         get_throw_pending_exception () to avoid initialization races.
1367
1368         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1369         mono_arch_exceptions_init () function.
1370
1371         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1372
1373 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1374
1375         * mini.c (mono_get_domain_intrinsic): New helper function.
1376         (mono_get_thread_intrinsic): Ditto.
1377
1378         * mini-arm.c mini-ia64.c: Use the new helper functions.
1379         
1380         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1381         the last constrained_call change, since it is needed in the non-AOT
1382         case as well.
1383
1384         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1385         
1386         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1387         mono_get_lmf_addr () on arm eabi linux.
1388
1389 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1390
1391         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1392         code sequence which matches a non-virtual call.
1393
1394 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1395
1396         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1397         stack pointer (r1).
1398
1399 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1400
1401         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1402         runtime-invoke wrappers, since they are also shared based on signature.
1403
1404 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1405
1406         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1407         info from the (correct) context.
1408
1409 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1410
1411         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1412         
1413         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1414         using dwarf unwinding info. Not yet used.
1415
1416         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1417
1418 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1419
1420         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1421         descriptors.
1422
1423         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1424         special case and handle mono_arch_delegate_invoke_impl() returning
1425         function descriptors.
1426
1427         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1428         trampolines return function descriptors, too.
1429
1430 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1433         out_of_line optimization.
1434
1435 2009-01-21  Martin Baulig  <martin@ximian.com>
1436
1437         * mini.h
1438         (MonoCompile): Added `disable_deadce_vars' to disable removing
1439         unused variables.
1440
1441         * mini.c
1442         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1443         inside the debugger.
1444
1445         * liveness.c (mono_analyze_liveness): Don't remove any unused
1446         variables if `cfg->disable_deadce_vars' is set.
1447
1448 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1449
1450         * method-to-ir.c: Only apply exception constructor optimization if
1451         the the method actually belongs to an exception class.  Fixes
1452         #467456.
1453
1454 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1457         change inside a #ifdef __mono_ppc64__.
1458
1459         * aot-compiler.c (compile_method): Remove the previous limitation.
1460
1461         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1462         on type variables in AOTed code.
1463         
1464         * aot-compiler.c (compile_method): Skip generic methods having type 
1465         constraints on their generic parameters.
1466
1467         * aot-compiler.c (compile_method): Check for methods which cannot be
1468         encoded inside RGCTX_FETCH patches as well.
1469
1470         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1471         build.
1472
1473 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1474
1475         * method-to-ir.c: Force the vtable variable in shared generic code
1476         for the case that they might show up on a stack trace where they
1477         are needed.
1478
1479         * mini-exceptions.c: Save and use generic sharing info as well as
1480         IP in stack traces to resolve shared generic instantiations.
1481
1482 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1483
1484         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1485         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1486
1487 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1488
1489         * method-to-ir.c: Do generic sharing for array constructors.
1490
1491 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1492
1493         * mini-exceptions.c (mono_print_thread_dump): Add information
1494         about the thread state using wapi_current_thread_desc.
1495
1496 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1497
1498         * basic-simd.cs: Tests for the new constructors. 
1499
1500 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1501
1502         * mini-ops.h: Added OP_EXPAND_*
1503
1504         * cpu-x86.md: Same.
1505
1506         * mini-x86.c (mono_arch_output_basic_block): Same.
1507         
1508         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1509
1510 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * iltests.il.in: Add a test for #467385.
1513
1514 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1515
1516         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1517         thread been cleaned up is not the same currently in execution.
1518
1519         Fixes appdomain-unload crashes on windows, osx and linux variants
1520         without the __thread keyword.
1521
1522 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1525         (koush@koushikdutta.com). Implement this for android.
1526
1527         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1528         begins with a digit.
1529
1530         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1531         mono_marshal_get_write_barrier ().
1532
1533 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1536         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1537         that pass them on a register pair.
1538
1539         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1540         test was crashing due to that.
1541
1542 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1543
1544         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1545         trampoline code. Include ucontext.h only if available.
1546
1547 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1548
1549         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1550         and doesn't check whether it's sharable, like it was before
1551         removing the shared generics hash.  This brings IronPython
1552         performance back to what it was before that change.
1553
1554 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1555
1556         * method-to-ir.c: Handle delegate invocation optimization earlier,
1557         otherwise it would be handled (much more slowly) by the
1558         final/sealed optimization.
1559
1560 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1563         domain is not set. Fixes #465864.
1564
1565 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1566
1567         * method-to-ir.c: Don't stop sharing of generic methods with catch
1568         clauses - we already handle those.
1569
1570 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1571
1572         * mini.c, mini.h: lookup_generic_method() is now
1573         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1574         making the shared_generics_hash obsolete.
1575
1576 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1577
1578         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1579         use the red zone.  Make room on the stack first and then use it,
1580         not the other way around.
1581
1582 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * mini.c (mini_init): Call mono_xdebug_init ().
1585
1586         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1587
1588 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1589
1590         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1591
1592         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1593         trampolines.
1594
1595         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1596         debug+unwind info for trampolines.
1597
1598         * mini.c (mono_create_unwind_op): New helper function.
1599
1600         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1601
1602 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * aot-compiler.c: Fix the build.
1605
1606 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * Makefile.am: Update dtrace-prelink.sh location.
1609
1610 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1611
1612         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1613         optimization. Fixes #464520.
1614
1615 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1616
1617         * mini-amd64.c : Adding code to save/restore non-volatile registers
1618            on Winx64.
1619
1620         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1621           registers on Winx64.
1622
1623         Contributed under MIT/X11 license.
1624
1625 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1628         __GNUC_MINOR__ which can break when the major version changes.
1629
1630 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1633
1634 2009-01-07  Geoff Norton  <gnorton@novell.com>
1635
1636         * helpers.c:  Allow mono -v -v -v to work on darwin.
1637
1638 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1639
1640         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1641           pattern. 
1642
1643         Contributed under MIT/X11 license.
1644
1645 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1648         instead of directly accessing type->data.klass. Fixes #462016.
1649         (mono_allocate_stack_slots_full): Ditto.
1650
1651         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1652         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1653
1654         * aot-compiler.c (emit_plt): Fix ARM build.
1655
1656 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1659         
1660         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1661         change.
1662
1663         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1664         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1665         #463357.
1666
1667         * iltests.il.in: Add a regression test.
1668
1669 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1670
1671         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1672
1673 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * basic-simd.cs: Add a regression test for #462457.
1676
1677 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1678
1679         * mini-ops.h: Add a definition of XPHI.
1680
1681         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1682
1683         * ssa.c (op_phi_to_move): Handle XPHI.
1684
1685         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1686
1687         Fixes #462457
1688
1689 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1690
1691         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1692
1693 2008-12-31  Geoff Norton  <gnorton@novell.com>
1694
1695         * mini-ppc.c: The prolog size allocated can be too small for darwin
1696         ppc32 under certain circumstances.  Also fix a small logic bug.
1697
1698 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1699
1700         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1701         while loading AOT methods.
1702
1703         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1704         since only the former is nulled out after a successful cast. This prevents
1705         crashes with rethrown exceptions when using --debug=casts.
1706
1707 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1708
1709         * mini.h: New macro for checking whether a method is final,
1710         i.e. whether the method or its class is marked final.
1711
1712         * method-to-ir.c: Use the new macro for all final-checks
1713         consistently.  Fixes the crash in the System.ServiceModel tests.
1714
1715 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1716
1717         * mini-exceptions.c (get_exception_catch_class): Corrected another
1718         overly strict assertion.
1719
1720 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1721
1722         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1723         Clobbering it is not allowed because the caller might use it as
1724         the vtable register in the interface call.
1725
1726 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1727
1728         * mini-exceptions.c (get_exception_catch_class): Corrected an
1729         overly strict assertion.
1730
1731 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1732         
1733         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1734
1735         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1736
1737         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1738
1739         * cpu-mips.md: correct lengths for certain long_ opcodes.
1740
1741         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1742
1743         * 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().
1744         
1745 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1746
1747         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1748         
1749 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1750         
1751         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1752         
1753 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1754
1755         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1756         next basic block.
1757         
1758 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1759
1760         * 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
1761
1762         * 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)
1763         
1764 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1765         
1766         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1767         
1768 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1771         gshared code. Fixes #458947.
1772
1773         * generics.cs: Add a test.
1774
1775 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1776         
1777         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1778         
1779         * mini-mips.c: first pass n32 code generation.
1780
1781         * mini-mips.h: datatypes and defines for n32 support.
1782
1783         * exceptions-mips.c: first pass n32 code generation.
1784         
1785         * tramp-mips.c: first pass n32 code generation.
1786         
1787         * cpu-mips.md: add long_ opcodes.
1788         
1789 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1790
1791         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1792
1793         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1794         
1795         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1796         
1797         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1798
1799         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1800
1801         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1802
1803         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1804
1805         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1806
1807         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1808
1809 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1810
1811         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1812
1813 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1814
1815         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1816
1817 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1818
1819         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1820         descriptors for helper functions directly in front of the code.
1821
1822 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1823
1824         * method-to-ir.c: Removed an unnecessary assertion.
1825
1826 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * method-to-ir.c: Merge SGEN changes from the old JIT.
1829
1830 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * driver.c (compile_all_methods_thread_main): Handle failure of
1833         mono_get_method ().
1834
1835 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1836
1837         * mini-ppc.c: Merged with mini-ppc64.c.
1838
1839         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1840
1841         * Makefile.am: Use the same sources for PPC and PPC64.
1842
1843         * mini-ppc64.c: Removed.
1844
1845 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1848         code to mono_bb_is_fall_through.
1849         
1850         * branch-opts.c (mono_remove_critical_edges): Same.
1851
1852 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1853
1854         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1855         expect that an OP_BR_REG will be there.
1856
1857 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1858
1859         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1860         for the many branch ops. The original check miss OP_BR_REG.
1861
1862         Fixes #457574.
1863         
1864 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1865
1866         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1867
1868 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1871         while holding the aot lock.
1872
1873 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1874
1875         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1876         
1877 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1878
1879         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1880           to release all runtime callable wrappers held by the runtime.
1881
1882         Contributed under MIT/X11 license.
1883
1884 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1885
1886         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1887           for Winx64.
1888
1889         Contributed under MIT/X11 license.
1890
1891 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1894         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1895
1896 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1897
1898         * cpu-mips.md: fix ckfinite length
1899
1900         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
1901         (mono_arch_lowering_pass): cleanup, rearrange for clarity
1902         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
1903         
1904 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1905
1906         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1907         
1908 2008-12-08  Geoff Norton  <gnorton@novell.com>
1909
1910         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1911         size by 8 bytes as well.
1912
1913 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1914
1915         * basic-simd.cs: Fix method names for Vector16b.
1916         
1917 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * basic-simd.cs: Fix method names for Vector16sb.
1920
1921 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1922
1923         * basic-simd.cs: Fix method names for Vector8us.
1924         
1925 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1926
1927         * basic-simd.cs: Fix method names for Vector8s.
1928         
1929 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1930
1931         * basic-simd.cs: Fix method names for Vector4ui.
1932
1933 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1934
1935         * basic-simd.cs: Fix method names for Vector2l.
1936
1937 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1938
1939         * basic-simd.cs: Fix method names for Vector2d.
1940
1941 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1942
1943         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
1944         that are extension methods.
1945
1946 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * basic-simd.cs: Fix method names for Vector4f.
1949
1950 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
1953         as such. Fixes #456669.
1954
1955 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1956
1957         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
1958         
1959 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1960
1961         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
1962         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
1963         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
1964         (mips_adjust_stackframe): handle FP spills
1965                 
1966         * mini-ops.h: add mips_mtc1_s2
1967         
1968         * cpu-mips.md: add mips_mtc1_s2
1969         
1970 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * unwind.c: New file, move the unwind info encoding functions here from
1973         aot-compiler.c, so they could be used at runtime too.
1974
1975 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1976
1977         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
1978         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
1979         
1980 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1981
1982         * mini-mips.c: cleanup warnings
1983         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
1984         (mips_adjust_stackframe): handle case of taking the address of stack locals
1985         
1986 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
1987
1988         * aot-compiler.c: Implement a few functions missing from the asm writer.
1989         (emit_method_code): Only write symbols for methods when using the bin
1990         writer, since the assembler can't deal with the characters in our method
1991         names.
1992
1993         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
1994
1995         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
1996         call.
1997
1998         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
1999         a bit to also restore %rax.
2000
2001 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2002
2003         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2004
2005 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2008         arguments.
2009
2010 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2011
2012         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2013
2014         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2015         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2016
2017         * exceptions-ppc64.c: Removed.
2018
2019         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2020
2021 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2022
2023         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2024         tramp-ppc64.c.
2025
2026         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2027
2028         * tramp-ppc64.c: Removed.
2029
2030 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2033         the TYPESPEC table.
2034
2035 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2036
2037         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2038
2039         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2040         mini-ppc.h instead of mini-ppc64.h.
2041
2042         * mini-ppc64.h: Removed.
2043
2044 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2045
2046         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2047         
2048         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2049         
2050 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2051
2052         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2053         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2054         code easier.
2055
2056 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2057
2058         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2059
2060 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2061
2062         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2063
2064 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2065
2066         * basic-simd.cs: Tests for operator == and != on Vector4f.
2067
2068 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2069
2070         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2071
2072         * simd-intrinsics.c: Kill useless enum.
2073
2074 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2075
2076         * cpu-mips.md: add long_conv_to_ovf_i4_2
2077         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2078
2079 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2080
2081         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2082         
2083         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2084
2085 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2086
2087         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2088         
2089 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2090
2091         * basic-simd.cs: Add tests for new methods.
2092
2093 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2094
2095         * simd-intrinsics.c: Add support for operator == and !=
2096         on Vector4(u)i.
2097
2098         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2099
2100 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2101
2102         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2103
2104 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2107
2108         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2109         MONO_PATCH_INFO_ICALL_ADDR.
2110
2111         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2112
2113         * aot-compiler.c: Resurrect full-aot support.
2114
2115 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2116
2117         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2118         
2119 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2120
2121         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2122         
2123 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2124
2125         * basic-simd.cs: Fix tests to work under ppc.
2126         Remove tests for methods that will be removed.
2127
2128 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2129
2130         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2131         generic type (via a typedef or typeref) correctly.
2132
2133 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2134
2135         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2136         diagnose an assertion failure.
2137
2138 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2139
2140         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2141         Fix trampoline size.
2142
2143         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2144         conversion opcodes are implemented natively instead via emulation.
2145
2146 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2147
2148         * cpu-mips.md: remove mips_xori
2149
2150         * mini-ops.h:  remove mips_xori
2151
2152         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2153
2154         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2155         
2156         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2157         
2158 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2159
2160         * cpu-mips.md: fix instruction lengths.
2161
2162         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2163
2164         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2165
2166         * mini-ops.h: fix slti / sltiu op profiles.
2167         
2168 2008-12-02  Martin Baulig  <martin@ximian.com>
2169
2170         * method-to-ir.c (mono_method_to_ir): Disable debugging
2171         information for the init locals block to make the debugger stop
2172         after all locals have been initalized.
2173
2174 2008-12-02  Martin Baulig  <martin@ximian.com>
2175
2176         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2177         running inside the debugger.
2178
2179 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2180
2181         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2182         is enabled.
2183
2184         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2185         alu->alu imm optimization which only shows if deadce is disabled.
2186
2187         * aot-compiler.c: Rename the function names for the binary and asm writers
2188         so they can coexist in the same process. Rework the xdebug code to use the
2189         asm writer. This avoids the need to call into the runtime to dump the
2190         debugging info. Add more debugging info for types.
2191
2192         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2193
2194         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2195         cpu description tables, they can't occur in cpu-<ARCH>.md.
2196
2197         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2198         the stack in CEE_LDFLDA. Fixes #450542.
2199
2200         * generics.cs: Add a new test.
2201
2202 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2203
2204         * mini-ops.h: updated MIPS opcodes
2205         * mini-mips.c: decompose long opts
2206         * mini-mips.h: decompose long opts
2207         
2208 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2209
2210         * cpu-mips.md: fix length on int_rem_un
2211         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2212         
2213 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2216
2217         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2218
2219 2008-11-29  Martin Baulig  <martin@ximian.com>
2220
2221         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2222         mono_debug_using_mono_debugger() in addition to the
2223         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2224
2225 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2226
2227         * mini-ops.h: updated more MIPS opcodes
2228         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2229         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2230         
2231 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2232
2233         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2234
2235 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2236
2237         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2238         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2239         * mini-ops.h: correct selected mips opcode entries
2240         
2241 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2242
2243         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2244         make them work.
2245
2246 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2247
2248         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2249
2250 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2251
2252         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2253         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2254         * mini-mips.h: disable IMT
2255         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2256         
2257 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2258
2259         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2260
2261 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2262
2263         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2264
2265 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2266
2267         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2268         consistency.
2269
2270 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2271
2272         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2273         for Set/GetVector aligned versions.
2274
2275 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2276
2277         * basic-simd.cs: Add tests for Get/SetVector.
2278
2279 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2280
2281         * mini.c: Removed g_slist_append_mempool().  Now in
2282         metadata/mempool.c.
2283
2284 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2285
2286         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2287         size properly and make the bounds check optional.
2288
2289         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2290         for SetVector and IsAligned.
2291
2292 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * mini.c: Remove unused mono_normalize_opcodes () function.
2295
2296 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2297
2298         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2299         using the new atomic add ops now.
2300
2301         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2302         add.
2303
2304 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2305
2306         * mini-ppc64.c: Several fixes.
2307
2308 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2309
2310         * cpu-mips.md: added jump_table
2311         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2312
2313 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2314
2315         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2316
2317 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2318
2319         * mini-ops.h: corrected a handful of MIPS opcodes.
2320
2321 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2322
2323         * aot-compiler.c: MIPS to use ELF writer
2324
2325 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2326
2327         * mini-codegen.c: remove MIPS specific assert.
2328
2329 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2330
2331         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2332         fixes.  PPC64 now passes most of the runtime regressions.
2333
2334 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2335
2336         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2337         volatile intervals a bit.
2338
2339 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2340
2341         * basic-long.cs: New test case.
2342
2343 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * mini.c (mini_method_compile): Disable globalra for large methods for 
2346         now.
2347
2348         * regalloc2.c (order_moves): Add fp support.
2349
2350         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2351         source bblock ends with an OP_BR_REG.
2352
2353         * ratests.cs: Add a new test.
2354
2355 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2356
2357         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2358         sharing.  PPC64 now passes generics.exe.
2359
2360 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2361
2362         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2363
2364 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2367         memory when mono_jit_info_table_find () can't find the method in the
2368         LMF case.
2369
2370         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2371         AOTed code too.
2372         
2373         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2374         writer too.
2375
2376 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2377
2378         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2379         Several fixes.  PPC64 now runs exceptions.exe and
2380         devirtualization.exe.
2381
2382 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2383
2384         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2385         arrays.exe and basic-math.exe.
2386
2387 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2388
2389         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2390         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2391
2392 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2393
2394         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2395
2396 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2397
2398         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2399
2400         * ir-emit.h: Move macros from method-to-ir.c to here.
2401
2402 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2403
2404         * mini-ops.h: Correct the long simd ops to use LREG.
2405
2406 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2409         
2410         * mini-ops.h: Correct the dreg type of a few long opcodes.
2411
2412         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2413         Add netbsd support.
2414
2415 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2416
2417         * mini-ppc.c: remove negative stack references in epilog
2418         for platforms that don't support the red zone.
2419
2420 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2421
2422         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2423         point regs.  Now PPC64 passes basic-calls.exe.
2424
2425 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2426
2427         * basic-simd.cs: Add tests for accessors of Vector2l.
2428
2429 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2430
2431         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2432
2433         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2434         
2435         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2436
2437 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2438
2439         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2440         PPC64 passes basic-long.exe.
2441
2442 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2443
2444         * decompose.c: Decompose carry and overflow add on PPC64 like on
2445         other 64 bit archs.  Don't decompose sub at all on PPC64.
2446
2447         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2448         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2449         basic-long.exe.
2450
2451 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2452
2453         * basic-simd.cs: Add tests for accessors of Vector2d.
2454
2455 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2456
2457         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2458
2459         * cpu-x86.md: Same.
2460
2461         * mini-x86.c (mono_arch_output_basic_block): Same.
2462         
2463         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2464
2465 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2466
2467         * basic-simd.cs: Add tests for accessors of Vector4f.
2468
2469 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2470
2471         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2472
2473         * cpu-x86.md: Same.
2474
2475         * mini-x86.c (mono_arch_output_basic_block): Same.
2476         
2477         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2478
2479 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2480
2481         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2482
2483 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2484
2485         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2486
2487         * cpu-x86.md: Same.
2488
2489         * mini-x86.c (mono_arch_output_basic_block): Same.
2490         
2491         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2492
2493 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2494
2495         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2496
2497 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * simd-intrinsics.c: Enable setters for Vector16sb.
2500
2501 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2502
2503         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2504
2505         * cpu-x86.md: Same.
2506
2507         * mini-x86.c (mono_arch_output_basic_block): Same.
2508         
2509         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2510
2511 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2512
2513         * simd-intrinsics.c: Implement setter for Vector8us.
2514
2515 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2518         for dead variables.
2519
2520 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2521
2522         * mini-ppc.c: remove references to the red zone in the prolog
2523         (for systems that don't support it).
2524
2525 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2526
2527         * cpu-ppc64.md: Fixed a few instruction lengths.
2528
2529         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2530         now.
2531
2532 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2533
2534         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2535         basic.exe now.
2536
2537 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2538
2539         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2540
2541 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2542
2543         * mini-ops.h: Added OP_INSERT_I2.
2544
2545         * cpu-x86.md: Same.
2546
2547         * mini-x86.c (mono_arch_output_basic_block): Same.
2548         
2549         * simd-intrinsics.c: Implement setter for Vector8s.
2550
2551         * simd-methods.h: Add the names of get setters of Vector8s.
2552
2553 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2556         
2557         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2558         parameters.
2559
2560         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2561
2562 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2563
2564         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2565         for PPC64.  An empty program runs now.
2566
2567 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2570
2571         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2572         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2573         info for JITted code is emitted into a shared library, loadable into gdb.
2574
2575 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2576
2577         * Makefile.am: Changes to build PPC64.
2578
2579         * mini-arch.h: Include mini-ppc64.h on PPC64.
2580
2581 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2582
2583         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2584         in PPC code up to r119147.
2585
2586 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2587
2588         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2589         cpu-ppc64.md: Changes for PPC64.
2590
2591         Based on code submitted by andreas.faerber@web.de at
2592         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2593         X11/MIT license.
2594
2595 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2596
2597         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2598         cpu-ppc64.md: Copied from the corresponding PPC files from
2599         r118846.
2600
2601 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2602
2603         * mini-ops.h: Added OP_ROUND.
2604
2605         * cpu-x86.md: Added round.
2606
2607         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2608
2609         * basic-math.cs: Added test_0_round to test rounding.
2610
2611         Contributed under MIT/X11 license.
2612
2613 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2614
2615         * aot-compiler.c : Fix the Winx64 build.
2616
2617         Contributed under MIT/X11 license.
2618
2619 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2620
2621         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2622         in OP_EXTRACT_R8 to avoid possible stack corruption.
2623
2624 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2625
2626         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2627
2628         * cpu-x86.md: Added extract_r8.
2629
2630         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2631         
2632         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2633         a couple of OP_EXTRACT_I4.
2634
2635         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2636
2637         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2638
2639 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2640
2641         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2642         and not 4.1. 
2643
2644 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2647         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2648
2649         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2650         are not needed any more.
2651
2652         * mini.h: Remove the unused INS_LIST macros.
2653
2654         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2655         longer needed.
2656
2657         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2658         ir-emit.h.
2659
2660         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2661         mono_alloc_ireg () instead.
2662
2663         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2664         macros.
2665
2666         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2667         on amd64.
2668
2669         * aot-runtime.c (load_aot_module): Disable AOT when running under
2670         CAS.
2671
2672         * mini-amd64.h: Change the monitor fastpath defines to check for
2673         !PLATFORM_WIN32 so they work on *bsd too.
2674
2675         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2676
2677         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2678
2679         * mini.h (MonoCompile): Remove new_ir flag.
2680
2681         * regalloc.h regalloc.c: Remove unused code.
2682
2683         * cpu-*.md: Remove more unused opcodes.
2684
2685         * simple-cee-ops.h simple-mini-ops.h: Removed.
2686
2687         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2688         
2689 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2690
2691         * aliasing.h: Removed.
2692
2693         * *.c: Remove references to aliasing.h and inssel.h.
2694
2695         * mini.c: Remove additional unused functions.
2696
2697         * mini-ops.h cpu-*.md: Remove unused opcodes.
2698
2699 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2700
2701         Remove the old JIT code.
2702
2703         * inssel*.brg: Removed.
2704
2705         * ssa.c abcremoval.c aliasing.c: Removed.
2706
2707         * ssa2.c: Renamed to ssa.c.
2708
2709         * abcremoval2.c: Renamed to abcremoval.c.
2710
2711         * *.c: Removed all !cfg->new_ir code.
2712
2713         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2714         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2715
2716         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2717         
2718 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2721         to simplify the code and cut back on the number of global symbols in the AOT
2722         file.
2723         
2724         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2725
2726 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2729         with the got/got_info tables.
2730
2731         * mini.h: Bump AOT file format version.
2732         
2733         * unwind.h: New file, contains definitions for stack unwinding.
2734
2735         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2736         to cfg->unwind_ops.
2737         
2738         * aot-compiler.c: Generalize the emitting of unwind information to use the
2739         information in cfg->unwind_ops.
2740
2741         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2742
2743         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2744         AOT method frames. Enable writing symbols for methods by default.
2745
2746 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2747
2748         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2749         and make it work with vectors of element sizes 1, 2 and 4.
2750
2751         * simd-intrinsics.c: Enable getter for all vectors with element size
2752         1, 2 or 4.
2753
2754         * simd-methods.h: Add the names of other getters.
2755
2756         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2757
2758         * cpu-x86.md: Same.
2759
2760         * mini-x86.c: Same.
2761
2762 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2763
2764         * mini-ppc.h: portability fix.
2765
2766 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2767
2768         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2769         buggy and will overwrite it.
2770
2771 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2774         Use it to emit local symbols for all methods so AOTed methods show up with
2775         their full name in gdb/valgrind output.
2776
2777 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2778
2779         * mini-ppc.c: portability fixes.
2780
2781 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2784         entries out of the if (!generic_shared...) code so it is always done.
2785         (mono_class_init_trampoline): Do the patching when running under valgrind
2786         too, newer versions of valgrind have no problems with it.
2787
2788 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2791         further sections.
2792
2793 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2794
2795         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2796         filters.
2797
2798 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2799
2800         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2801
2802 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2803
2804         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2805
2806         * cpu-x86.md: Same.
2807
2808         * mini-x86.c: Same.
2809
2810         * simd-intrinsics.c: Same.
2811
2812 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2813
2814         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2815
2816 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2817
2818         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2819         to work with more Vector types.
2820
2821 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2822
2823         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2824         store the elemens directly instead of using and intermediate.
2825
2826 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2829
2830         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2831         to preserve %eax for aot plt trampolines.
2832
2833         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2834         (encode_method_ref): Flag synchronized methods so they won't go through
2835         the AOT trampoline.
2836
2837         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2838         wrappers.
2839
2840         * cpu-ia64.md (jmp): Increase max length.
2841
2842 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2845         open generic classes.
2846
2847         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2848
2849         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2850         box+brtrue optimization since it causes test failures on x86.
2851
2852 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2855
2856         * cpu-x86.md: Same.
2857
2858         * mini-x86.c: Same.
2859
2860         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2861         for simd ctor values. 
2862
2863         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2864         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2865
2866 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2867
2868         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2869         LogicalRightShift.
2870
2871         * simd-instrincs.c: Same.
2872
2873         * basic-simd.cs: Same.
2874
2875 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * ratests.cs: Add more tests.
2878
2879         * regalloc2.c (add_spill_code): Handle more corner cases.
2880
2881 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2882
2883         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2884         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2885         both the source an destination of an instruction.
2886
2887 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2888
2889         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2890         wapihandles.c: more portability changes.
2891
2892 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2893
2894         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2895         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2896         safe to execute in a signal handler and the kernel provides better
2897         the info in /proc/self/smaps. Avoid the assert on sigaction during
2898         cleanup.
2899
2900 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
2903         do the bblock linking hack if it is actually needed.
2904
2905         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2906         up linking.
2907
2908         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2909         crash problem is fixed.
2910
2911         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2912         bblocks.
2913
2914         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2915         for catch clauses.
2916         (mini_method_compile): Set the starting value of next_vreg to 
2917         MAX_IREGS + MAX_FREGS when using globalra.
2918
2919         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2920         filter clauses with BB_EXCEPTION_HANDLER.
2921
2922         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2923
2924 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2925
2926         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2927         space for stdcall.  Fixes regressions on Win32.
2928
2929 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2932         bblocks.
2933         (linear_scan): Remove an assert which doesn't seem to be needed.
2934
2935         * local-propagation.c (mono_local_deadce): Avoid a call to
2936         MONO_DELETE_INS which would screw up the instruction linking.
2937
2938         * mini.c (mono_decompose_op_imm): Make this work with globalra.
2939
2940         * regalloc2.c: Upgrade to work the current JIT code.
2941
2942 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
2943
2944         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
2945         case.
2946
2947         * aot-runtime.c: Remove some dead code.
2948
2949         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
2950         consistency.
2951         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
2952
2953         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
2954         trampolines using sscanf since atoi doesn't work on large unsigned values.
2955
2956         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
2957         Initialize code_size.
2958
2959 2008-11-08  Mark Probst  <mark.probst@gmail.com>
2960
2961         * method-to-ir.c (mini_emit_inst_for_method): Make
2962         Interlocked.CompareExchange work for Int arguments on 32 bit
2963         archs, as well.
2964
2965 2008-11-07  Mark Probst  <mark.probst@gmail.com>
2966
2967         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
2968
2969 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
2970
2971         * main.c Fix MSVC build.
2972
2973         Contributed under MIT/X11 license.
2974
2975 2008-11-06  Mark Probst  <mark.probst@gmail.com>
2976
2977         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
2978         alignment larger than 8 bytes are aligned correctly, too.
2979
2980         * mini.c: Honor the min_align field of MonoClass when laying out
2981         the stack.
2982
2983 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
2986
2987         * aot-compiler.c (emit_plt): Fix a warning.
2988         
2989         * aot-compiler.c: Implement ARM support in the binary writer.
2990
2991 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2992
2993         * basic-simd.cs: Add test for getter with byref arg.
2994         Fix the naming of a few tests.
2995         Add missing checks to a test.
2996
2997 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3000
3001         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3002         most of the full-aot support for monitor enter/exit trampolines.
3003
3004         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3005         enter/exit trampoline creation functions.
3006
3007         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3008         make dist.
3009
3010 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3011
3012         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3013         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3014         implement the needed functionality without adding crap to the runtime.
3015
3016 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3019         non-x86 builds.
3020
3021         * mini.c (mono_build_date): New global version holding the build date in
3022         string format.
3023         
3024         * Makefile.am (buildver.c): Generate a file containing the build date.
3025
3026         * main.c: Set the build date from the generated file.
3027
3028         * mini.c (mono_get_runtime_build_info): New helper function returning build
3029         information in a string format.
3030         
3031         * driver.c (mono_main): Print the build date in --version.
3032
3033         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3034         file when the bind-to-runtime-version option is used.
3035
3036 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3037
3038         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3039
3040 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3041
3042         * simd-methods.h: Rename prefetch methods.
3043
3044         * simd-intrinsics.c: Same.      
3045
3046 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3047
3048         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3049         sizes.
3050
3051 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * aot-compiler.c: Use the bundled elf header files instead of depending on
3054         the system one.
3055         
3056         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3057         mempool.
3058
3059         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3060         on every call.
3061
3062 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3063
3064         * cpu-x86.md: Add store nta ops.
3065
3066         * mini-ops.h: Same.
3067
3068         * mini-x86.c: Same.
3069
3070         * mini.h: Add an enum for simd prefetch modes.
3071
3072         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3073         of store. Use the changed code to support store nta.
3074
3075         * simd-intrinsics.c: Add prefetch ops for all vector types.
3076
3077 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3080         threads.
3081         
3082         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3083         names.
3084
3085         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3086         trampolines.
3087
3088 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3089
3090         * mini-x86.c: Fixed commit.
3091
3092 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3095
3096 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3097
3098         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3099         and MONITOR_EXIT, for the ASM fastpaths.
3100
3101         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3102         available.
3103
3104         * mini.c, patch-info.h: Signature and patch infos for
3105         Monitor.Enter/Exit trampolines.
3106
3107         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3108
3109         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3110         Monitor.Enter/Exit ASM fastpath for Linux.
3111
3112 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3115
3116         * objects.cs: Add a new test.
3117         
3118         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3119
3120         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3121         if MONO_LOG_LEVEL is set.
3122
3123         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3124
3125         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3126
3127         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3128         
3129         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3130         of file offsets. Align the sections belonging to the data segment to 
3131         PAGESIZE.
3132
3133 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3136         elf.h. Port it to amd64.
3137
3138 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3139
3140         * driver.c: Enable SIMD by default.
3141
3142 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3143
3144         * cpu-x86.md: Add prefetch op.
3145
3146         * mini-ops.h: Same.
3147
3148         * mini-x86.c: Same.
3149
3150         * mini.h: Add an enum for simd prefetch modes.
3151
3152         * simd-methods.h: Add prefetch function names.
3153
3154         * simd-intrinsics.c: Add prefetch ops for all vector types.
3155
3156 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3157
3158         * aot-compiler.c (emit_bytes): Speed this up a little.
3159
3160 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * aot-compiler.c: Add JIT time etc. statistics.
3163         
3164         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3165
3166         * mini.h (MonoCompile): Add 'got_offset' field.
3167
3168         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3169         method_got_offsets array.
3170
3171         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3172         wrappers.
3173
3174         * aot-compiler.c (compile_method): Add generic method instances referenced
3175         by the method to the list of methods to be compiled, this is required so if
3176         A<T> references B<T>, and another assembly references A<int>, then it will
3177         also get a copy of B<int>.
3178
3179         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3180         when checking for monitor enter/exit.
3181
3182 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3183
3184         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3185         for Monitor.Enter and Monitor.Exit if enabled.
3186
3187         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3188         Solaris.
3189
3190 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3193         of an OP_MOVE. Fixes #440046.
3194
3195         * basic-long.cs: Add a new test.
3196
3197 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3198
3199         * mini.h: Add synchronization note for the managed counter-part.
3200
3201         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3202         returns the simd caps of the current cpu.
3203
3204 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3205
3206         * basic-simd.cs: Remove Console.WriteLine.
3207
3208 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3209
3210         * basic-simd.cs: New tests for Vector2ul.
3211
3212 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3213
3214         * simd-intrinsics.c: Add new vector type Vector2ul.
3215
3216 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3217
3218         * basic-simd.cs: New tests for Vector2l.
3219
3220 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3221
3222         * cpu-x86.md: Add long version of most packed int ops.
3223
3224         * mini-ops.h: Same.
3225
3226         * mini-x86.h: Same.
3227
3228         * simd-intrinsics.c: Add new vector type Vector2l.
3229
3230 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3231
3232         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3233
3234         * simd-methods.h: Remove SN_op_BitwiseXor.
3235
3236 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3237
3238         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3239         alignment.
3240
3241 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3242
3243         * basic-simd.cs: Test for Vector2d.
3244
3245         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3246         value.
3247
3248 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * cpu-x86.md: Add double version of all packed float ops.
3251
3252         * mini-ops.h: Same.
3253
3254         * mini-x86.h: Same.
3255
3256         * simd-intrinsics.c: Add new vector type Vector2d.
3257
3258         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3259
3260         * simd-methods.h: Add Duplicate.
3261
3262 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3263
3264         * basic-simd.cs: Test for packing with signed saturation.
3265
3266 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3269         found in the TYPESPEC table.
3270
3271 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3272
3273         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3274         too.
3275
3276         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3277
3278         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3279         instead of the RVA, since the RVA can be changed by tools like the cil 
3280         stripper.
3281
3282         * method-to-ir.c (mono_method_to_ir2): Ditto.
3283
3284         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3285         (deserialize_variable): Ditto.
3286
3287 2008-10-25  Martin Baulig  <martin@ximian.com>
3288
3289         * debug-mini.c (write_variable): Use
3290         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3291
3292 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3293
3294         * cpu-x86.md: Add unsigned variants of packd and packw.
3295
3296         * mini-ops.h: Same.
3297
3298         * mini-x86.h: Emit the right instruction for packd and packw.
3299         Add unsigned variants of packd and packw.
3300
3301         * simd-intrinsics.c: Packd and packw were used in place of their
3302         unsigned variants. Change that.
3303         Add intrinsics for (Signed)PackWithSignedSaturation.
3304
3305         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3306
3307 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3310
3311 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3312
3313         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3314
3315         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3316
3317         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3318         sse instructions.
3319
3320         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3321
3322 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3323
3324         * method-to-ir.c, mini.c: Special casing for the synchronized
3325         wrapper for the ldtoken+GetTypeFromHandle case.
3326
3327 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3330
3331         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3332         created/split bblocks.
3333
3334 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3335
3336         * mini-ops.h: Add packed signed mul high.
3337         
3338         * cpu-x86.md: Same.
3339
3340         * mini-x86.c (mono_arch_output_basic_block): Same.
3341
3342         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3343
3344         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3345
3346 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         * basic-simd.cs: Tests for Vector16sb.
3349
3350 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3353
3354 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3355
3356         * mini-ops.h: Add packed signed min, max and compare greater.
3357         
3358         * cpu-x86.md: Same.
3359
3360         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3361         saturation.
3362
3363         * simd-methods.h: Add CompareGreaterThan.
3364
3365         * simd-methods.h: Remove CompareEquals.
3366
3367         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3368
3369         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3370
3371         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3372         CompareEqual.
3373
3374 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3375
3376         * basic-simd.cs: Fix tests due to change in the API.
3377
3378 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3381
3382 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3383
3384         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3385
3386         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3387         inst_offset as this has invalid values for LDADDR.
3388
3389 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3390
3391         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3392
3393         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3394
3395 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3398         for accessing field->data.
3399
3400 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3401
3402         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3403
3404 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3405
3406         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3407
3408         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3409
3410 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3413         from the cfg mempool.
3414
3415 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3416
3417         * basic-simd.cs: Tests for new methods in Vector8us.
3418
3419 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * mini-ops.h: Add multiply and store high.
3422         
3423         * cpu-x86.md: Same.
3424
3425         * mini-x86.c (mono_arch_output_basic_block): Same.
3426
3427         * simd-methods.h: Same.
3428
3429         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3430         and CompareEqual.
3431
3432 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3435         mono_class_setup_vtable ().
3436
3437         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3438         mono_class_get_vtable_entry () for accessing klass->vtable.
3439
3440         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3441
3442         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3443         found.
3444
3445         * method-to-ir.c (mono_save_token_info): Don't save references made from
3446         wrappers.
3447
3448         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3449         of generic instances.
3450
3451         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3452
3453 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3454
3455         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3456         OP_JMP depends on the method signature.  Calculate it properly.
3457
3458 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3459         
3460         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3461         called directly.
3462
3463         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3464         instances.
3465         (emit_extra_methods): Add another table mapping method indexes to 
3466         offsets in the extra_method_info table.
3467
3468         * mini.h: Bump AOT file format version.
3469         
3470         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3471         and mono_aot_get_method_from_token () into one function.
3472
3473 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3474
3475         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3476         separate counter.
3477
3478 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3479
3480         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3481         methods.
3482
3483         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3484         disable_aot.
3485
3486         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3487
3488         * mini.h: Bump aot file format version.
3489
3490         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3491         AOT file can contain native code for methods which are not in the METHOD
3492         table. Generate code for non-sharable generic instances of generic methods
3493         found in the METHODSPEC table.
3494         
3495         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3496         encoding generic type handles.
3497
3498         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3499         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3500
3501         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3502         macros + MONO_ADD_INS.
3503
3504         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3505         context as well.
3506
3507         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3508
3509         * mini.h: Bump aot file format version.
3510
3511         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3512
3513 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3514
3515         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3516         platforms, with definable stack alignment value.  Set to 16 now
3517         for all platforms.
3518
3519         * mini.c, mini.h, driver.c: Command line option for disabling
3520         stack alignment.
3521
3522 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3523
3524         * basic-simd.cs: Tests for new methods in Vector4ui.
3525
3526 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3527
3528         * mini-ops.h: Add packed int shuffle.
3529         
3530         * cpu-x86.md: Same.
3531
3532         * mini-x86.c (mono_arch_output_basic_block): Same.
3533
3534         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3535         extract mask, max, min, shuffle.
3536
3537         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3538
3539 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3540
3541         * basic-simd.cs: Tests for new methods in Vector8us.
3542
3543 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3544
3545         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3546         RuntimeTypeHandle, not a TypedReference.
3547
3548 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3549
3550         * simd-intrinsics.c: remove relocations.
3551
3552 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3555         optimizations from the x86 backend.
3556
3557 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3558
3559         * simd-methods.h, simd-intrinsics.c: debloat method names and
3560         prepare for no relocations.
3561
3562 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3563
3564         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3565         
3566         * cpu-x86.md: Same.
3567
3568         * mini-x86.c (mono_arch_output_basic_block): Same.
3569
3570         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3571         extract mask, max, min and sum of absolute differences.
3572
3573         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3574         method name.
3575
3576 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3577
3578         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3579         Renamed one test for consistency.
3580
3581 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3582
3583         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3584         fix to the code that deal with other blocks.
3585
3586 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3587
3588         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3589
3590 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3591
3592         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3593         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3594         able to process the source reg.
3595
3596 2008-10-16  Martin Baulig  <martin@ximian.com>
3597
3598         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3599
3600         * inssel.brg: Add `OP_HARD_NOP'.
3601
3602         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3603
3604         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3605         `OP_HARD_NOP' instruction when running inside the debugger.
3606
3607         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3608         `OP_HARD_NOP' instruction when running inside the debugger.
3609
3610 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3611
3612         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3613         now works. The issue with the regalloc tripping up no longer
3614         happens.
3615
3616         * simd-intrinsics.c (load_simd_vreg): Same.
3617
3618 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3619         
3620         * basic-simd.cs: Tests for new Vector8ui methods.
3621
3622 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3623
3624         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3625         only for type. This fixes crashes where MonoInst::klass is checked
3626         for ops of type != VTYPE or OBJ.
3627
3628         * simd-intrinsics.c (load_simd_vreg): Same.
3629
3630 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3631
3632         * mini-ops.h: Add ops for packed shuffle/max/avg and
3633         extract mask.
3634         
3635         * cpu-x86.md: Same.
3636
3637         * mini-x86.c (mono_arch_output_basic_block): Same.
3638
3639         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3640         extract mask.
3641
3642         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3643         to emit extract mask op.
3644
3645         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3646         to emit word shuffles.
3647
3648 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3649
3650         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3651         the largest alignment needed by a variable, but at least
3652         sizeof(gpointer).
3653
3654 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3655
3656         * basic-simd.cs: Tests for the fixes in the last commit.
3657
3658 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3659
3660         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3661         no longer handles STACK_PTR input.
3662
3663         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3664
3665         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3666         get_simd_vreg   but handles STACK_PTR input.
3667
3668         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3669         as the input can be an arbitrary pointer.
3670
3671         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3672         LDADDR local optimization directly otherwise use a store op.
3673
3674 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3675
3676         * basic-simd.cs: Tests for dup low and dup high.
3677
3678 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3679
3680         * mini-ops.h: Add dup low and dup high ops.
3681         
3682         * cpu-x86.md: Same.
3683
3684         * mini-x86.c (mono_arch_output_basic_block): Same.
3685
3686         * simd-intrinsics.c (vector4f_intrinsics): Same.
3687
3688 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3689
3690         * basic-simd.cs: Tests for recently added functionality.
3691
3692 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3693
3694         * mini-ops.h: Add remaining sse1 fp ops.
3695         
3696         * cpu-x86.md: Add remaining sse1 fp ops.
3697
3698         * mini-x86.c (mono_arch_output_basic_block): Same.
3699
3700         * mini.h: Add enum for simd FP compare conditions.
3701
3702         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3703
3704         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3705         so the backed can generate the appropriate op.
3706
3707 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3708         This patch squeese one more byte from the SimdIntrinsc struct.
3709
3710         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3711         a a shift amount intead of simply or'ing it.
3712
3713         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3714
3715         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3716         byte so we can have an aditional flags field without increasing struct size.
3717
3718         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3719         against the simd_supported_versions bitmask.
3720
3721         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3722
3723 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3724
3725         * mini.c: remove rawbuffer code (the only use here is unsafe because
3726         it takes locks during signal handling and the kernel now provides much
3727         better info in proc/pid/smaps these days).
3728
3729 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3732         OP_X86_PUSH_OBJ. Fixes #434620.
3733
3734         * objects.cs: Add a test.
3735         
3736 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3737
3738         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3739         that the packuswb/packusdw don't work with unsigned numbers for what
3740         would be negative numbers in signed format.
3741
3742         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3743         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3744
3745         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3746
3747         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3748
3749         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3750
3751         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3752
3753         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3754         add more ops.
3755
3756         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3757         version as the enum in mini.h.
3758
3759         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3760         for sse3 ops, check the simd_version field if present. This way the code
3761         works with all versions of sse.
3762
3763 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3764
3765         * simd-intrinsics.c: Fixed intrinsic name typo.
3766
3767         * mini.h: Added missing simd exported function.
3768
3769         * basic-simd.cs: Added tests for Vector4ui.
3770         Fixed broken test for Vector16b.
3771
3772 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3775         the max length to 64.
3776
3777 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3778
3779         * method-to-ir.c: Only do the fast virtual generic method call for
3780         non-wrapper methods.
3781
3782         * mini.h, mini-trampolines.c: The new generic virtual remoting
3783         trampoline handles virtual method calls via the vtable (as done by
3784         the fast virtual generic method calls) to remoting proxies.
3785
3786         * mini.c (mono_jit_create_remoting_trampoline): For generic
3787         methods reate a generic virtual remoting trampoline.
3788
3789         * mini-amd64.h: Enable fast virtual generic method calls again.
3790
3791 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3792
3793         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3794         restore registers when doing tail calls.
3795
3796 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3797
3798         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3799         Vector4ui.
3800
3801 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3802
3803         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3804
3805 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3806
3807         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3808
3809 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3810
3811         * basic-simd.cs: Retrofit for API changes.
3812
3813 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3814
3815         * mini-ppc.c: Handle integer stack arguments for tail calls.
3816
3817 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3818
3819         * optflags-def.h: Removed sse3 optimization.
3820
3821         * driver.c: Same.
3822
3823         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3824         sse3.
3825
3826         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3827
3828         * mini.h: Added enumeration with simd versions.
3829
3830         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3831         for detecting SSE3.
3832
3833         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3834
3835         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3836
3837 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3838
3839         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3840
3841         * basic-simd.cs: Fixed test naming.
3842
3843 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3844
3845         * mini-ops.h: Added ops for packed and saturated math, shifts
3846         and packing/unpacking.
3847
3848         * cpu-x86.md: Added descriptors for the above ops.
3849
3850         * mini-x86.c: Added code to emmit the above ops.
3851
3852         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3853
3854 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * aot-compiler.c (compile_method): Enable AOT for generic code.
3857
3858         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3859
3860 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3861
3862         * mini.c: add a workaround for a common screwup that ends up blamed
3863         to mono (other processes blocking signal delivery).
3864
3865 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3868         in the LDFLD/STFLD opcodes. Fixes #432673.
3869
3870         * iltests.il.in: Add a new test.
3871
3872 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3873
3874         * mini-arm.c: attach the thread in unmanaged->managed transitions
3875         using delegates (bug #433148).
3876
3877 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3878
3879        * basic-simd.cs: Use new ShuffleSel constants.
3880
3881 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3882
3883         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3884
3885         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3886         only disable simd intrinsics if no sse2 is detected.
3887
3888         * optflags-def.h: Added sse3.
3889
3890         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3891         is disabled.
3892
3893 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3896         when adding delegate-invoke wrappers.
3897
3898 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * Makefile.am: Reenable the simd tests.
3901
3902 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3903
3904         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3905           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3906           other vreg is allocated to that hreg.
3907
3908         Contributed under MIT/X11 license.
3909
3910 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3913         yet checked in.
3914
3915 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3916
3917         * basic-simd.cs: New test suite for SIMD intrinsics.
3918
3919         * Makefile.am: Added new tests.
3920
3921 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3924
3925         * mini-ops.h: Same.
3926
3927         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3928
3929         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3930         using SSE2 aware opcodes.
3931
3932         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3933         is enabled, this code path is only reachable if conversion ops are emmited after
3934         mono_method_to_ir.
3935
3936         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
3937
3938         This optimization saves 6 bytes per conversion against the old version.
3939
3940 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3941
3942         * aot-compiler.c (compile_method): Don't skip methods referencing 
3943         generic methods without a corresponding entry in token_info_hash, since
3944         encode_method_ref () can handle all generic methods now.
3945
3946         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
3947         generic context is set.
3948         
3949         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
3950         generic sharing of LDTOKEN.
3951
3952 2008-10-06  Mark Probst  <mark.probst@gmail.com>
3953
3954         * mini-amd64.h: Temporarily disabled fast virtual generic method
3955         calls because it breaks the System.Runtime.Remoting tests.
3956
3957 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
3960
3961         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
3962         so inlining actually works.
3963         (check_inline_caller_method_name_limit): Ditto.
3964
3965 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
3966
3967         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
3968         64 bit safety (from Olaf Hering and Andreas Färber).
3969
3970 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3971         
3972         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
3973         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
3974         unused virtual call support code.
3975
3976         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
3977         
3978         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
3979         which can't use aot trampolines.
3980         (decode_patch): Don't create aot trampolines for methods which can't use
3981         them.
3982
3983         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
3984         use aot trampolines.
3985
3986         * mini.h: Bump AOT image format version.
3987         
3988 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
3991         to save_token_info () since cmethod is inflated for constrained calls.
3992
3993         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
3994
3995 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3996
3997         * Makefile.am: Add build rules for ppc64.
3998         This avoids the build failing at pedump with unresolved symbols
3999         due to lack of arch_sources. Instead it will now fail earlier
4000         due to lack of cpu-ppc64.md.
4001
4002         Contributed under MIT/X11 license.
4003
4004 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4005
4006         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4007         tail calls.
4008
4009         * iltests.il.in: Add test case for tail call with many arguments.
4010
4011 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4012
4013         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4014         to the fast virtual generic method code until the aot case is fixed.
4015
4016 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4017
4018         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4019
4020 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4021
4022         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4023         thunks.
4024
4025 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4026         
4027         * simd-intrinsics.c: Forgot to add this one.
4028
4029         * mini-codegen.c: Fix macro in case SIMD is not supported.
4030
4031 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4032         
4033         This patch land initial JIT support for simd intrinsics.
4034
4035         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4036
4037         * Makefile.am: Added simd-intrinsics.c
4038
4039         * simd-intrinsics.c: New file with simd instrinsic related
4040         code.
4041
4042         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4043
4044         * cpu-x86.md: Add simd related instructions.
4045
4046         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4047
4048         * driver.c: Added two new --regression variants.
4049
4050         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4051
4052         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4053
4054         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4055         extract some complicated logic to helper functions.
4056
4057         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4058
4059         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4060
4061         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4062         the specialized simplification pass.
4063
4064         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4065
4066         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4067
4068         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4069         table.
4070
4071         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4072         if MONO_ARCH_NEED_SIMD_BANK is defined.
4073
4074         * mini-ops.h: Added the new simd ops.
4075
4076         * mini-x86.c: Added mono_arch_xregname.
4077
4078         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4079
4080         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4081
4082         * mini-x86.h: Define simd related MONO_ARCH macros.
4083
4084         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4085
4086         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4087
4088         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4089         MONO_CLASS_IS_SIMD to deal with simd related IR.
4090
4091         * mini.h (MonoInst): Added spill_var to the backend union.
4092
4093         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4094
4095         * mini.h: Added forward declarations of the new simd fuctions.
4096
4097         * optflags-def.h: Added new optimization names SIMD.
4098
4099         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4100
4101         * regalloc.h: Added support for working with 3 register banks.
4102
4103         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4104
4105         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4106
4107 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4108
4109         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4110
4111 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4112
4113         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4114         instead of one on 64 bit systems.
4115
4116         * method-to-ir.c: Remove unused includes.
4117
4118 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4119
4120         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4121         cfg->used_int_regs, since the two are different on arm.
4122
4123 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4124
4125         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4126         mono_method_get_vtable_index() to get the vtable index.
4127
4128 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4129
4130         * method-to-ir.c (mono_method_to_ir2): Don't create native
4131         wrappers for array methods, because they're never called (and if
4132         they were called they wouldn't work).
4133
4134 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4135
4136         * method-to-ir.c (mono_method_to_ir2): Array methods are
4137         special-cased and must not be invoked indirectly via the (M)RGCTX
4138         when generic sharing is turned on.  Fixes #431413.
4139
4140 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4141
4142         * method-to-ir.c: When generic sharing is active, call
4143         non-interface virtual generic methods via the standard trampoline.
4144
4145         * mini-trampolines.c: Handle virtual generic shared methods.
4146
4147         * mini.h, mini-x86.c, mini-x86.h: New argument for
4148         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4149         method thunks and which is the trampoline to call if the lookup
4150         fails.  Enable the virtual generic method thunk for x86.
4151
4152         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4153         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4154         argument but assert that it's NULL, because these archs don't yet
4155         implement the virtual generic method thunk.  Changes in the IMT
4156         thunk data structures.
4157
4158 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * aot-compiler.c (emit_globals): Avoid invalid characters in
4161         the static linking symbol.
4162
4163         * objects.cs: Add a test for the range check optimization. Fix warnings.
4164
4165         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4166         optimization from the current JIT.
4167
4168         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4169         later in decompose_array_access_opts () to allow more optimizations.
4170
4171         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4172         mono_decompose_soft_float () for consistency.
4173
4174         * mini-ops.h: Fix arguments of OP_STRLEN.
4175
4176         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4177         into a separate function.
4178         (reset_cast_details): Ditto.
4179         (handle_unbox): Save cast details. Fixes #431254.
4180
4181         * method-to-ir.c: Remove some obsolete FIXMEs.
4182
4183 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4184
4185         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4186
4187 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4188
4189         * mini-codegen.c: More work on macros to make them
4190         ready for multiple regbanks.
4191
4192 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4193
4194         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4195
4196         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4197
4198 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4199
4200         * mini-codegen.c (mono_spillvar_offset): Proper support for
4201         multiple regbanks.
4202
4203 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4204
4205         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4206         the stack overflow changes.
4207
4208 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4209
4210         * mini-codegen.c: Make all bank macros depend on reg_bank.
4211
4212         * mini-codegen.c (mono_local_regalloc): Make free mask
4213         initialization regbank aware.
4214
4215 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4216
4217         * mini-codegen.c (mono_local_regalloc): Extract callee
4218         mask selection to a function and make it regbank aware.
4219
4220 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4221
4222         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4223         code to deal with many regbanks.
4224
4225 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * mini-codegen.c: More fp->regbank changes.
4228
4229 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4232         of a hardcoded constant.
4233
4234 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4235
4236         * method-to-ir.c (type_from_stack_type): Fix typo.
4237
4238 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4239
4240         * mini-ia64.c (emit_move_return_value): Convert float return values to
4241         double.
4242
4243         * objects.cs: Add a new test.
4244         
4245         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4246         VARARG methods to fix an assert later.
4247
4248         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4249         end so it at least compiles.
4250
4251 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4254
4255 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4256
4257         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4258         optimization to a new function (emit_optimized_ldloca_ir) and enable
4259         it for both ldloca and ldloca_s.
4260
4261 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4264         gshared CASTCLASS code.
4265
4266         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4267         amd64, where the libc stack unwinder encounters stack frames referring to
4268         native code in unmapped memory.
4269
4270         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4271         sharing.
4272
4273         * generics.cs: Add new test.
4274
4275 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4276
4277         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4278         add a check that one of the ARM_FPU_ constants is defined.
4279
4280         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4281         
4282         * mini-exceptions.c: Fix build on non-altstack platforms.
4283
4284         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4285         sharing of vtypes.
4286
4287         * ir-emit.h: Add a comment to NEW_PCONST.
4288
4289         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4290
4291         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4292
4293         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4294         after the changes to MonoJitDomainInfo.
4295
4296 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4297
4298         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4299
4300 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4301
4302         * mini-ppc.c: Compiler warning fixes.
4303
4304 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4305
4306         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4307         for pinvokes.
4308
4309 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4310
4311         * exceptions-ppc.c, mini-ppc.h: Compile
4312         mono_arch_handle_altstack_exception() on Darwin, too.
4313
4314 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4315
4316         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4317         work on archs which don't have generic sharing implemented, only
4318         without the vtable_arg.
4319
4320 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4321
4322         * mini.c: Added comment explaining why delegate ctor icall
4323         wrappers are compiled.
4324
4325 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4326
4327         * mini.c: Don't produce trampolines to delegate ctor icall
4328         wrappers but compile them upfront.
4329
4330 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4331
4332         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4333         runtime-set function when going back to managed code. Currently this
4334         is used to set back the protection on the soft ovf pages and/or to
4335         throw the stack overflow exception that happened in unmanaged code.
4336
4337 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4338
4339         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4340         runtime-set function when going back to managed code. Currently this
4341         is used to set back the protection on the soft ovf pages and/or to
4342         throw the stack overflow exception that happened in unmanaged code.
4343
4344 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4345
4346         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4347         the support code for restoring stack protection after stack overflows
4348         that happen in unmanaged code. Don't set the exec permission on the
4349         soft overflow area.
4350
4351 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4354         delegate->method_ptr is set. Fixes #428054.
4355
4356 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * tests.cs: Rename to ratests.cs.
4359
4360         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4361         emit_get_rgctx_... functions.
4362
4363 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4364
4365         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4366
4367 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4368
4369         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4370         before asserting that method is sharable.
4371
4372 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4373
4374         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4375         whether method needs a static RGCTX wrapper used instead of
4376         complex conditions.
4377
4378         * generic-sharing.c, mini.h: A few functions moved to
4379         metadata/generic-sharing.c.
4380
4381 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4382
4383         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4384         Generic code sharing for value types, which essentially means
4385         treating value type methods like static methods.  The RGCTX is
4386         passed in the same way.
4387
4388 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4391         opcode when creating multi-dimensional arrays of open types.
4392
4393         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4394         open generic types.
4395
4396         * generics.cs: Add a test.
4397
4398         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4399
4400 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4403
4404         * mini.c (mini_method_compile): Set it when running under the debugger. 
4405
4406         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4407         vreg optimization if the flag is set.
4408
4409         * driver.c (mono_main): Add --attach= option to pass options to
4410         the attach agent.
4411
4412         * mini.c (sigquit_signal_handler): Start the attach agent.
4413
4414         * ssapre.c: Disable this to save space since it is not yet ported to
4415         linear IR.
4416
4417         * regalloc2.c: Disable this to save space.
4418
4419         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4420
4421 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4422
4423         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4424         the -v option useful again.
4425
4426 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4427
4428         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4429         --break-at-bb.
4430
4431         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4432         arrays of arrays. Fixes #428406.
4433
4434         * method-to-ir.c (mini_emit_castclass): Ditto.
4435
4436         * objects.cs: Add new test.
4437         
4438 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4439
4440         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4441         was wrong at it choked against target_type_is_incompatible for byref types.
4442
4443 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4444
4445         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4446         places.
4447
4448 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4449
4450         * mini-exceptions.c: update a few more exceptions-related counters.
4451
4452 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4453
4454         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4455         new functions to allocate from persistent mempools.
4456
4457 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4460         multiple register banks in the future.
4461
4462         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4463
4464 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4465
4466         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4467
4468         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4469
4470         * mini.h: Export type_to_eval_stack_type.
4471
4472         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4473         is only ins->klass of byref types.
4474
4475 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4476
4477         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4478         (mini_emit_memcpy2): Ditto.
4479
4480         * mini-amd64.c: Fix a warning.
4481
4482 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4483
4484         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4485         linking.
4486
4487 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4488
4489         * method-to-ir.c: Extract stloc micro-optimization to a
4490         function and apply it to all cases.
4491
4492 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4493
4494         * method-to-ir.c: Don't fail generic code sharing in cases we
4495         already support.
4496
4497 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4498
4499         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4500
4501 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4502
4503         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4504         implementation.
4505
4506 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4507
4508         * trace.c: make tracing more useful and correct, with per-thread
4509         id and indent info.
4510
4511 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4512
4513         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4514         doing a method call and the argument is an R4.
4515
4516 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4517
4518         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4519         generic methods.
4520
4521 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4522
4523         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4524
4525 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4528         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4529
4530 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4531
4532         * driver.c: Add a --agent argument (not supported yet) to load managed
4533         agent assemblies before loading the main assembly, similarly to how the
4534         Java VM handles agents.
4535
4536 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4537
4538         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4539         function to do stack layout of local variables.
4540
4541 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4542
4543         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4544         calculation.
4545
4546 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4547
4548         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4549         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4550         JIT if DISABLE_JIT is defined.
4551
4552         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4553         defined.
4554
4555 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4556
4557         * iltests.il.in: Disable the fconv test on PPC (the result is
4558         undefined according to ECMA).
4559
4560 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4561
4562         * iltests.il.in: Enable tail call tests for PPC.
4563
4564         * mini.h: Add variable for storing incoming valuetype argument
4565         addresses for tail calls.
4566
4567         * mini-ppc.c: Implement valuetype arguments and return values for
4568         tailcalls on Linux.
4569
4570 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4571
4572         * mini-ppc.c: Partially implement tail calls (struct arguments and
4573         return values not supported).
4574
4575         * method-to-ir.c: Enable tail calls on PPC.
4576
4577 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4578
4579         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4580         runtime-invoke wrappers to work around the problem of them getting
4581         assigned to a random class.
4582
4583         * aot-runtime.c (mono_aot_get_method): Ditto.
4584         
4585 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4586
4587         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4588         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4589
4590 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4591
4592         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4593         until they're implemented properly.
4594
4595         * exceptions-ppc.c: Use arch-independent exception-handling code
4596         instead of custom one.
4597
4598         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4599         for Linear IR.
4600
4601         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4602
4603         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4604         applies when __powerpc__ is defined.
4605
4606 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4609         methods to their code to avoid computing the full name of wrappers and
4610         doing a lookup in a string hash table.
4611
4612 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4615         we identify bblocks before method_to_ir () is ran.
4616
4617         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4618         Also avoid optimizing branches pointing to themselves.
4619
4620         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4621
4622 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4625
4626 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4627
4628         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4629         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4630         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4631         'buf'.
4632
4633         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4634         jumped to the same entry in plt_jump_table.
4635
4636 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4639         dynamic images.
4640
4641 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4642
4643         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4644         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4645         #421807.
4646
4647 2008-08-29  Geoff Norton  <gnorton@novell.com>
4648
4649         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4650         segment, and doesn't properly handle .space as .text.  Fixes
4651         AOT Mach/ARM
4652
4653 2008-08-29  Geoff Norton  <gnorton@novell.com>
4654
4655         * mini.c: Disable the mach exception handler when running on 
4656         ARM
4657
4658 2008-08-29  Geoff Norton  <gnorton@novell.com>
4659
4660         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4661         globals on Darwin/ARM
4662
4663 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4664
4665         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4666         since too many things depend on it. Instead, call 
4667         mono_runtime_set_no_exec ().
4668         
4669         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4670         the new JIT.
4671
4672         * aot-compiler.c: Add an 'asm-only' AOT option.
4673
4674         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4675                 
4676         * aot-compiler.c (compile_method): Disable gshared support for now as it
4677         doesn't yet work.
4678
4679 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4680
4681         * mini-amd64.h : Fix a compiler warning.
4682
4683         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4684           Changed to use a callback function to retrieve the unwind info.
4685           This avoids problems observed when code blocks were removed by
4686           unloading an app domain.
4687
4688         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4689           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4690           to work properly.
4691
4692         Contributed under MIT/X11 license.
4693
4694 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4695
4696         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4697           case to keep the stack aligned to 8.
4698
4699         Contributed under MIT/X11 license.
4700
4701 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4704         avoid repeated linear searches.
4705
4706 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4709         methods it can't handle.
4710         
4711         * aot-compiler.c (add_method): Avoid adding a method twice.
4712         (add_wrappers): Add runtime invoke wrappers for all methods.
4713
4714         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4715         function to create an aot-compatible version of this trampoline.
4716
4717         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4718
4719 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4720
4721         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4722
4723         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4724         with a generic sharing failure.
4725
4726         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4727
4728         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4729         CEE_RETHROW. Fixes #419634.
4730
4731         * mini.c (mono_method_to_ir): Ditto.
4732
4733         * exceptions.cs: Add a new test.
4734         
4735         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4736         to mono_type_stack_size_internal () since some callers might not pass in
4737         an rgctx.
4738
4739         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4740         instrument_prolog. Fixes #419878.
4741
4742         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4743         doubles in soft float mode volatile.
4744
4745 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4748
4749         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4750         to handle soft float correctly.
4751
4752         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4753         the fast path.
4754
4755         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4756
4757         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4758         to sp, since the generics catch code requires it.
4759
4760         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4761         copying.
4762
4763         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4764         mono_arch_emit_imt_argument ().
4765
4766         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4767
4768         * mini-arm.c tramp-arm.c: Generic sharing updates.
4769
4770 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * mini-arm.c: Fix the arm build.
4773
4774         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4775         handling enums, generic instances and generic sharing.
4776         (mini_type_stack_size_full): Ditto.
4777
4778         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4779         
4780         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4781
4782         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4783
4784         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4785         trampolines.
4786
4787         * mini-arm.c: Various small generic sharing changes.
4788
4789         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4790         this for x86.
4791         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4792         custom code.
4793
4794         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4795         helper function to return a generic class init trampoline.
4796
4797         * method-to-ir.c mini.c: Use it.
4798         
4799         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4800         arch-specfic function to return a generic class init trampoline.
4801
4802         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4803         the GENERIC_CLASS_INIT custom code.
4804
4805         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4806         a fatal error, not a sharing failure.
4807
4808         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4809         needed.
4810
4811         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4812         trampoline argument from MONO_ARCH_VTABLE_REG.
4813
4814         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4815         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4816         argument, and pass the vtable in VTABLE_REG.
4817
4818         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4819         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4820         argument, and pass the vtable in VTABLE_REG.
4821         (mono_arch_create_trampoline_code_full): Remove some special casing for
4822         the rgctx fetch trampoline.
4823
4824         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4825         Fixes #419273.
4826
4827         * iltests.il: Add a test for it.
4828
4829 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4832
4833         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4834         no longer needed.
4835
4836         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4837         use mono_jit_info_table_find () to avoid recursion.
4838         (mono_delegate_trampoline): Add a sync wrapper here.
4839
4840         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4841         here.
4842
4843         * mini.c (mono_method_to_ir): Ditto.
4844         
4845         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4846         add_sync_wrapper argument. Don't add a sync wrapper here.
4847         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4848
4849         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4850         
4851 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4852
4853         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4854           of nonvolatile registers back from MonoContext to CONTEXT.
4855
4856         Contributed under MIT/X11 license.
4857
4858 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4859
4860         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4861           arguments on Winx64 there are only 4 argument registers.  For this
4862           logic to work the last argument must be pulled from the stack.  
4863
4864         Contributed under MIT/X11 license.
4865
4866 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4869
4870         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4871         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4872         encode/decode_method_ref ().
4873
4874         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4875
4876         * aot-runtime.c (decode_patch): Ditto.  
4877
4878         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4879         MONO_PATCH_INFO_METHOD.
4880
4881         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4882         MonoGenericJitInfo.
4883
4884         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4885         MonoGenericJitInfo.
4886
4887         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4888
4889         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4890         one from the caller.
4891
4892         * aot-runtime.c (decode_generic_inst): New function to decode and
4893         return a interned generic inst.
4894         (decode_klass_ref): Use it.
4895         (decode_method_ref): Ditto.
4896
4897         * aot-compiler.c (emit_exception_debug_info): Save 
4898         jinfo->has_generic_jit_info too.
4899
4900 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
4903
4904         * iltests.il.in: Add a test for fconv_to_i.
4905
4906         * liveness.c: Disable the liveness2 pass for now to save space.
4907
4908         * regalloc2.c: Include mempool-internals.h to fix warnings.
4909
4910         * aot-compiler.c (encode_method_ref): Encode the context of generic
4911         instance methods.
4912
4913         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4914         the context saved in the aot file.
4915
4916         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4917
4918         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4919
4920         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4921         volatile so they won't be optimized away.
4922
4923 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4924
4925         * ssa.c:
4926         * ssa2.c:
4927         * mini.c:
4928         * regalloc2.c:
4929         * dominators.c: Remove duplicated functions that now are in
4930         mempool-internals.h.
4931
4932 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4933
4934         * aot-compiler.c: Fix warnings.
4935
4936         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
4937
4938         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
4939
4940         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
4941         as the patch type.
4942
4943         * mini.c (mono_resolve_patch_target): Ditto.
4944         
4945         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
4946         (encode_klass_ref): Add support for encoding VARs/MVARs.
4947
4948         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
4949
4950         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
4951         the handling of the got entries into a separate 'decode_got_entry' function.
4952         Add support for RGCTX_FETCH.
4953
4954         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
4955         clobbered by the trampoline code.
4956
4957         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
4958         not clobbered by the indirect calling code.
4959
4960 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
4963         to fix the build.
4964
4965 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4966
4967         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
4968         signature using the compilation mempool otherwise we would leak it.
4969
4970 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
4973         mono_emit_abs_call ().
4974
4975         * patch-info.h: Add GENERIC_CLASS_INIT.
4976
4977         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
4978
4979         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
4980         as their target as a near call.
4981
4982         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
4983         ABS handling code.
4984         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
4985
4986         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
4987         call to a runtime function described by a patch.
4988
4989         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
4990         mono_emit_abs_call, this has the advantage that the ABS handling code in
4991         mono_codegen () can handle them both, and can handle other stuff in the
4992         future without additional code.
4993
4994         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
4995         entry.
4996         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
4997         abs addresses.
4998
4999         * mini.h: Add missing bblock related prototypes.
5000
5001         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5002         reverse_inst_list_len fields.
5003
5004         * mini.c: Refactor this file a bit by moving branch optimizations to 
5005         branch-opts.c.
5006
5007         * method-to-ir.c: Merge generic sharing changes missed earlier.
5008
5009         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5010
5011         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5012         shared patches. Process METHODCONST as a shared patch.
5013
5014         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5015         as it crashes on the 2.0 mscorlib.
5016
5017         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5018         to cause crashes.
5019         
5020         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5021         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5022         by IMT.
5023
5024         * aot-compiler.c: Reorganize the got handling code to be a bit more
5025         understandable.
5026
5027 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5028
5029         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5030         mono_patch_info_equals/hash, and use it to massively simplify
5031         get_plt_index ().
5032
5033         * mini.c (mono_patch_info_hash): Simplify this and add support for
5034         more patch types.
5035
5036         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5037
5038         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5039         handling code, since an offset is not enough to identify a trampoline.
5040
5041         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5042
5043 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5044
5045         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5046
5047         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5048
5049         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5050
5051         * decompose.c: PPC decompositions for various ops.
5052
5053         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5054
5055 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5056
5057         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5058         call the generic trampoline code using a call, instead of a jump, to
5059         remove some special casing from the generic trampoline code.
5060
5061         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5062         (mono_codegen): Ditto.
5063
5064         * aot-compiler.c aot-runtime.c: Ditto.
5065
5066         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5067
5068         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5069         helper function to find the offset corresponding to a lazy fetch trampoline.
5070
5071         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5072         when doing generic sharing.
5073
5074         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5075         places.
5076         
5077         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5078         mini-trampolines.c to be with the other trampoline creation functions.
5079
5080         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5081         as it is equal to method->signature in most cases, add a 
5082         mono_emit_method_call_full variant which takes a signature and an imt
5083         argument as well.
5084
5085 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5088         to this function, since it could be computed easily from the method 
5089         argument.
5090         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5091         more.
5092
5093         * method-to-ir.c mini.c: Remove references to 
5094         compile_generic_method_wo_context.
5095
5096         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5097         generic method calls.
5098         
5099         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5100         dimensional non-szarrays.
5101
5102         * mini.c (mini_init): Register mono_array_new_1.
5103
5104         * jit-icalls.c (mono_array_new_1): New jit icall.
5105
5106         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5107         pointing to the method.
5108
5109         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5110         method addresses belonging to METHOD_JUMP patches in the 
5111         jump_target_got_slot_hash.
5112         (mono_aot_load_method): Ditto.
5113
5114         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5115         METHOD_JUMP patches.
5116
5117         * mini.c (mini_create_jit_domain_info): New helper function which 
5118         initializes/frees domain->runtime_info.
5119         (mini_free_jit_domain_info): Ditto.
5120         (mini_init): Install the domain hook functions with the runtime.
5121
5122         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5123         information maintained by the JIT.
5124
5125         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5126         insertion into jump_table_hash into mono_codegen (), also implement proper
5127         locking.
5128
5129         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5130         tail calls, it is already done by the aot code.
5131         
5132         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5133         mechanism on amd64.
5134
5135         * iltests.il.in: Make the jmp test a bit more complex.
5136
5137         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5138         generic instances which doesn't have a token.
5139
5140         * aot-runtime.c (decode_method_ref): Ditto.
5141         
5142         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5143         can handle this case now.
5144         (handle_box): Ditto.
5145
5146 2008-08-15  Geoff Norton  <gnorton@novell.com>
5147
5148         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5149         debugging check.
5150
5151 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5152
5153         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5154         calling generic methods.
5155
5156         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5157
5158         * aot-runtime.c (decode_patch_info): Ditto.
5159
5160         * mini.c (mono_resolve_patch_target): Ditto.
5161         
5162         * patch-info.h: Add METHOD_RGCTX.
5163
5164         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5165
5166 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5167
5168         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5169         arguments in registers.
5170
5171         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5172         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5173
5174         * mini.c (mini_method_compile): Abort aot compilation for generic
5175         methods if generic sharing is disabled.
5176         
5177         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5178         an mrgctx.
5179
5180         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5181         requiring an mrgctx.
5182
5183         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5184         store instructions when converting a vcall to a normal call.
5185
5186         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5187         mono_arch_find_jit_info.
5188
5189 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5190
5191         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5192         avoid calling mono_method_full_name () for every method even if the
5193         env var is not set.
5194         (check_inline_caller_method_name_limit): Ditto.
5195
5196 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5197
5198         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5199         assemblies in one run.
5200
5201         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5202         skipped methods if it is not 0.
5203
5204         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5205
5206 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5207
5208         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5209           MONO_ARCH_HAVE_UNWIND_TABLE.
5210
5211         Contributed under MIT/X11 license.
5212
5213 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5214
5215         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5216           from default optimizaton list on Winx64.
5217
5218         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5219
5220         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5221           the LMF from the MonoJitTlsData structure.
5222
5223         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5224
5225         Contributed under MIT/X11 license.
5226
5227 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5228
5229         * mini.c (sigsegv_signal_handler): Fix the build.
5230
5231         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5232         assembly->aot_module.
5233
5234         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5235         hash table. This simplifies and speeds up a lot of code, and fixes support
5236         for .netmodules.
5237
5238         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5239         with the runtime.
5240
5241         * mini-exceptions.c: Ditto.
5242         
5243         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5244         'native_offset' argument, since these are computed in the 
5245         mono_find_jit_info () function.
5246
5247         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5248         is used by exceptions-ppc.c.
5249
5250         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5251         mono_arch_find_jit_info ().
5252         
5253         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5254         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5255         generic code in mini-exceptions.c.
5256
5257 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5258
5259         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5260
5261         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5262         
5263         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5264         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5265         called while holding the loader lock. Fixes #415608.
5266         (mono_aot_get_method_from_token_inner): Ditto.
5267
5268 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5271         to reduce differences between this and the generic implementation in
5272         mini-exceptions.c.
5273         (ves_icall_get_frame_info): Ditto.
5274
5275         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5276
5277         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5278         longer neccesarry.
5279
5280         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5281         mono_arch_get_call_filter () and make it non-static, for consistency with the
5282         other architectures.
5283
5284 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5285
5286         * mini.c:
5287         * local-propagation.c:
5288         * mini-x86.c: Correct the name of arch defines.
5289
5290 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5293         NO_EMULATE_LONG_SHIFT_OPS define.
5294
5295 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5296
5297         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5298         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5299
5300         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5301         MACH fixes. Merged from the 2.0 branch.
5302
5303         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5304
5305         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5306         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5307
5308         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5309
5310         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5311         mono_marshal_get_native_wrapper () signature changes.
5312
5313 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5316         conversion bug under arm.
5317
5318 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5319
5320         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5321
5322         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5323         with overflow checking.
5324
5325 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5326
5327         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5328         to the genmdesc.pl file
5329
5330 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5333         arg_array in the soft-float versions of the LOAD/STORE macros.
5334
5335         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5336         implementation.
5337
5338         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5339
5340 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5341
5342         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5343         a float HFA. Fixes #413621.
5344
5345 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5346
5347         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5348         frame_size to args_size. Fixes build.
5349
5350 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5353         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5354
5355         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5356         the stack are not unaligned. Fixes #413247.
5357         
5358 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5359
5360         * mini.c: update jitted methods performance counters.
5361
5362 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5363
5364         * mini-exceptions.c: increase the exceptions thrown performance
5365         counter in mono_handle_exception ().
5366
5367 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5370         can work with netmodules.
5371
5372 2008-07-28  Geoff Norton  <gnorton@novell.com>
5373
5374         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5375         regression tests.
5376
5377 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5378
5379         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5380         correct place.
5381
5382 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5383
5384         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5385           The float param registers and other param registers must be the 
5386           same index on Windows x64.
5387
5388         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5389           ArgValuetypeAddrInIReg argument case.  Setting the argument
5390           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5391
5392         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5393           variable computed above as the copy length for arguments of storage
5394           type ArgValuetypeAddrInIReg.
5395
5396         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5397           ArgValuetypeAddrInIReg argument case.  This case will rely on
5398           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5399
5400         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5401           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5402           jump and tail call instructoins as they do not follow the typical call behavior.
5403
5404         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5405           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5406           local variable and pass the local variable by reference to the called method.
5407
5408         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5409           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5410           of a struct is passed in a register it must be saved with the other
5411           volatile argument on the stack.
5412
5413         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5414           frame pointer the stack adjustment value must be saved to the unwind 
5415           info structure.
5416
5417         Contributed under MIT/X11 license.
5418
5419 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5420
5421         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5422         which got lost in the merge.
5423
5424 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5425
5426         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5427         build.
5428
5429         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5430         
5431         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5432         icalls, since they won't be patched.
5433
5434         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5435         different code sequence when running under valgrind to prevent some valgrind
5436         errors.
5437
5438         * iltests.il.in: Add new regression test.
5439
5440         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5441         end with a throw.
5442
5443         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5444         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5445
5446         * iltests.il.in: Add new test.
5447
5448         * aot-compiler.c: Fix some warnings.
5449
5450         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5451         Fixes #412494.
5452
5453 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5456         (mini_usage_jitdeveloper): Add a missing --wapi option.
5457
5458 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * mini-codegen.c: Simplify the is_fp macros.
5461         (free_up_ireg): Remove, use free_up_reg instead.
5462         (free_up_reg): Fix the fp case.
5463
5464 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5467         lowered earlier.
5468
5469         * exceptions-x86.c: Merge some changes which seemed to have got lost
5470         in the linear-ir merge.
5471
5472         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5473
5474         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5475         long vreg volatile even if the variable was already created.
5476
5477         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5478         volatile variables.
5479
5480 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5481
5482         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5483
5484         * mini.c (mono_jit_compile_method_inner): Add support for 
5485         MONO_EXCEPTION_BAD_IMAGE.
5486
5487         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5488         mini_method_get_context () returns NULL. Fixes #356531.
5489
5490         * mini.c (mono_method_to_ir): Ditto.
5491         
5492         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5493         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5494
5495 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5496
5497         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5498         in the LDFTN implementation.
5499
5500 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5501
5502         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5503         code, patch calls to icalls, too, even if they're not in the
5504         shared generic code hash.  Fixes #411962.
5505
5506 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5507
5508         * cpu-x86.md: Increase the length of the fcall opcodes.
5509
5510         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5511         calls returning floats.
5512
5513         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5514         on NEWARR.
5515         
5516         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5517         missed earlier.
5518
5519         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5520         into the domain->method_code_hash.
5521
5522         * aot-compiler.c: Fix win32 build.
5523
5524         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5525         
5526         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5527         gshared NEWARR implementation.
5528
5529         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5530
5531         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5532         can be used outside of method_to_ir.
5533
5534         * mini.h (MonoCompile): Add arg_types field.
5535
5536         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5537         
5538         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5539         the values of the local arg_array and param_types array.
5540
5541 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5542
5543         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5544         got accesses might only get generated later when NEWOBJ is decomposed.
5545         
5546         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5547         looking up the native code of the target method when a delegate is called
5548         for the first time.
5549
5550         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5551         optimization.
5552
5553         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5554
5555         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5556         AOT work on platforms without a working dlsym implementation.
5557
5558         * mini.h: Bump AOT image format version.
5559         
5560 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5561
5562         * mini-exceptions.c: Free a MonoType with
5563         mono_metadata_free_type() instead of g_free().
5564
5565         * aot-runtime.c: Free a MonoType.
5566
5567 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5570         optimization.
5571
5572         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5573         fp stack on x86.
5574
5575 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5576         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5577         profiler hook.
5578
5579 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5580
5581         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5582         NEWOBJ calls on valuetypes.
5583
5584         * iltests.il.in: Add new test.
5585
5586         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5587
5588 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5591         is no longer needed.
5592
5593         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5594         non register sized integer arguments.
5595         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5596         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5597         emit_memcpy2 ().
5598
5599         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5600         CEE_MONO_RETOBJ.
5601         
5602         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5603         two a binop with different sized arguments is emitted.
5604
5605         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5606         instruction in the ins==NULL case.
5607
5608 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5609
5610         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5611
5612         * mini-x86.c: Fix osx build.
5613
5614         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5615         opcodes as well.
5616
5617         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5618         instruction for non int sized variables.
5619
5620         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5621         implementation.
5622
5623 2008-07-23  Robert Jordan  <robertj@gmx.net>
5624
5625         * method-to-ir.c: Fix MSVC build.
5626
5627 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5630         a non int sized type, widen it to an int since newer versions of gcc seem to
5631         generate code which needs this.
5632
5633         * ssa2.c abcremoval2.c: Fix warnings.
5634
5635         * *: Merge the Linear IR branch.
5636
5637         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5638         the ChangeLog file there describes all the changes done over the years. 
5639         Further documentation can be found at www.mono-project.com/Linear_IL.
5640
5641 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5642
5643         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5644           The float param registers and other param registers must be the 
5645           same index on Windows x64.
5646
5647         Contributed under MIT/X11 license.
5648
5649 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * mini.c: Make the previous fix GC safe.
5652
5653 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5654
5655         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5656
5657 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5658
5659         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5660           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5661           ArgValuetypeAddrInIReg instead.
5662
5663         Contributed under MIT/X11 license.
5664
5665 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5666
5667         * mini-codegen.c (get_register_spilling): Fix a warning.
5668
5669 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5670
5671         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5672         for types which the initialization fails. Raises the provided exception
5673         at the right stop after cleanup.
5674
5675 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5676
5677         * aot-compiler.c: Free most of the memory allocated during compilation.
5678
5679         * mini.c (mini_parse_debug_options): Fix a leak.
5680         
5681         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5682         during aot compilation.
5683
5684 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5687         it has too much register pressure.
5688
5689 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5692
5693 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5694
5695         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5696         on x86.
5697
5698         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5699         on amd64 similar to the way it is done on arm.
5700
5701         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5702
5703         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5704         consistency, normalize error messages, avoid loading aot-only modules in
5705         normal mode.
5706
5707         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5708         for consistency.
5709
5710         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5711
5712 2008-07-11  Martin Baulig  <martin@ximian.com>
5713
5714         * debug-debugger.h
5715         (MonoDebuggerInfo): Add `interruption_request'.
5716
5717 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * aot-compiler.c (emit_plt): Remove some dead code.
5720
5721         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5722
5723         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5724         return the plt info offset belonging to a given plt entry.
5725
5726         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5727         mono_aot_get_plt_info_offset.
5728         
5729         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5730         similar to the amd64 code by makeing jumps through a separate jump table 
5731         instead of embedding the jump addresses into the code.
5732
5733 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5734
5735         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5736         method.
5737
5738 2008-07-10  Martin Baulig  <martin@ximian.com>
5739
5740         * mini.c (mini_method_compile): Disable generics sharing when
5741         running in the debugger.
5742
5743 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5746
5747         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5748         the local register allocator from running out of registers on x86 when 
5749         using aot.
5750
5751 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5752
5753         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5754         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5755         C4146.
5756
5757         Contributed under MIT/X11 license.
5758
5759 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5762         speed up the assembler.
5763
5764 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5767         support.
5768
5769         * mini.c: Move the soft float handling macros a bit earlier, add 
5770         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5771         place.
5772
5773         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5774
5775         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5776         read-only to help catch code allocation requests.
5777         
5778         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5779         and turn it off when using --aot-only or when compiling with --aot=full.
5780
5781         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5782         jump table for switches from the normal domain mempool, not the code
5783         manager.
5784
5785         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5786         unbox trampoline which handles aot-only mode too.
5787
5788         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5789         an AOTed unbox trampoline.
5790
5791         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5792
5793 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5794
5795         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5796         ""
5797
5798         Contributed under MIT/X11 license.
5799
5800 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5801
5802         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5803           the unwind information for the method at the end of the allocated block.
5804           
5805         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5806           MonoCompileArch to hold the unwind info for SEH on Winx64
5807         
5808         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5809           frame pointer info for the method being compiled.
5810           
5811         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5812           the call to mono_exception_from_token.
5813           
5814         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5815           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5816           information is stored a the end of the method block because it is all 32-bit offset based.
5817
5818         Contributed under MIT/X11 license.
5819
5820 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5821
5822         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5823
5824         * wapihandles.c: Fix warnings.
5825
5826         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5827         mode.
5828
5829         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5830         mono_jit_compile_method in aot-only mode since that calls the type 
5831         initializer.
5832         
5833         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5834         get_delegate_invoke_impl in aot-only mode.
5835
5836         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5837
5838 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5841
5842         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5843         is on by default.
5844
5845         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5846
5847         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5848         init trampoline from the AOT file as well.
5849
5850         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5851         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5852         code.
5853
5854         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5855         mono_init.
5856
5857         * exceptions-amd64.c: Add _full variants for the remaining exception code
5858         creation functions as well, allow emission of relocatable code, remove
5859         caching since that is now done by the caller.
5860
5861         * mini-exceptions.c: Add _full variants for the remaining exception code
5862         creation functions as well, add aot-only support.
5863
5864         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5865         if we can determine a proper token for them.
5866         (add_wrappers): Add a few more wrappers.
5867         (emit_method_code): Remove some dead code.
5868         (emit_trampolines): Emit exception code too.
5869
5870         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5871
5872         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5873         mono_array_new_va which avoids varargs.
5874
5875         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5876
5877         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5878         mono_arch_create_specific_trampoline () in all places.
5879
5880         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5881         a bit so it can be used for other things as well.
5882         
5883         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5884         on demand as well.
5885
5886         * exceptions-amd64.c: Rename the caching from the exception code creation
5887         functions, it is done by the caller instead.
5888         
5889         * exceptions-amd64.c: Change the signature of the exception code creation 
5890         functions to allow the creation of relocatable code later.
5891
5892         * mini-exceptions.c: Add a set of functions to query the various 
5893         runtime-generated exception functions.
5894
5895         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5896         mono_arch_.. () functions.
5897         
5898 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
5901
5902         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
5903
5904         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5905         (mini_get_vtable_trampoline): Ditto.
5906
5907         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5908         code in the AOT case by returning the code size and a list of relocations to
5909         the caller.
5910
5911         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5912
5913 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5914
5915         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5916           clean the stack.
5917
5918         Contributed under MIT/X11 license.
5919
5920 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5923         so the buffer size can be computed correctly. Fixes #404735.
5924
5925         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5926         normally as cfg->debug_info is already freed.
5927
5928 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5929
5930         * mini-amd64.c: For calls returning vtypes in registers, don't store
5931         the return address on the stack, instead allocate a separate local for
5932         it. Fixes #404729.
5933
5934 2008-07-05  Mark Probst  <mark.probst@gmail.com>
5935
5936         * mini-trampolines.c, mini.h: Add an argument to
5937         mono_create_jit_trampoline_in_domain() for turning off the adding
5938         of the sync wrapper.
5939
5940         * mini.c: Use the JIT trampoline without sync instead of
5941         ldftn_nosync in static RGCTX invoke wrappers so that the call can
5942         be patched.
5943
5944 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5945
5946         * driver.c: Turn on GSHARED optimization by default.
5947
5948 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
5951         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
5952
5953         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
5954         create a variant of the generic trampoline code callable from AOTed trampolines.
5955
5956         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
5957         trampoline code callable from AOTed trampolines.
5958
5959         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
5960
5961 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5962
5963         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
5964         pass-through manner.
5965
5966         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
5967         and don't fail sharing for them anymore.
5968
5969         * mini-exceptions.c: Handle exceptions in shared generic methods.
5970
5971         * generic-sharing.c: When checking the context of a generic
5972         method, also check its class's context.  Don't treat wrappers as
5973         sharable.
5974
5975         * mini-trampolines.c: Some code factored out to
5976         metadata/generic-sharing.c.  Handle the MRGCTX case.
5977
5978         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
5979         we must deal with the method being of another instantiation of the
5980         class.  Add static rgctx invoke wrappers to generic methods.
5981
5982 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5983
5984         * mini.c: Provide all jit infos of generic shared methods with a
5985         generic jit info.
5986
5987         * mini-exceptions.c: Handle the new situation that a generic info
5988         might be available, but not info about the this/vtable/mrgctx
5989         variable.
5990
5991 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5992
5993         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
5994         generic methods.
5995
5996 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * dominators.c (check_dominance_frontier): Fix a warning.
5999
6000         * mini.h: Add some missing prototypes.
6001
6002         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6003
6004         * driver.c (mono_jit_init_version): Correct the comments since the first
6005         argument should be the name of the root domain, not a filename.
6006
6007         * aot-runtime.c (make_writable): Error out if this is called while running
6008         with --aot-only.
6009         (load_aot_module): Ditto.
6010
6011         * aot-compiler.c: Really fix the computation of method indexes.
6012
6013         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6014         optimizations as this is no longer called frequently.
6015
6016         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6017         method and the invoke impl code and pass it to the delegate trampoline instead of
6018         just the delegate class.
6019
6020 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * aot-compiler.c: Fixup the computation of method indexes.
6023         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6024         the method builder infrastructure.
6025
6026         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6027         has no header.
6028
6029         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6030         mode, load the method right away instead of creating a trampoline.
6031
6032         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6033
6034         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6035         some checks a bit.
6036
6037 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6040         (mono_aot_load_method): Use method_index instead of method->token.
6041
6042         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6043         can handle icalls etc. properly.
6044
6045         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6046
6047         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6048
6049         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6050         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6051         JIT_ICALL_ADDR patch type.
6052
6053         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6054
6055         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6056         request flag.
6057         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6058
6059         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6060
6061 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6064         domain->jit_code_hash.
6065
6066 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6067
6068         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6069
6070 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6073         get_this_arg_from_call, let it compute it when needed.
6074
6075         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6076         gsctx from code only when needed.
6077
6078         * mini-trampolines.c (get_generic_context): Rename this to 
6079         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6080         it can be called by the arch backends.
6081
6082         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6083
6084 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * driver.c (mono_main): Add experimental --aot-only command line option.
6087
6088         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6089         set.
6090
6091 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6092
6093         * driver.c (DllMain): Remove mono_module_handle.
6094
6095         Contributed under MIT/X11 license.
6096
6097 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6100         for emitting methods which are not in the source assembly. Detect and report
6101         failure of assembling+linking.
6102         
6103         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6104
6105         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6106
6107 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6108
6109         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6110
6111 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6112
6113         * mini.h: Remove some obsolete prototypes.
6114
6115         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6116
6117 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6118
6119         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6120         supported by Visual Studio, so use alloca().
6121
6122 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6125         Fixes #402585.
6126
6127 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6128
6129         * mini.c: Fail sharing of a generic method if it contains an open
6130         catch clause (because we don't pass MRGCTXs yet).
6131
6132 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6133
6134         * mini.c: When compiling a method with generic sharing, insert the
6135         method instantiated with an all-Object generic context into the
6136         jit info table, instead of the context of the first instantiation
6137         of the method we happen to compile.
6138
6139 2008-06-18  Martin Baulig  <martin@ximian.com>
6140
6141         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6142         `major_version' and `minor_version'.
6143
6144 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6145
6146         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6147         mono_method_is_generic_sharable_impl() takes an additional
6148         argument specifying whether to treat type variables as reference
6149         types.
6150
6151 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6152
6153         * mini.h: Removed obsolete prototypes.
6154
6155 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6156
6157         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6158         already handle them.
6159
6160 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6161
6162         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6163         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6164         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6165         tramp-x86.c: Added a MonoGenericContext* argument to
6166         mono_arch_get_unbox_trampoline() so that it can call other
6167         functions which require it.
6168
6169 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6170
6171         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6172         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6173         mono_arch_get_this_arg_from_call() takes a
6174         MonoGenericSharingContext* as well.
6175
6176 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6177
6178         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6179         implement generic sharing of unbox.
6180
6181 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6182
6183         * mini.c: Don't compute the vtable to determine whether a field is
6184         special static, because it might not work for open types.
6185
6186 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6187
6188         * mini.c: Removed the unused token_type and token_source arguments
6189         from get_runtime_generic_context_ptr().
6190
6191 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6192
6193         * mini.c (ADD_BINOP): fix the build
6194
6195 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6196
6197         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6198         a widening op.
6199
6200 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6201
6202         * mini.h: Removed class relations enum that's not used anymore.
6203
6204 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6205
6206         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6207
6208         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6209         the lazy fetch trampoline access code.
6210
6211 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6214
6215 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6218
6219         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6220
6221         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6222
6223 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6226         intrinsics.
6227
6228         * mini-ops.h: Add MIN/MAX_UN opcodes.
6229
6230         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6231         intrinsics.
6232
6233         * basic-math.cs: Add more min/max tests.
6234
6235         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6236
6237 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6238
6239         * mini.c: Small fix in the prologue of emit_castclass.
6240
6241 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6242
6243         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6244
6245         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6246         do not work even for unsigned types. Fixes #400014.
6247
6248         * basic-math.cs: Add regression tests for unsigned Min/Max.
6249
6250 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6251
6252         * mini.c: Added additional context_used argument to several
6253         functions, which will be needed for sharing generic methods.  Use
6254         GET_RGCTX macro wherever appropriate.  Declare only one
6255         context_used in mono_method_to_ir().
6256
6257 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6258
6259         * mini.c, generic-sharing.c: Removed generic class relations.
6260
6261         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6262         functions due to MRGCTX changes.
6263
6264 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6265
6266         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6267         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6268         with calculated IMT.
6269
6270         * mini.c: Generic sharing of calls via generic interfaces.
6271
6272         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6273         generic method with non-constant MonoGenericContext*.  Instead,
6274         the context is taken out of the method itself.
6275
6276 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6277
6278         * mini.c: Generic sharing of ldvirtftn.
6279
6280 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6281
6282         * mini.c: Generic sharing of ldftn.
6283
6284 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6285
6286         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6287
6288 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6289
6290         * mini.c: Generic sharing of the special case of ldtoken followed
6291         by a call to GetTypeFromHandle.
6292
6293 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6294
6295         * mini.c: Generic sharing of box for nullable types.
6296
6297 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6298
6299         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6300         are passed on the stack. Fixes #324807.
6301
6302 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6303
6304         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6305         for the ArgValuetypeAddrInIReg case.
6306
6307         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6308         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6309
6310         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6311         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6312         local variable and pass the local variable by reference to the called method.
6313           
6314         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6315         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6316
6317         Contributed under MIT/X11 license.
6318
6319 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6322
6323         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6324         everything.
6325
6326 2008-06-10  Martin Baulig  <martin@ximian.com>
6327
6328         * debug-mini.c
6329         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6330
6331 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6332
6333         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6334         possible error when no arguments are passed.
6335
6336         Contributed under MIT/X11 license.
6337
6338 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6341         where the file name is NULL.
6342
6343 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6344
6345         * mini.c: Fix s390 build.
6346
6347 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6348
6349         * trace.c (mono_trace_parse_options): Fix warnings.
6350
6351         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6352
6353 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6354
6355         * mini.c (remove_block_if_useless): Avoid printing the method name.
6356         
6357         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6358         MONO_INST_NEW.
6359
6360         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6361         LMF. Not yet used.
6362
6363         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6364         translated code after it has been patched.
6365
6366 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6367
6368         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6369         avoid problems during code patching on SMP systems.
6370         (emit_call): Avoid adding a patch info which is already added by 
6371         emit_call_body.
6372         (mono_arch_emit_exceptions): Ditto.
6373
6374 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6375
6376         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6377         MONO_TYPE_ISSTRUCT already checks for it.
6378
6379 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6380
6381         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6382           structs with floats on Winx64 the float registers are not used.  
6383           The integer registers are always used..
6384         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6385           only one register will be used and only if the size of the struct 
6386           is 1,2,4, or 8 bytes.
6387
6388         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6389           to work for Winx64.
6390
6391         Contributed under MIT/X11 license.
6392
6393 2008-06-05  Martin Baulig  <martin@ximian.com>
6394
6395         * debug-debugger.c (debugger_lookup_class): Also call
6396         mono_class_setup_methods() here; we're only called from RTI.
6397
6398 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6399
6400         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6401         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6402         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6403         Post-process object files and add dtrace-generated object, if necessary.
6404
6405         Contributed under MIT/X11 license.
6406
6407 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6408
6409         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6410         element class.
6411
6412         * mini.c: Generic sharing for unbox.any and castclass.
6413
6414 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6415
6416         * mini.c: Ignore tailcall prefix in shared generic code and when
6417         doing calls which require a vtable/rgctx argument.
6418
6419 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6420
6421         * mini.c: Don't free the JIT info.
6422
6423         * driver.c: Changes in the JIT info table testing code.
6424
6425 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6428         interruption. Fix some warnings.
6429
6430         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6431         interruption_checkpoint.
6432
6433 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6434
6435         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6436         from embedding applications.
6437
6438 2008-06-02  William Holmes  <billholmes54@gmail.com>
6439
6440         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6441           reserving 32 bytes on the stack when making calls. 
6442
6443         Contributed under MIT/X11 license.
6444
6445 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6448         the linear IL branch.
6449
6450         * driver.c: Print out more information for --version on arm.
6451
6452 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6455         bb_exit instead, since out of line bblocks might not actually be emitted
6456         out-of-line.
6457         
6458         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6459         maximum epilog size for out of line bblocks if tracing is enabled.
6460
6461         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6462
6463 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6464
6465         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6466
6467 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6468
6469         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6470         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6471         opcodes.
6472
6473 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6476         the 'value' to store is a constant.
6477
6478         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6479
6480         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6481         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6482
6483 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6486         for accessing method->generic_container.
6487
6488 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6491         
6492         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6493
6494         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6495
6496         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6497         fails.
6498
6499 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6502
6503         * mini.c: Handle the case when mono_class_vtable () fails.
6504
6505 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6506         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6507         the stat profiler.
6508
6509 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6510
6511         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6512         together with domain sharing.
6513
6514 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6515
6516         * mini.c: Treat callvirts to final methods like non-virtual calls
6517         when doing generic sharing, i.e. look them up in the runtime
6518         generic context.
6519
6520 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6521
6522         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6523         with computed types (for generic sharing).
6524
6525         * mini.c: Generic sharing for mkrefany and refanyval.
6526
6527 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6528
6529         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6530         possible.
6531
6532         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6533         the generic sharing code.
6534         
6535         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6536         when needed.
6537
6538 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6539
6540         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6541
6542 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6543
6544         * driver.c: updated copyright date
6545
6546 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6547
6548         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6549         needed.
6550
6551 2008-05-19  Martin Baulig  <martin@ximian.com>
6552
6553         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6554         pointing to the new `_mono_debug_using_mono_debugger' variable.
6555
6556         * driver.c
6557         (mono_main): Check mono_debug_using_mono_debugger() rather than
6558         the `MONO_INSIDE_MDB' environment variable to check whether we're
6559         inside the debugger.
6560
6561 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6562
6563         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6564         argument.
6565
6566 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6567
6568         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6569
6570         * mini.c: Added mini_assembly_can_skip_verification. This
6571         function checks if the assembly requested to skip verification. 
6572         Fixes part of #387274.
6573
6574 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6575
6576         * mini.c (mini_get_method): Disable the check for open generic classes when
6577         using generic sharing.
6578
6579         * generics.cs: Add a test for #387034.
6580
6581         * mini.c (mini_get_method): Check whenever the method class is an open generic
6582         type, and return NULL in that case, causing a verification error. Fixes
6583         #384123.
6584
6585 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * driver.c (mono_main): Revert r102623. The right
6588         thing to do is to enable the verifier under verifiable
6589         unless a --security flag was passed.
6590
6591         We need this non-trivial behavior for --verify-all otherwise
6592         mcs-compileall won't be able to use it. As it needs everything to
6593         be verified under validil.
6594
6595 2008-05-06  Martin Baulig  <martin@ximian.com>
6596
6597         Fix #383749.
6598
6599         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6600         (mono_debugger_thread_cleanup): Likewise.
6601         (mono_debugger_extended_notification): Likewise.
6602
6603 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6604
6605         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6606         against both inflated and non-inflated methods. We need to check against the
6607         generic definition for cases where the instantiated method is not visible.
6608         We need to check against the inflated types for cases where the instantiation
6609         changes any super type. This fixes #382986.
6610
6611         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6612         that check for visibiliy as generic params only appears as the type subject
6613         of tokens on call opcodes. Field manipulation and ldftn must always
6614         target an exact type.
6615
6616 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6617
6618         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6619         if no related --security flag is passed.
6620
6621 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6622
6623         * mini-arch.h: Prepare support for ppc64.
6624
6625         Contributed under MIT/X11 license.
6626
6627 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6628
6629         * aot-runtime.c: Prepare support for ppc64.
6630
6631         Contributed under MIT/X11 license.
6632
6633 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6634
6635         * mini-ops.h: Prepare support for ppc64.
6636
6637         Contributed under MIT/X11 license.
6638
6639 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6640
6641         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6642
6643         Contributed under MIT/X11 license.
6644
6645 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6648         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6649         assemblies on windows.
6650
6651 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6652
6653         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6654         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6655         * main.c: Use UTF-8 encoded command line instead of Windows default code
6656         page on Windows to support Unicode.
6657         * driver.c (DllMain): New function for mixed-mode assembly support.
6658         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6659         export __stdcall functions without decoration.
6660
6661         Contributed under MIT/X11 license.
6662
6663 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6664
6665         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6666         saving it very early.
6667
6668 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6669
6670         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6671         deleted.  The only way to access the new RGCTX is via the
6672         trampline.
6673
6674         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6675         vtable instead of the RGCTX to static methods.
6676
6677         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6678         accessing the new RGCTX.
6679
6680         * generic-sharing.c: There is no separation between self, type
6681         arguments and other types in the RGCTX anymore.
6682
6683 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6684
6685         * mini-amd64.c (add_general): Remove previous stack adjustment.
6686         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6687         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6688         for 32 bytes of stack space reserved for all calls.
6689         
6690         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6691         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6692         adjustment.
6693         
6694         Code contributed under MIT/X11 license.
6695
6696 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6699         against the root definition, peeling out method and type instantiations.
6700         Cache verify success results, code that fails verification is still
6701         checked multiple times.
6702
6703 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6706
6707 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6708
6709         * mini-amd64.c (add_general): Always increment stack on Win64.
6710         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6711         on Win64.
6712         
6713         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6714         stack based argument handling on Win64.
6715         
6716         Code contributed under MIT/X11 license.
6717
6718 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6719
6720         * Makefile.am (version.h): Add support for git-svn.
6721
6722 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6723
6724         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6725         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6726         avoiding allocations and libc functions which might deadlock.
6727         
6728         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6729         'no-gdb-backtrace' option is set.
6730
6731         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6732
6733         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6734
6735 2008-04-21  Martin Baulig  <martin@ximian.com>
6736
6737         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6738         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6739
6740 2008-04-21  Martin Baulig  <martin@ximian.com>
6741
6742         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6743         `thread_vtable', `event_handler_ptr' and `event_handler'.
6744
6745 2008-04-21  Martin Baulig  <martin@ximian.com>
6746
6747         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6748         allows delayed initialization of the `executable_code_buffer' when
6749         attaching.
6750
6751 2008-04-21  Martin Baulig  <martin@ximian.com>
6752
6753         * mini.h (mono_debugger_create_notification_function): Removed.
6754         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6755
6756         * mdb-debug-info64.s
6757         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6758
6759         * mdb-debug-info32.s
6760         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6761
6762         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6763         currently only works on x86 and x86_64, so don't create it on ppc.
6764
6765 2008-04-21  Martin Baulig  <martin@ximian.com>
6766
6767         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6768
6769         * mini.c
6770         (mini_method_compile): In the fp elimination check, check
6771         `debug_options.mdb_optimizations' in addition to
6772         mono_debug_using_mono_debugger().       
6773
6774         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6775         disable some JIT optimizations which are only disabled when
6776         running inside the debugger.
6777         Added `--help-debug' option to describe the debugging options.
6778         (parse_debug_options): New static function to parse the `--debug'
6779         options, so we can easily add more stuff in future.
6780
6781 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6782
6783         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6784         the method has no body.
6785
6786 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6787
6788         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6789         assembly is not allowed in MSVC 64-bit compiler. 
6790         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6791         as we get floating point exceptions everywhere.
6792         
6793         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6794         correctly align arguments for call to throw_exception.
6795         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6796         
6797         Code contributed under MIT/X11 license.
6798
6799 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6802
6803 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6804
6805         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6806
6807         * mini-amd64.c (NEW_INS): Set cil_code.
6808
6809         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6810         from mini-amd64.c so all debugger related logic is in one place.
6811
6812         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6813         later won't have a random ip assigned to them.
6814
6815 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6816
6817         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6818         the arch specific function initializes code_size.
6819         (mono_create_delegate_trampoline): Ditto.
6820
6821         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6822         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6823         platforms.
6824
6825         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6826         running under the debugger.
6827
6828         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6829         debugger.
6830
6831         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6832         debugger. Also move the disabling of optimizations here from driver.c.
6833         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6834         debugger.
6835
6836         * mini.h (MonoCompile): Add a few new flags.
6837
6838 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6839
6840         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6841         so the cil_code field of created MonoInst's is properly set.
6842         (mini_select_instructions): Ditto.
6843
6844         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6845         (MONO_INST_NEW_CALL): Ditto.
6846
6847         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6848         in many places so the ins->cil_code field is properly initialized.
6849
6850         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6851         place.
6852
6853 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6854
6855         * mini.c (mini_method_compile): Print a different message when compiling a 
6856         shared method.
6857         
6858         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6859         > 1.
6860
6861 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6864         SSE2 instructions.
6865
6866         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6867         
6868 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * mini.c (handle_stack_args): Make this return void since its return value was
6871         never used. Also set cfg->unverifiable for invalid IL instead of calling
6872         G_BREAKPOINT ().
6873
6874 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6875
6876         * mini.c: Make sure "this" is live in catch clauses with type
6877         variables in shared generic code.
6878
6879 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6880
6881         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6882         generic_class_is_reference_type() to ensure the proper behaviour
6883         when sharing generic code and the type in question is a type
6884         argument.
6885
6886 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6887
6888         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6889         race conditions when printing thread dumps. Fixes #377738.
6890
6891 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6892         
6893         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6894         shows up when both MonoInst arguments can cause aliasig.
6895         There is likely no way in the current JIT to trigger this problem, but
6896         it showed up in the development of generics sharing, when in a new
6897         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6898         When the generics sharing code will be committed, its tests will be
6899         valid also for this bug.
6900
6901 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
6904         PATCH_INFO_METHOD.
6905
6906         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6907         NULL.
6908
6909 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6912         use a more detailed exception message for InvalidCastException.
6913
6914         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6915
6916         * driver.c (mono_main): Add --debug=casts option to turn on better 
6917         InvalidCastException message details.
6918
6919         * mini.c (mini_get_debug_options): New helper function to return the address of
6920         the debug_options variable.
6921
6922         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6923         the jit_tls TLS variable.
6924
6925         * mini.c (mono_jit_tls): New TLS variable.
6926
6927         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6928         option is used.
6929
6930 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6933
6934         * mini.c: Removed verifer related stuff, code moved to verify.c.
6935
6936         * driver.c: Using code from verify.c instead of mini.c.
6937
6938 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
6939
6940         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
6941         longer valid.
6942
6943 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * mini.c (check_for_method_verify): Enabling verification of
6946         corlib if mono_verify_all is set. Bugs in the verifier preventing that
6947         have been fixed.
6948
6949 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
6950
6951         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
6952         caller saved registers as well.
6953         
6954         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
6955         saved registers as well.
6956
6957 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
6958
6959         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
6960
6961         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
6962         code.
6963
6964 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
6965
6966         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
6967         to get_call_info.
6968         (get_call_info): Take a gsctx argument instead of 'cfg'.
6969
6970 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6971
6972         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
6973         mono_verify_all is set.
6974
6975         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
6976
6977         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
6978
6979 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
6982         an exception.
6983
6984         * driver.c mini.c mini.h: Add a --verify-all development option to test the
6985         verifier and the code generated by the compiler.
6986
6987 2008-03-25  Mark Probst  <mark.probst@gmail.com>
6988
6989         * mini.c: Generic sharing of the non-nullable case of the box
6990         instruction.
6991
6992 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * inssel.brg: Fix the build.
6995
6996         * iltests.il.in: Add a test for lconv.ovf.u8.un.
6997
6998 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
6999
7000         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7001         Array:Address. Fixes #372410.
7002
7003         * iltests.il.in: New tests for readonly prefix.
7004
7005 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7008         mini-trampolines.c.
7009
7010         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7011         mini-exceptions.c.
7012
7013         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7014         
7015         * mini.c (mono_decompose_op_imm): New helper function.
7016
7017         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7018         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7019         return value.
7020
7021         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7022         mono_arch_output_basic_block. Fix warnings.
7023
7024         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7025         for now.
7026
7027 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7028
7029         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7030         since the extra frame is now detected automatically inside the loop.
7031
7032         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7033         opts which are now in mono_peephole_ins ().
7034         
7035         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7036
7037         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7038         frames and skip duplicate managed-to-native frames. Fixes #367665.
7039
7040         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7041         opts which are now in mono_peephole_ins ().
7042         (mono_arch_peephole_pass_2): Ditto.
7043
7044         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7045
7046         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7047         arch independent peephole optimizations.
7048
7049         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7050         opts which are now in mono_peephole_ins ().
7051
7052         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7053         
7054         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7055
7056         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7057         pattern.
7058
7059         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7060         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7061         opcode. 
7062
7063 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7064
7065         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7066         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7067         return value.
7068
7069         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7070         mono_arch_output_basic_block. Fix warnings.
7071
7072 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7073
7074         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7075         conv.ovf.u.un.
7076
7077 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7078
7079         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7080         conv.ovf.u.un.
7081
7082         * iltests.il: Add new tests.
7083
7084 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7085
7086         * mini.c: Removed Windows version macros.
7087
7088 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7089
7090         * generic-sharing.c: Put reflection types in the extensible part
7091         of the runtime generic context.
7092
7093         * mini.c: Generic sharing of the GetTypeHandle special case of the
7094         ldtoken instruction.
7095
7096 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7099
7100         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7101         
7102         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7103         consistency with the other version on the linear IR branch.
7104
7105         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7106
7107         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7108
7109         * iltests.il.in: Add new tests.
7110
7111 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7112
7113         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7114
7115         * iltests.il.in: Add new tests.
7116
7117 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7118
7119         * mini.c: Two variables with the same name were declared in
7120         nesting contexts and one wasn't initialized.  Fixed.
7121
7122 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7123
7124         * mini.c: Generic sharing of the initobj instruction.
7125
7126 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7127
7128         * mini.c: make the test to optimize ldtoken from typeof() more
7129         precise.
7130
7131 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7132
7133         * mini.c: Generic sharing of the initobj instruction for reference
7134         types.
7135
7136 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7137
7138         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7139         the mono_breakpoint_clean_code() code to perform bound checks.
7140
7141 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7142
7143         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7144         mono_arch_patch_callsite() to include the start of the managed method
7145         to be able to perform bound checks.
7146
7147 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7148
7149         * mini.c: Generic sharing for the isinst instruction.
7150
7151 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7152
7153         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7154         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7155         with the runtime generic context argument.
7156
7157         * mini.c: Share calls to several types of unsharable methods by
7158         putting the address of the method code in the runtime generic
7159         context and doing an indirect call.
7160
7161         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7162         to switches.
7163
7164 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7165
7166         * generic-sharing.c: Change due to a change in the runtime genric
7167         context API.
7168
7169 2008-03-15  Martin Baulig  <martin@ximian.com>
7170
7171         * tramp-x86.c
7172         (mono_arch_nullify_class_init_trampoline): Add call to
7173         mono_breakpoint_clean_code() to make things work when running
7174         inside the debugger.
7175
7176         * tramp-amd64.c
7177         (mono_arch_nullify_class_init_trampoline): Add call to
7178         mono_breakpoint_clean_code() to make things work when running
7179         inside the debugger.
7180
7181 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7182
7183         * inssel-long.brg (reg): Fix 64 bit build.
7184
7185 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7186
7187         * mini.c, mini.h: Share static generic code by passing it an
7188         implicit argument pointing to the runtime generic context.
7189
7190         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7191         inssel-long32-mips.brg: New opcodes for calling shared static,
7192         which need to be passed the runtime generic context.
7193
7194         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7195         argument on the stack in the prologue if needed.  New function for
7196         finding the runtime generic context argument from the registers
7197         saved by the trampoline.
7198
7199         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7200         runtime generic context argument.
7201
7202         * tramp-amd64.c: Also restore the register used for the runtime
7203         generic context argument.
7204
7205         * mini-trampoline.c: Resolve shared static calls by consulting the
7206         runtime generic context via the new argument.
7207
7208         * generic-sharing.c: Add an argument to sharability-checking
7209         functions that specifies whether type variables should be treated
7210         as sharable type arguments.
7211
7212         * inssel-x86.brg: Removed a superfluous, buggy rule.
7213
7214         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7215         to switches.
7216
7217 2008-03-14  Martin Baulig  <martin@ximian.com>
7218
7219         * debug-debugger.c (main_thread_handler): Call
7220         mono_runtime_run_main() without sending any notifications.
7221
7222         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7223
7224 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7225
7226         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7227
7228 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7229
7230         * tramp-x86.c: Fixed register restore offsets in the trampoline
7231         code for ECX and EDX.
7232
7233 2008-03-12  Geoff Norton  <gnorton@novell.com>
7234
7235         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7236         different ucontext_t implementations.
7237         * exceptions-arm.c: Use the above defines to get exceptions working on 
7238         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7239         * mini-arm.c: Implement iPhone icache support (based on a patch by
7240         Luke Howard lukeh@padl.com)
7241
7242 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7243
7244         * mini.c: Enable generic sharing of calls to non-static
7245         non-interface non-generic non-value-type methods.
7246
7247         * mini-trampolines.c: Resolve calls from shared generic code.
7248
7249 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7250
7251         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7252
7253         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7254
7255 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7256
7257         * mini.c: some fixes for the AOT compiler.
7258
7259 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * cpu-amd64.md: Add clob:1 to some float opcodes.
7262
7263 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7264
7265         * mini.h: Added MiniVerifierMode enumeration.
7266
7267         * mini.c: Added mini_verifier_set_mode to control
7268         the usage of the new verifier.
7269
7270         * mini.c (mono_method): Integrated the new verifier.
7271
7272         * driver.c: Extended --security option with validil and
7273         verifiable options to activate the new verifier.
7274
7275 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7278         optimization to ctors taking 0 or 2 arguments too.
7279
7280         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7281         a bit.
7282
7283         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7284
7285         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7286
7287 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7290         non-aot case as well.
7291
7292         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7293
7294         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7295         changes.
7296
7297         * aot-compiler.c (encode_patch): Ditto.
7298
7299         * mini.h (G_MININT32): Fix the definition of this.
7300
7301 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7302
7303         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7304
7305         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7306
7307 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7310         methods returning vtypes in registers.
7311         (mono_arch_allocate_vars): Ditto.
7312
7313         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7314
7315         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7316
7317         * generics.cs: Add a test from the linear IR branch.
7318
7319         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7320
7321         * mini.c (inline_method): Cache failed inline attempts.
7322
7323 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7324
7325         * mini.c: For shared methods of generic classes put the location
7326         of "this" into the MonoGenericJitInfo.
7327
7328         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7329         register out of a MonoContext by register number.  Add the generic
7330         sharing context as an argument to mono_arch_find_this_argument().
7331
7332         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7333         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7334         for new arch function.
7335
7336         * mini-exception.c: Handle open exception clauses in shared
7337         generic code.
7338
7339         * mini-trampolines.c: Supply additional argument to
7340         mono_arch_find_this_argument().
7341
7342 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * Makefile.am (regtests): Run the bench.exe tests last.
7345
7346 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7349         a bit.
7350
7351 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7354         with MS.
7355
7356         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7357         
7358         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7359
7360         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7361         whose class has no cctor.
7362
7363         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7364
7365 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7366
7367         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7368         unverified.
7369
7370 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7371
7372         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7373         to be in sync with the code on the linear IR branch.
7374
7375         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7376
7377         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7378
7379 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7382
7383         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7384
7385         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7386
7387         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7388
7389         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7390         
7391         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7392         body.
7393
7394 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7395
7396         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7397         OP_LOADR4_MEMBASE emission.
7398
7399         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7400         (mono_spillvar_offset_float): Ditto.
7401
7402         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7403
7404         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7405         emission.
7406
7407         * basic-long.cs: Add regression tests for them.
7408
7409         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7410         use.
7411         (mono_arch_allocate_vars): Fix representation of single-precision float
7412         argument.
7413         (mono_arch_output_basic_block): Ditto.
7414
7415         * inssel-mips.brg: Ditto, remove duplicate items.
7416
7417         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7418         arguments of tail calls as on other platforms.
7419         (mono_arch_output_basic_block): Handle tail calls.
7420
7421         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7422         register.
7423
7424         * objects.cs (test_5_pass_static_struct): Add test for it.
7425
7426         Contributed under MIT/X11 license.
7427
7428 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7429
7430         * Makefile.am: Use gmcs for compiling the regression tests.
7431
7432         * *.2.cs *.2.il: Rename to *.cs and *.il.
7433
7434 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * regalloc.h: Make the vassign array smaller.
7437
7438         * mini.c (mini_method_compile): Remove an unused field in cfg.
7439
7440         * mini-codegen.c: Add a bunch of micro optimizations.
7441
7442 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7443
7444         * regalloc.h: Remove some unused fields.
7445
7446 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7449
7450         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7451
7452 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7453
7454         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7455
7456         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7457         trampoline: Fetch an entry from the runtime generic context.  If
7458         it's NULL, jump to the actual trampoline to fill the runtime
7459         generic context.  Otherwise, return it.
7460
7461         * mini.c: Call the lazy fetch trampoline to get entries out of the
7462         runtime generic context.
7463
7464         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7465         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7466         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7467
7468 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7469
7470         * mini.c: Fetch data out of the extensible part of the runtime
7471         generic context instead of calling a helper function.
7472
7473         * generic-sharing.c: Some functions moved into
7474         metadata/generic-sharing.c.  Helper function for fetching other
7475         types now checks and asserts against extensible rgctx (just for
7476         debugging purposes - the helper function isn't called anymore
7477         unless for debugging).
7478
7479 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7480
7481         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7482         for tail calls up to the point that the tests in iltests.exe run. Also add a
7483         dummy CKFINITE implementation.
7484         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7485         needed for trampoline LMF frames.
7486
7487         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7488         trampoline LMF frames.
7489
7490 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7491
7492         * mini.c (inline_method): clean any pending loader error when inlining fail.
7493         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7494
7495 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7498
7499         * aot-runtime.c (decode_patch_info): Ditto.
7500
7501         * mini.c (mono_resolve_patch_target): Ditto.
7502         
7503         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7504         icall wrappers.
7505
7506         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7507         
7508         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7509         if it references an icall address.
7510
7511 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * cpu-s390x.md: Remove some more unused opcodes.
7514         
7515         * cpu-s390x.md: Remove some unused opcodes.
7516
7517         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7518         mono_op_imm_to_op ().
7519
7520         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7521         instead of a switch statement.
7522         
7523         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7524         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7525
7526         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7527         
7528         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7529
7530         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7531         -1.
7532
7533 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7534
7535         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7536         opened. Fixes #362607.
7537
7538         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7539
7540         * iltests.il.in: Add a test for static methods in interfaces.
7541
7542 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7543
7544         * genmdesc.c (build_table): Fix a crash on older glib versions.
7545
7546         * cpu-sparc.md: Remove some unused opcodes.
7547         
7548         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7549         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7550
7551         * cpu-amd64.md: Remove some unused opcodes.
7552
7553         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7554         like the other opcodes.
7555
7556 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7557
7558         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7559
7560         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7561
7562         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7563         variables 'cfg' instead of 'm' for consistency.
7564
7565         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7566
7567         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7568         argument holding the vtype return address, to avoid the ambigious use of
7569         cfg->ret for this purpose.
7570
7571         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7572
7573         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7574         
7575         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7576         new mono_print_ins () function which only takes one argument.
7577
7578 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7581         macro arguments.
7582
7583 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7586
7587         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7588
7589         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7590         opcodes and other small changes.
7591
7592         * mini-ops.h: Add some new opcodes from the linear IR branch.
7593
7594         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7595
7596         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7597         opcodes, use the REG_MEMBASE opcodes instead.
7598         
7599         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7600         opcodes, use the REG_MEMBASE opcodes instead.
7601         
7602         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7603         linear IR branch.
7604
7605         * mini.c (mono_op_imm_to_op): New helper function.
7606
7607         * mini-ops.h: Add some opcodes from linear IR branch.
7608
7609 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7612         <tsv@solvo.ru>.
7613
7614 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7615
7616         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7617         OP_ICONV_TO_R4/R8.
7618
7619         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7620
7621 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7622
7623         * aot-compiler.c (emit_method_code): Add an assert.
7624
7625         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7626         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7627         methods.
7628
7629 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7630
7631         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7632         some load/store opcodes so they are consistent. 
7633         (mono_arch_emit_prolog): Simplify some code.
7634
7635         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7636
7637         * objects.cs: Add tests for large argument offsets on ARM.
7638
7639         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7640         stack offsets. Fixes #359651.
7641
7642         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7643
7644         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7645
7646         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7647
7648         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7649
7650         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7651
7652         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7653         rid of CEE_CONV_R_UN.
7654
7655         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7656
7657 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7660
7661         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7662
7663         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7664
7665         * cpu-amd64.md: Remove some unused opcodes.
7666
7667         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7668
7669         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7670
7671         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7672         arch specific functions for its parts. Call the peephole pass after local
7673         regalloc so the prolog can compute a more accurate max_offset.
7674         
7675         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7676         the corresponding OP_I/OP_L opcodes.
7677
7678         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7679
7680         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7681
7682 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7685         as they are handled in mini.c.
7686
7687         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7688         
7689         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7690         case since it is handled in mini.c.
7691
7692         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7693
7694         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7695
7696         * *.c: Use the new opcodes in the IR and back end code.
7697
7698         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7699
7700         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7701
7702 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7703
7704         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7705         an assert because it has a race condition.
7706
7707 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7708
7709         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7710
7711         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7712
7713         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7714
7715         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7716         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7717
7718 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7719
7720         * cpu-amd64.md (move): Correct the maximum size of move.
7721
7722 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7723
7724         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7725         the generic class init trampoline to return quickly if the class
7726         is already inited.
7727
7728 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7731         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7732
7733 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7736         branch.
7737
7738 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7739
7740         * objects.cs: Add some soft-float tests.
7741
7742         * mini.c: Fix a couple more soft-float issues.
7743
7744         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7745
7746         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7747         avoid a REX prefix.
7748
7749 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7750
7751         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7752         exception happens while compiling a virtual method.
7753
7754 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7755
7756         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7757         
7758         * mini-sparc.c: Fix build.
7759
7760         * mini-sparc.c (get_call_info): Add support for generic sharing.
7761
7762         * mini-exceptions.c: Add a FIXME.
7763
7764 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7765
7766         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7767         altstack handling code.
7768
7769         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7770         
7771         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7772
7773         * mini-s390.c: Add support for generic sharing.
7774
7775         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7776         Fix CAS on s390.
7777         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7778
7779         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7780
7781         * mini-s390x.c: Add support for generic sharing.
7782         
7783         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7784         Fix CAS on ia64.
7785         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7786
7787         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7788         can be used since it takes a 16 bit signed immediate.
7789
7790         * inssel-s390x.brg: Fix OP_SETRET.
7791
7792         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7793
7794         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7795
7796         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7797
7798         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7799
7800         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7801         in one place.
7802
7803         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7804         stuff.
7805
7806         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7807         of the unused mono_arch_patch_delegate_trampoline stuff.
7808
7809 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * basic-long.cs: Move the fp related tests to basic-float.cs.
7812
7813         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7814
7815         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7816
7817         * basic-calls.cs: Add a test for proper float argument passing.
7818
7819         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7820         if the context corresponds to an exception received through a signal.
7821
7822         * exceptions.cs: Add a test for nullref handling at the start of a try
7823         clause.
7824
7825         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7826
7827         * jit-icalls.c (mono_break): New JIT icall.
7828
7829         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7830
7831         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7832
7833 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * cpu-*.md: Get rid of unused opcodes.
7836
7837         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7838
7839         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7840         by all platforms.
7841
7842         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7843         define.
7844
7845         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7846         the arch independent trampoline code in mini-trampolines.c.
7847
7848         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7849
7850         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7851
7852         * mini-s390.h: Remove an unused define.
7853         
7854         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7855         the arch independent trampoline code in mini-trampolines.c.
7856
7857         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7858
7859 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7860
7861         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7862
7863         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7864
7865         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7866
7867         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7868
7869         * cpu-amd64.md: Use smaller sizes for int opcodes.
7870
7871         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7872
7873         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7874         objects.cs.
7875
7876         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7877         debugging.
7878
7879         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7880         instead of though a pointer to save an indirection when accessing elements of
7881         the array.
7882
7883         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7884         some typos.
7885         (NOT_IMPLEMENTED): New helper macro.
7886         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7887         of a bb.
7888
7889         * *.c: Use the new helper macro.
7890
7891 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7892
7893         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7894
7895 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7898         stack slots.
7899
7900 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
7901
7902         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
7903         profiling is enabled.
7904         
7905         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7906         the end.
7907         (mono_arch_emit_prolog): Add more first bblock optimizations.
7908
7909         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7910         in order if possible.
7911         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7912         bblock, since the arguments are still in their original registers.
7913
7914         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7915
7916 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7919         as well.
7920
7921         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7922         offset 0.
7923
7924         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7925
7926         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7927         process async exceptions received while in unmanaged code.
7928
7929         * mini.c (mini_init): Install a callback with the runtime which will be called
7930         when a thread receives an async exception while in unmanaged code.
7931
7932         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7933
7934         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
7935
7936 2008-01-16  Wade Berrier  <wberrier@novell.com>
7937
7938         * cpu-g4.md:
7939         * cpu-arm.md:
7940         * cpu-s390x.md:
7941         fix build
7942
7943 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7944
7945         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
7946         compilation with sun cc.
7947
7948         * cpu-*.md: Fix the build.
7949
7950         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
7951
7952         * mini-amd64.h: Add some comments to the MonoLMF structure.
7953
7954         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
7955         
7956         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
7957         in the LMF structure if possible. This saves two instructions in the
7958         managed->native wrappers.
7959
7960         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
7961
7962 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7963
7964         * generic-sharing.c: New type argument lookup code which uses the
7965         runtime generic context template.
7966
7967 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
7970
7971         * mini-arm.c (add_general): Fix arm eabi parameter passing.
7972         (mono_arch_output_basic_block): Fix localloc implementation.
7973
7974         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
7975
7976         * mini-ia64.c (peephole_pass): Fix ia64 build.
7977
7978         * mini-amd64.c (peephole_pass): Fix a warning.
7979         
7980         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
7981         at a constant offset from sp/fp.
7982
7983         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
7984         instead of obtaining it from *lmf in the managed method case.
7985
7986 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7987
7988         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
7989
7990 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
7991
7992         * mini.h (MonoInstList): New type.
7993         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
7994         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
7995         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
7996         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
7997         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
7998         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
7999         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8000         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8001         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8002         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8003         MONO_INST_LIST_FOR_EACH_ENTRY,
8004         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8005         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8006         mono_inst_list_first, mono_inst_list_last,
8007         mono_inst_list_next, mono_inst_list_prev): New instruction
8008         list handling interfaces.
8009         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8010         list head 'ins_list'.
8011         (MonoInst): Replace next pointer with list head 'node'.
8012         (MonoCallInst): Make 'out_args' a MonoInstList.
8013         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8014         (MonoCompile): Delete reverse_inst_list and
8015         reverse_inst_list_len.
8016         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8017         mono_arch_lowering_pass, mono_arch_local_regalloc,
8018         mono_arch_output_basic_block, mono_arch_emit_prolog):
8019         Convert to new instruction lists.
8020         (insert_after_ins): Delete.
8021         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8022         instruction lists.
8023         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8024         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8025         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8026         mono_emulate_opcode, mono_emit_load_got_addr,
8027         inline_method, mono_method_to_ir, mono_print_bb_code,
8028         print_dfn, decompose_pass, nullify_basic_block,
8029         replace_out_block_in_code, remove_block_if_useless,
8030         merge_basic_blocks, move_basic_block_to_end,
8031         try_unsigned_compare, optimize_branches, mono_print_code,
8032         mini_select_instructions, remove_critical_edges): Likewise.
8033         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8034         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8035         mono_arch_output_basic_block, mono_arch_emit_prolog):
8036         Likewise.
8037         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8038         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8039         mono_arch_output_basic_block): Likewise.
8040         (inst_list_prepend, insert_after_ins): Delete.
8041         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8042         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8043         instruction lists.
8044         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8045         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8046         mono_arch_emit_prolog): Likewise.
8047         * cfold.c (mono_constant_fold): Likewise.
8048         * liveness.c (visit_bb, mono_analyze_liveness,
8049         optimize_initlocals): Likewise.
8050         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8051         * graph.c (mono_draw_code_cfg): Likewise.
8052         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8053         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8054         mono_ssa_cprop): Likewise.
8055         * abcremoval (get_relations_from_previous_bb, process_block):
8056         Likewise.
8057         * local-propagation (mono_cprop_invalidate_values,
8058         mono_local_cprop_bb): Likewise.
8059         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8060         peephole_pass, mono_arch_output_basic_block,
8061         mono_arch_emit_prolog): Likewise.
8062         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8063         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8064         mono_arch_emit_prolog): Likewise.
8065         (insert_after_ins): Delete.
8066         * aliasing.c (print_code_with_aliasing_information,
8067         mono_build_aliasing_information, mono_aliasing_deadce):
8068         Convert to new instruction lists.
8069         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8070         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8071         mono_arch_local_regalloc, mono_arch_output_basic_block):
8072         Likewise.
8073         (insert_after_ins): Delete.
8074         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8075         peephole_pass, mono_arch_output_basic_block): Convert to
8076         new instruction lists.
8077         * mini-codegen (InstList, inst_list_prepend,
8078         insert_after_ins): Delete.
8079         (insert_before_ins, get_register_force_spilling,
8080         get_register_spilling, free_up_ireg, free_up_reg,
8081         create_copy_ins, create_spilled_store, alloc_int_reg,
8082         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8083         to new instruction lists.
8084         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8085         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8086         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8087         (insert_after_ins): Delete.
8088         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8089         mono_arch_local_regalloc, mono_arch_output_basic_block,
8090         mono_arch_call_opcode): Convert to new instruction lists.
8091         (insert_after_ins): Delete.
8092         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8093         peephole_pass, mono_arch_output_basic_block,
8094         mono_arch_emit_prolog): Convert to new instruction lists.
8095
8096 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8099
8100         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8101         Fixes #353182.
8102
8103         * Makefile.am (version.h): Make this work with non-bash shells.
8104
8105 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8108
8109 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8112         the InitializeArray optimization.
8113
8114 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8115
8116         * mini.c driver.c: Don't include os/gc_wrapper.h.
8117
8118 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8119
8120         * mini.c (print_jit_stats): Print GC statistics if available.
8121
8122 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8123
8124         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8125
8126 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8129
8130 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8131
8132         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8133         
8134         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8135
8136         * driver.c (mono_main): Ditto.
8137
8138 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8141
8142         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8143         in the vtable can't be encoded.
8144         (compile_method): Ditto.
8145
8146 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8149         defined.
8150
8151         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8152         lmf->rbp.
8153
8154         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8155         the top LMF entry belongs to the current method.
8156
8157         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8158
8159 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8162         
8163         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8164
8165         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8166
8167         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8168
8169         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8170
8171         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8172         implementation.
8173
8174         * basic-float.cs: Add an ulong->double cast test.
8175
8176 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * mini.c (mono_method_to_ir): Fix a warning.
8179
8180 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8181
8182         * mini-ops.h: Add OP_SWITCH.
8183
8184         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8185         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8186
8187 2007-12-11  Geoff Norton  <gnorton@novell.com>
8188
8189         * mini-s390x.c: Minor change to the MAX() define to allow
8190         it to compile with other gcc versions.
8191
8192 2007-12-11  Geoff Norton  <gnorton@novell.com>
8193
8194         * cpu-s390x.md:
8195         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8196
8197 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8198
8199         exceptions-arm.c (mono_arch_get_restore_context): Restore
8200         the frame pointer.
8201
8202         exceptions-arm.c (throw_exception): Save the frame pointer.
8203         This is a partial fix for #323747. Only the client side is
8204         fixed.
8205
8206 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8207
8208         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8209         was using an unrelated variable to log the class which
8210         needed the cctor to be called. This was crashing on arm.
8211
8212 2007-12-09  Robert Jordan  <robertj@gmx.net>
8213
8214         * mini-x86.c (mono_arch_emit_epilog):
8215         Consider all kinds of 64-bit types. Fixes #323114.
8216
8217 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8218
8219         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8220
8221 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8224
8225 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8226
8227         * mini.c: run type ctor before allocating an object, not only
8228         when running it's constructor method (fixes at least part of bug #342507).
8229
8230 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8231         
8232         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8233         
8234         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8235         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8236         function.
8237
8238         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8239         mono_generic_class_init_trampoline () the same as it is done with the other
8240         trampolines.
8241
8242         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8243         aot-runtime.c aot-compiler.c: Implement AOT support.    
8244
8245 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8246
8247         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8248         build for archs which don't have the vtable trampoline defined
8249         yet.
8250
8251 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8252
8253         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8254
8255         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8256
8257         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8258
8259         * tramp-<ARCH>.c: Use the new helper function.
8260
8261 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8262
8263         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8264         trampoline call, which takes a vtable argument.
8265
8266         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8267         OP_TRAMPCALL_VTABLEs like other calls.
8268
8269         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8270         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8271         call.  Implemented a support function which fetches the vtable
8272         from a register set.
8273
8274         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8275         Implemented a generic class init trampoline, using the
8276         OP_TRAMPCALL_VTABLE opcode.
8277
8278         * mini.c: Implemented static field access when sharing generic
8279         code.  This implies initing the class using the new
8280         OP_TRAMPCALL_VTABLE call.
8281
8282 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8283
8284         * mini.c: Don't compile methods with sharing enabled if their
8285         classes are disabled for sharing.
8286
8287 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8288
8289         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8290         opcodes. Fixes #346563.
8291
8292         * objects.cs: Add a new test.
8293
8294         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8295
8296         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8297         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8298
8299 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8300
8301         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8302
8303 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8306         code stream.
8307
8308 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8309
8310         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8311
8312         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8313         optimization in the AOT case.
8314         
8315 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8318         
8319         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8320
8321         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8322
8323         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8324
8325         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8326         is created by the inlined delegate ctor.
8327
8328         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8329
8330         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8331
8332 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * cpu-x86.md: Fix the length of ckfinite.
8335
8336 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8339         
8340         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8341         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8342
8343         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8344
8345         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8346         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8347
8348 2007-11-28  Martin Baulig  <martin@ximian.com>
8349
8350         * mini-x86.c
8351         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8352         after creating the trampoline.
8353
8354 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8355
8356         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8357
8358         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8359         the same version.
8360
8361         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8362         instead of the calling method to help AOT.
8363
8364         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8365
8366 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8367
8368         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8369         is defined.
8370
8371 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8372
8373         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8374         
8375         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8376         (encode_method_ref): No need to handle generic method definitions specially.
8377
8378         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8379
8380         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8381         decode_klass_info.
8382
8383         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8384         encode_klass_info.
8385         (compile_method): Enable generic sharing.
8386
8387 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8388
8389         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8390         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8391
8392         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8393         generic code.
8394
8395         * mini-trampolines.c: Fix a warning.
8396
8397         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8398         NEW_PCONST.
8399         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8400         (generic_class_is_reference_type): Remove unused function.
8401
8402         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8403         in the generic vtable trampoline case.
8404
8405         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8406         
8407         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8408         return an AOT method based on a vtable slot.
8409
8410         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8411
8412         * mini.c (mini_get_vtable_trampoline): Export this.
8413
8414 2007-11-22  Martin Baulig  <martin@ximian.com>
8415
8416         * debug-debugger.h
8417         (MonoDebuggerInfo): Move `debugger_version' up.
8418
8419 2007-11-22  Martin Baulig  <martin@ximian.com>
8420
8421         * mini-amd64.c
8422         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8423
8424         * mini-trampolines.c
8425         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8426         after compiling the method.
8427
8428 2007-11-20  Martin Baulig  <martin@ximian.com>
8429
8430         * debug-mini.c
8431         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8432         (mono_debugger_remove_breakpoint): Likewise.
8433         (mono_debugger_check_breakpoints): Likewise.
8434
8435         * debug-debugger.c: Implement the new breakpoint interface here.
8436
8437 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8440         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8441
8442         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8443
8444 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8445
8446         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8447
8448         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8449         mini.c.
8450
8451         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8452         mini.c.
8453
8454         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8455         returning a vtype in a register.
8456
8457         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8458         here from the arch specific code.
8459
8460         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8461         mini.c.
8462
8463         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8464         (mono_arch_emit_prolog): Increment maximum prolog size.
8465
8466         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8467         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8468
8469         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8470         MonoGenericSharingContext.
8471
8472         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8473         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8474
8475 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8476
8477         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8478         which extract fields out of the runtime generic context.  Full
8479         sharing of the NEWARR opcode.
8480
8481 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8482
8483         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8484         --enable-minimal=ssa.
8485
8486 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8489         mono_marshal_get_delegate_invoke () signature change.
8490
8491 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8492
8493         * mini.c: Removed the shared context in favor of the generic
8494         sharing context.  Allocate the MonoJitInfo structure with room for
8495         the generic sharing context if it's needed.
8496
8497         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8498         domain-internals.h now.
8499
8500         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8501
8502         * generic-sharing.c: Several changes for working without a shared
8503         context and instead operating on open types instead.
8504
8505 2007-11-12  David S. Miller  <davem@davemloft.net>
8506
8507        * inssel-sparc.brg: Fix double instruction emit.
8508
8509 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8512         Get/Set/Address methods.
8513         
8514         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8515         mono_marshal_get_delegate_invoke signature change.
8516
8517 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8520         This can happens with dynamic methods. Fixes the other bug in #322722.
8521
8522 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8523
8524         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8525         BX call sequence.
8526
8527         * mini-arm.c (arm_patch): Implement patching of BX call
8528         sequence. Fixes one of the bugs in #322722.
8529
8530 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8531
8532        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8533        under Linux.  We only need to flush every 32-byte cache line.    
8534
8535 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8536
8537         * mini.c:
8538         move_basic_block_to_end: Add branches when needed, eventually creating
8539         a new BB.
8540         optimize_branches: added a parameter that tells if it's ok to create
8541         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8542         and avoid calling move_basic_block_to_end when it's not ok.
8543         Fixes bug 318677.
8544
8545 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8546
8547         * mini.c: Abort inlining call to InitializeArray if something
8548         looks wrong.  Let the icall handle it, which now has proper safety
8549         checks.
8550
8551 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * mini.c (mono_spill_call): add support for soft-float.
8554
8555         * mini.c (mono_method_to_ir): add support for soft-float
8556         to inlined functions that return float.
8557
8558         * mini.c (mono_method_to_ir): add support for soft-float
8559         to cee_stsfld opcode on float fields.
8560
8561 2007-11-05  Geoff Norton  <gnorton@novell.com>
8562
8563         * mini-x86.h: Fix the structure access for X86 Leopard.
8564
8565
8566 2007-11-05  Martin Baulig  <martin@ximian.com>
8567
8568         * mini-trampolines.c
8569         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8570         after compiling the method to notify the debugger.
8571
8572 2007-11-05  Martin Baulig  <martin@ximian.com>
8573
8574         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8575
8576 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8579         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8580
8581 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8584         native-to-managed wrappers.
8585         
8586 2007-11-01  Geoff Norton  <gnorton@novell.com>
8587
8588         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8589         members.
8590
8591 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8592
8593         * mini.c, mini-x86.c: when getting back from unmanaged code
8594         to managed via a marshaled delegate we also need to set the
8595         right domain.
8596
8597 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8598
8599         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8600         for amd64.
8601
8602 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8603
8604         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8605         let the debugger or other external agents to tell the JIT when
8606         a sw breakpoint has been inserted in the code that the JIT needs
8607         to be able to inspect.
8608
8609 2007-10-31  Martin Baulig  <martin@ximian.com>
8610
8611         * debug-debugger.h
8612         (MonoDebuggerInfo): Remove `runtime_class_init'.
8613
8614 2007-10-30  Martin Baulig  <martin@ximian.com>
8615
8616         * debug-mini.h
8617         (mono_debugger_thread_created): Added `MonoThread *' argument.
8618         (mono_debugger_extended_notification): New public method.
8619         (mono_debugger_trampoline_compiled): New public method.
8620
8621         * debug-mini.c
8622         (MonoDebuggerThreadInfo): Added `thread' and
8623         `extended_notifications' fields.
8624
8625         * debug-debugger.c
8626         (debugger_executable_code_buffer): New static variable.
8627
8628         * debug-debugger.h
8629         (MonoDebuggerInfo): Added `executable_code_buffer',
8630         `executable_code_buffer_size', `breakpoint_info_area',
8631         `breakpoint_table' and `breakpoint_table_size'.
8632
8633 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8634
8635         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8636         that IP  either is an unused value or the vtable pointer. IMT 
8637         calls use vtable + offset now. Reduced by almost half the size
8638         of IMT entries.
8639
8640 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8641
8642         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8643         defines to access param registers. Replace long usage with
8644         gsize as sizeof(long) != sizeof(void*) on Win64.
8645
8646         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8647         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8648         instead of non-existant _GetAddressOfReturnAddress.
8649
8650         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8651         param registers. Save/restore %rdi and %rsi in MonoLMF.
8652
8653         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8654         param registers. Modify (throw_exception) signature to take 
8655         %rdi and %rsi on Win64. 
8656
8657         Code is contributed under MIT/X11 license.
8658
8659 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8660
8661         * helpers.c: unlink debugging output files.
8662
8663 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * mini.c: Move mono_create_ftnptr () to object.c.
8666
8667 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8668
8669         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8670         optional. This function can now be used to disassemble code generated
8671         outside the JIT such as trampolines and IMT thunks.
8672
8673         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8674
8675         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8676         vtable pointer from a ldr instruction.
8677
8678         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8679         new IMT call sequence.
8680
8681         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8682         call sequence for interface invocations.
8683
8684         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8685         for imt support. This function is empty since IMT on ARM requires no
8686         special handling on the IR side.
8687
8688         * mini-arm.c (mono_arch_find_imt_method): added, required for
8689         imt support.
8690
8691         * mini-arm.c (mono_arch_find_this_argument): added, required
8692         for imt support.
8693
8694         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8695         a ldr instruction to load a value stored in the code stream.
8696
8697         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8698         for imt support.
8699
8700
8701 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8702
8703         * mini.c (mini_init): Install the jump trampoline callback.
8704
8705 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8706
8707         * mini-trampolines.c: handle synchronized methods with the common
8708         vtable trampoline (bug #335601).
8709
8710 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8711
8712         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8713
8714         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8715         64 bit platforms.
8716
8717         * mini-ia64.h mini-ia64.c: Add support for IMT.
8718
8719         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8720         prolog. Fixes #331958.
8721
8722 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8723
8724         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8725
8726 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8727
8728         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8729         trampoline.
8730
8731 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8732
8733         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8734         trampoline.
8735
8736 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8737
8738         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8739         trampoline.
8740
8741 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8742
8743         * mini-trampolines.c: changed the magic rampoline to understand
8744         the common vtable trampoline method: the method to invoke is
8745         determined by the vtable displacement of the call.
8746
8747 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8748
8749         * mini.c, mini.h: register the common vtable trampoline if the
8750         architecture supports it.
8751
8752 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8753
8754         * cpu-amd64.md: use the correct max length for tls_get.
8755
8756 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8759         CEE_STELEM_ANY. Fixes #333696.
8760
8761 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8762
8763         * exceptions-x86.c: provide more graceful handling of the case where
8764         we followed a bogus function pointer from managed code (bug #332866).
8765
8766 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8767
8768         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8769         replaces the generic_shared flag and will carry more information
8770         in the future.
8771
8772         * generic-sharing.c: Added mini_type_stack_size() which allows
8773         allows open types if given a generic sharing context.
8774         mini_get_basic_type_from_generic() takes a
8775         MonoGenericSharingContext* instead of a MonoCompile* now.
8776
8777         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8778         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8779         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8780         changes above.  Just passing arguments through to the right
8781         places.
8782
8783 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8784
8785         * mini-arm.c: unify the call emission to emit_code_seq().
8786
8787 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8788
8789         * tramp-arm.c: reduced the trampoline size.
8790
8791 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8792
8793         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8794         variable handling out of arch-specific code.
8795
8796 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8797
8798         * mini-arm.c: implemented fast delegate dispatch.
8799
8800 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8803         that fp elimination is turned off if the space required by locals is too
8804         big. Fixes #331958.
8805
8806 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8807
8808         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8809         ARM to the new style trampoline.
8810
8811 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8812
8813         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8814
8815         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8816
8817 2007-10-09  Martin Baulig  <martin@ximian.com>
8818
8819         * debug-debugger.h
8820         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8821         `field_info_offset_offset'.     
8822
8823 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8824
8825         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8826         removed more internal usage of the r11 register and made it available
8827         to the register allocator.
8828
8829 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8830
8831         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8832         when sharing generics and treat type variables as references.
8833
8834 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8835
8836         * mini-ppc.c: started removing the internal uses of register r11
8837         to eventually allow the register allocator to manage it as an
8838         additional available register.
8839
8840 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8841
8842         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8843
8844 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8845
8846         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8847         specific trampolines as they are not performance critical as a jump
8848         target (maybe align as before only for AOT code?). This saves about
8849         200 KB of native code on x86 for monodevelop startup.
8850
8851 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8852
8853         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8854         monodevelop startup.
8855
8856 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8857
8858         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8859
8860         * mini-sparc.h mini-sparc.c: Implement IMT support.
8861
8862         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8863         its smaller and doesn't clobber sparc_g1.
8864
8865         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8866
8867 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8868
8869         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8870
8871 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8872
8873         * mini-ppc.c: implemented fast delegate invocation.
8874
8875 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8876
8877         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8878
8879 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8880
8881         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8882         code to the new style trampoline in preparation for IMT support.
8883
8884 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8885
8886         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8887         systems already. This also reduces the specific trampiline sizes and
8888         prepares for the use of r12 as the IMT identifier register.
8889
8890 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8891
8892         * mini-mips.h: endianess fix (simplified from a patch by
8893         Thomas Kunze <thommy@tabao.de>, bug #323737).
8894
8895 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8896
8897         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8898         to access ucontext fields and enable netbsd support
8899         (partially from Magnus Henoch <mange@freemail.hu>).
8900
8901 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8902
8903         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
8904         use the preprocessor from the CPP env var if it is set.
8905
8906 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8907
8908         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8909         code, before interface_offset gets used.
8910
8911 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8914         mono_class_setup_vtable () before accessing klass->vtable.
8915
8916 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8917
8918         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8919         hackish.
8920
8921 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8922
8923         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8924         IMT slots (this saves hundreds of KB of memory in programs like
8925         IronPython and Monodevelop).
8926
8927 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8928
8929         * mini.c: print the delegate counter.
8930
8931 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8932
8933         * mini-x86.c: make it easier to enable the debugging code for IMT
8934         slots.
8935
8936 2007-09-28  Martin Baulig  <martin@ximian.com>
8937
8938         * debug-debugger.h
8939         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
8940         `mono_method_klass_offset' and `mono_method_token_offset'.
8941
8942 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8943
8944         * mini.c: First generics sharing implementation.  Can only share
8945         in very simple cases.  If sharing doesn't work it falls back to
8946         dedicated compilation.
8947
8948         * mini.h: Flag in MonoCompile to specify whether generic
8949         compilation is shared.  Flags enum for marking which generic inst
8950         of a context is used.  Prototypes for helper functions.
8951
8952         * generic-sharing.c: Helper functions for generic method sharing.
8953
8954         * optflags-def.h: Optimization flag (gshared) for enabling generic
8955         method sharing added.
8956
8957         * Makefile.am: generic-sharing.c added.
8958
8959 2007-09-19 Daniel Nauck <dna@mono-project.de>
8960
8961         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
8962
8963 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
8964         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
8965         fixes bug 325507.
8966
8967 2007-09-19  Martin Baulig  <martin@ximian.com>
8968
8969         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
8970         mono_debug_cleanup() is now part of mono_cleanup().
8971
8972 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * driver.c (mono_main): Fix a warning.
8975
8976 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * aot-compiler.c: Optimize various parts when processing large assemblies.
8979         Fixes ##325568.
8980
8981         * mini.c (mono_patch_info_hash): Improve hash function.
8982
8983 2007-09-14  Jonathan Chambers <joncham@gmail.com>
8984
8985         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
8986         
8987         Code is contributed under MIT/X11 license.
8988
8989 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * mini.c (mini_init): Fix a leak.
8992
8993         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
8994
8995 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
8996
8997         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
8998
8999 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9002
9003 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9006         variance tests.
9007
9008         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9009
9010         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9011
9012         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9013
9014         * aot-runtime.c (decode_patch_info): Ditto.
9015
9016 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9017
9018         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9019         static case. Cache delegates in architecture specific code, 
9020         based on number of parameters.
9021         
9022         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9023         in architecture specific code, based on number of parameters.
9024         
9025         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9026         caching happen in architecture specific code now.
9027         
9028         Code is contributed under MIT/X11 license.
9029
9030 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9031
9032         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9033         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9034         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9035
9036         Code is contributed under MIT/X11 license.
9037
9038 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9039         * mini.c: (mono_thread_abort) Fixed bug #82416.
9040
9041 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9042
9043         * mini.: hook the new managed GC allocation feature into the JIT.
9044
9045 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9046
9047         * mini.c: implementation for the new runtime tls opcode.
9048
9049 2007-09-11  Martin Baulig  <martin@ximian.com>
9050
9051         * debug-debugger.h
9052         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9053         `mono_method_inflated_offset'.
9054
9055 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9058         async exceptions into a method.
9059
9060         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9061         purpose of testing whenever the unwinder works at every instruction.
9062
9063 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9064
9065         * mini.c: check accessibility of method used in ldftn (fixes
9066         bug #82635).
9067
9068 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9071
9072         * inssel.brg: Fix a warning.
9073
9074 2007-09-03  Martin Baulig  <martin@ximian.com>
9075
9076         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9077         now takes the `main_method' as argument.
9078
9079 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9080
9081         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9082
9083 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9084
9085         * driver.c: include the cil-coff.h header on Windows.
9086         
9087         Code is contributed under MIT/X11 license.
9088
9089 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9090
9091         * mini.c, driver.c: don't include the cil-coff.h header.
9092
9093 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9094
9095         * mini.c: flag places that needs fixes fo soft-float support.
9096
9097 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9098
9099         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9100         endian systems (partially from Dean Jenkins, bug #81924).
9101
9102 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9103
9104         * mini.c (check_linkdemand): Remove embedded reference object in
9105         call to LinkDemandSecurityException.
9106         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9107         with an IntPtr instead of a reference object.
9108
9109 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * mini.c (handle_initobj): Handle alignment properly.
9112
9113         * inssel.brg (mini_emit_memset): Ditto. 
9114
9115         * inssel.brg (mini_emit_memcpy): Ditto. 
9116
9117         * inssel-sparc.brg: Ditto.              
9118
9119         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9120
9121 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9122
9123         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9124         exceptions raised in unmanaged code. Fixes part of #82594.
9125
9126 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9127
9128         * mini.c (mono_method_to_ir), declsec.c
9129         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9130
9131 2007-08-22  Martin Baulig  <martin@ximian.com>
9132
9133         * debug-mini.h
9134         (MonoDebuggerThreadInfo): New typedef.
9135         (mono_debugger_thread_table): New global variable.
9136         (mono_debugger_thread_created): New public function.
9137         (mono_debugger_thread_cleanup): New public function.
9138
9139         * debug-debugger.h
9140         (MonoDebuggerInfo):
9141         - removed `get_current_thread' and `lookup_assembly'.
9142         - removed `data_table'.
9143         - added `thread_table'.
9144
9145         * mini.c
9146         (mono_thread_start_cb): Call mono_debugger_thread_created().
9147         (mono_thread_attach_cb): Likewise.
9148         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9149         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9150         initial domain.
9151
9152         * driver.c (mono_main): Move mono_debug_init() up, before calling
9153         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9154
9155 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9156
9157         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9158         together when passing several arguments of type double (gives a small
9159         speedup and saves a few bytes of generated code).
9160
9161 2007-08-20  Jb Evain  <jbevain@novell.com>
9162
9163         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9164
9165 2007-08-20  Jb Evain  <jbevain@novell.com>
9166
9167         * mini.c (mono_method_to_ir): throw MethodAccessException
9168         and FieldAccessException instead of InvalidProgramException.
9169
9170 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9171
9172         * mini.c: CoreCLR security checks.
9173
9174         * mini.h: Removed MonoSecurityMode (moved to
9175         metadata/security-manager.h) and mono_security_mode global var
9176         (replaced by set/get functions in security-manager.h).
9177
9178         * driver.c: Added "core-clr-test" security mode for testing.  Used
9179         set-function for setting security mode.
9180
9181 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9182
9183         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9184         the new jit_info_table.
9185
9186         * driver.c: Test code for the new jit_info_table (enabled by the
9187         define MONO_JIT_INFO_TABLE_TEST).
9188
9189 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9190
9191         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9192         detection of call <REG> instruction sequence. Fixes build on freebsd.
9193
9194 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9195
9196         * mini-exceptions.c: Fix a warning.
9197
9198 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9201         stack overflow handling code on amd64 too.
9202
9203         * mini-exceptions.c (mono_setup_altstack): Make this use 
9204         mono_thread_get_stack_bounds ().
9205
9206         * mini-x86.h: Disable sigaltstack on solaris x86.
9207
9208 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9211
9212 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9213
9214         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9215
9216 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9219
9220         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9221
9222 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9223
9224         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9225         due to alignment.
9226
9227 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9228
9229         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9230         to be emitted (bug #82281).
9231
9232 2007-08-01  Martin Baulig  <martin@ximian.com>
9233
9234         Merged the `debugger-dublin' branch.
9235
9236         * debug-debugger.h (MonoDebuggerInfo):
9237         Removed the `old_*' compatibility entries.
9238         Added `debugger_version' and `data_table'.
9239         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9240         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9241
9242         * debug-mini.c
9243         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9244         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9245         instead of a `gconstpointer'.
9246         (mono_debugger_insert_method_breakpoint): Return a
9247         `MonoDebugMethodAddressList *'.
9248
9249 2007-06-28  Martin Baulig  <martin@ximian.com>
9250
9251         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9252
9253 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9256         __builtin_frame_address () since it is broken on older gcc versions.
9257
9258 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9259
9260         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9261         on the stack overflow handling and made the managed stack overflows
9262         catchable in most cases using soft guard pages.
9263         * exceptions-x86.c: added code to restore the protection in the soft
9264         guard pages at the end of exception handling.
9265
9266 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9267
9268         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9269
9270 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9271
9272         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9273         exception handling.
9274
9275 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9276
9277         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9278         signal handling support until it has been ported to the new mechanism.
9279         * mini.c: fixed stack overflow detection and use the new
9280         architecture code  to handle signals on the altstack.
9281
9282 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9283
9284         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9285         stack overflows on the alt stack.
9286
9287 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9288
9289         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9290         stack overflows on the alt stack.
9291
9292 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9293
9294         * exceptions-ppc.c: cleanup preparing for altstack support.
9295
9296 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9297
9298         * exceptions-arm.c: cleanup preparing for altstack support.
9299
9300 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9301
9302         * mini.c (print_jit_stats): Output hazard pointer stats.
9303
9304 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9305
9306         * driver.c, mini.c: Replaced security mode flags with a single
9307         enum variable.
9308
9309 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9310
9311         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9312
9313 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9314
9315         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9316         (which doesn't do anything yet) for activating Core CLR
9317         (Silverlight) security.
9318
9319 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9320
9321         * mini-codegen.c: work around a possible gcc bug on arm.
9322
9323 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9324
9325         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9326         message for platforms that don't support AOT compilation.
9327
9328 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9329
9330         * mini.h, mini.c, driver.c: temporary smcs hack.
9331
9332 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9333
9334         * mini-arm.h, mini-arm.c: arm EABI fixes.
9335
9336 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9337
9338         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9339         case.
9340
9341         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9342         trampolines taking a method argument.
9343
9344         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9345
9346         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9347         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9348
9349         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9350         JIT compilation throws an exception. Fixes #82050.
9351
9352 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9353
9354         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9355         with the MONO_EXCEPTION_ defines.
9356
9357 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9358
9359         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9360         #82117.
9361         
9362         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9363         the cause of an assertion.
9364
9365 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9366
9367         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9368         removed.
9369
9370 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9371
9372         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9373         assert. Should fix #82103.
9374
9375 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9376
9377         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9378         here too. Fixes #82095.
9379
9380         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9381         addresses.
9382
9383         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9384
9385         * mini-amd64.h: Enable IMT for amd64.
9386         
9387         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9388
9389 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9392
9393 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9394
9395         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9396         as soon as check_linkdemand sets an exception_type.
9397
9398 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9399
9400         * mini-x86.c: fixed offsets for IMT call sequence.
9401         * mini-x86.h: enable IMT again.
9402
9403 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * trace.c (mono_trace_enter_method): Decode MonoType too.
9406
9407         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9408
9409         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9410
9411         * mini-amd64.c: Add preliminary IMT implementation.
9412         
9413 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9414
9415         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9416         understand the new IMT-base interface invocation (thanks to
9417         Daniel Nauck for the report and the remote debugging session).
9418
9419 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9420
9421         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9422
9423 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9424
9425         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9426
9427 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9428
9429         * mini-trampolines.c: implement AOT IMT support.
9430         * mini-x86.h: enable IMT support for wider testing.
9431
9432 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * inssel.brg (emit_imt_argument): Add aot support here.
9435
9436         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9437
9438 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9439
9440         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9441         of the IMT implementation, partially from massi, with my
9442         implementation of the bsearch sequence. Disabled by default until
9443         the AOT code is implemented.
9444
9445 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9446
9447         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9448
9449         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9450
9451 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9452
9453         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9454         arch-independent IMT JIT code from Massimiliano
9455         Mantione (massi@ximian.com) with small cleanups from me.
9456
9457 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9458
9459         * Makefile.am: fix svn invocation to get the svn revision to be
9460         independent of the local language (build fix).
9461
9462 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9463
9464         * mini.c (inline_method): Reset cfg->exception_type if the
9465         inlining is aborted.  Fixes: 82049.
9466
9467 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9468
9469         * mini.c: remove assert from exception handling code when exception_ptr
9470         is not set.
9471
9472 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * mini.c (mono_codegen): Add an assert.
9475
9476         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9477         enter and leave code.
9478         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9479
9480 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9481
9482         * mini-ppc.c: fixed memory corruption for localloc(0)
9483         (bug #81852).
9484
9485 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9486         
9487         * mini.c: Fix warnings.
9488
9489 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9490
9491         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9492         to emit better double->int conversions.
9493
9494 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9495
9496         * mini.c: the provided Min/Max optimizations are valid for unisgned
9497         ints.
9498
9499 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9500
9501         * 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
9502
9503 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9504
9505         * mini.c (mono_running_on_valgrind): Add support for reporting the
9506         method and  its boundaries to valgrind.
9507
9508 2007-06-28  Martin Baulig  <martin@ximian.com>
9509
9510         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9511
9512 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9515
9516         * generic.2.cs: Add new test case.
9517
9518 2007-06-25  Martin Baulig  <martin@ximian.com>
9519
9520         Merged the `debugger-dublin' branch.
9521
9522         * debug-mini.c
9523         (mono_debugger_insert_method_breakpoint): New public method.
9524         (mono_debugger_remove_method_breakpoint): Likewise.
9525         (mono_debugger_check_breakpoints): New static method.
9526         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9527
9528         * debug-debugger.h (MonoDebuggerInfo):
9529         Renamed (to keep backward compatibility in the vtable):
9530         `insert_breakpoint' -> `old_insert_breakpoint'.
9531         `remove_breakpoint' -> `old_remove_breakpoint'.
9532         `create_string' -> `old_create_string'.
9533         `lookup_class' -> `old_lookup_class'.
9534         `lookup_type' -> removed; changed into a dummy field.
9535         `lookup_assembly' -> `old_lookup_assembly'.
9536         Added (same functionality, but different signature):
9537         `create_string', `lookup_class', `lookup_assembly'
9538         Added new:
9539         `get_method_addr_or_bpt', `remove_method_breakpoint',
9540         `runtime_class_init'.
9541
9542         * debug-debugger.c: Merged the `debugger-dublin' branch.
9543
9544 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9545
9546         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9547         well.
9548         (peephole_pass): Likewise.
9549
9550 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9551
9552         * driver.c: hopefully make setaffinity work also for ancient
9553         versions of linux.
9554
9555 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9556
9557         * driver.c : win32 build fix.
9558
9559 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9560
9561         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9562         processor if it is set.
9563
9564 2007-06-21  Martin Baulig  <martin@ximian.com>
9565
9566         * debug-mini.h: New file.
9567
9568         * debug-mini.c
9569         (mono_debugger_insert_breakpoint_full): Moved here from
9570         ../metadata/mono-debug-debugger.c.
9571         (mono_debugger_remove_breakpoint): Likewise.
9572         (mono_debugger_breakpoint_callback): Likewise.
9573
9574 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9575
9576         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9577         changes in MonoGenericClass.
9578
9579 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9582
9583 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9584
9585         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9586         removal of MonoGenericMethod.
9587
9588 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9589
9590         * mini-exceptions.c: hooks for the exception events profiling API.
9591
9592 2007-06-14  Randolph Chung  <tausq@debian.org>
9593
9594         * Makefile.ma: Add hppa target.
9595         * mini-arch.h: Include mini-hppa.h
9596         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9597         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9598         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9599
9600 2007-06-14  Randolph Chung  <tausq@debian.org>
9601
9602         * inssel.brg: Add rules for "chained" compare-branch operations so that
9603         a single compare op can affect multiple branches.  Adjust cost for
9604         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9605         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9606         cost for some rules so that they can more easily be overridden by
9607         per-arch rules (with fixes from lupus).
9608         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9609
9610 2007-06-13  Randolph Chung  <tausq@debian.org>
9611
9612         * mini-ops.h: Reorder branch ops so that they match the order of the
9613         corresponding CEE_* ops.  The code expects them this way.
9614         Add new ops for HPPA target.
9615         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9616
9617 2007-06-13  Randolph Chung  <tausq@debian.org>
9618
9619         * mini-exceptions.c: Handle cases where the stack grows towards
9620         larger addresses.
9621         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9622
9623 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9624
9625         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9626         counter.
9627         * driver.c: explain where a non-matching corlib is found.
9628
9629 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9630
9631         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9632
9633 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9634
9635         * mini-exceptions.c: Generate a method profile leave event during
9636         an exception to ensure that the profiler gets notified.
9637
9638 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9641         branch.
9642
9643         * cpu-amd64.md: Add long_and/or/xor opcodes.
9644
9645 2007-06-06  Wade Berrier  <wberrier@novell.com>
9646
9647         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9648         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9649         length of instruction shr_imm (expected 8, got 10)
9650
9651 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9652
9653         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9654
9655 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9656
9657         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9658         MonoInternalHashTable again (fixed bug in the internal hash table
9659         code).
9660
9661 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9662
9663         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9664         Have to figure out what makes it crash the SWF regression.
9665
9666 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9669
9670 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9671
9672         * mini.c: optimize out the type check when storing null in a
9673         reference array.
9674
9675 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9676
9677         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9678         MonoInternalHashTable.
9679
9680 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9681
9682         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9683         signed integer methods.
9684
9685 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9686
9687         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9688         permanently since the current approach doesn't work.
9689
9690 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9691
9692         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9693         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9694
9695 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9696
9697         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9698         the sreg2==rdx case.
9699         
9700         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9701         account if it contains a rex prefix.
9702         (peephole_pass): Handle OP_FMOVE as well.
9703
9704 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9707         as it causes regressions.
9708
9709 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9712         static case as well.
9713
9714         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9715
9716         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9717         (mono_arch_get_this_arg_from_call): Ditto.
9718
9719         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9720
9721         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9722         invoke_impl field.
9723
9724         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9725         (mono_arch_get_this_arg_from_call): Ditto.
9726
9727         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9728         
9729         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9730         try to create optimized invoke code and use that for further invocations. 
9731         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9732
9733         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9734
9735 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9736
9737         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9738         sealed classes or methods.
9739         *devirtualization.cs: tests for the new optimization
9740
9741 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9744         by the update_volatile () function.
9745
9746 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9749         require it.
9750
9751         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9752
9753 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9754
9755         * mini.c: Add configure checks for header files.
9756         * mini-x86.c: Add configure checks for header files.
9757         * trace.c: Add configure checks for header files.
9758         * aot-runtime.c: Add configure checks for header files.
9759         * aot-compiler.c: Add configure checks for header files.
9760         * driver.c: Add configure checks for header files.
9761         * mini-codegen.c: Add configure checks for header files.
9762         
9763         Code is contributed under MIT/X11 license.
9764
9765 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9766
9767         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9768         icompare_imm -128 + op_iclt. Fixes #81703.
9769
9770 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9771
9772         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9773
9774 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9775
9776         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9777         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9778         so that all isinst checks now use "interface_bitmap".
9779
9780 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * cpu-amd64.md (jmp): Fix a warning.
9783
9784         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9785
9786         * basic.cs: Add new regression test.
9787
9788         * basic.cs: Remove test which is now in basic-long.cs.
9789
9790         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9791
9792         * basic-long.cs: Add new test.
9793         
9794 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9797
9798 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9801
9802         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9803         places.
9804         
9805         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9806         throwing code a bit.
9807
9808         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9809         the exception throwing code a bit.
9810
9811         * mini-x86.c (get_call_info): Allocate result from a mempool.
9812
9813 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9814
9815         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9816
9817         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9818
9819         * mini.h (MonoCompile): Add 'token_info_hash' field.
9820
9821         * mini.c: Save token->method associations during compilation so the AOT 
9822         compiler can use it.
9823         
9824         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9825         which reference generic classes and methods.
9826
9827 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9830
9831         * aot-compiler.c (compile_method): Fix a typo in a comment.
9832
9833         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9834
9835         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9836         everything generic.
9837
9838         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9839
9840 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * mini.h (MonoCompile): Add 'args' field.
9843
9844         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9845         into cfg->args.
9846
9847         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9848
9849 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9852
9853         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9854
9855         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9856         opcodes for some opcodes.
9857
9858         * mini.h *.brg *.c: Use the new opcodes.
9859
9860 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9861
9862         * mini.h: Bumped aot revision.
9863
9864         * inssel.brg: modified code generation of type checks for interfaces
9865         to use the new "MonoClass.interface_bitmap" instead of the old
9866         "MonoClass.interface_offsets".
9867
9868 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9871
9872 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9873
9874         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9875         64 bit platforms.
9876
9877 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9878
9879         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9880
9881 2007-04-27  Wade Berrier  <wberrier@novell.com>
9882
9883         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9884         mini.h) to fix build.
9885
9886 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9887
9888         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9889         
9890         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9891         causes the corlib unit tests to fail.
9892
9893 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9894
9895         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9896
9897         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9898
9899         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9900         opcodes to the comparison relations.
9901
9902         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
9903         opcodes to their types.
9904         
9905         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9906
9907         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9908         it in cfg->arch.cinfo.
9909
9910         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9911
9912         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9913         cfg->cil_offset_to_bb.
9914
9915 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9916
9917         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9918         created becase of initlocals.
9919
9920 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9921
9922         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9923         Sergey Tikhonov <tsv@solvo.ru>.
9924
9925 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9926
9927         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9928
9929 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * cpu-s390.md (break): Correct the length of break instruction.
9932
9933 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9934
9935         * mini.c: fix a couple of soft-float issues and comments.
9936
9937 2007-04-15  Miguel de Icaza  <miguel@novell.com>
9938
9939         * trace.c (is_filenamechar): - is also a filename char.
9940
9941 2007-04-15  Neale Ferguson <neale@sinenomine.net>
9942
9943         * mini-s390.c: Correct checking for enum type in return value processing.
9944
9945 2007-04-14  Raja R Harinath  <rharinath@novell.com>
9946
9947         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
9948         (version.h): Makefile is in the build directory.
9949
9950 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
9951
9952         * mini-amd64.h: fix for assertion failure on Solaris/amd64
9953
9954 2007-04-11  Martin Baulig  <martin@ximian.com>
9955
9956         * mini.c (can_access_member): Fix handling of generic classes;
9957         fixes #81259.
9958
9959 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
9960
9961         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
9962
9963 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
9966
9967 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9968
9969         * mini-codegen.c: make sure the right spill amount is
9970         used for fp or integer registers (fixes the float_sub_spill() on ppc).
9971
9972 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
9973
9974         * mini-ppc.c: fixes for the fp_branch_nan test.
9975
9976 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * basic.cs: Comment out new test which still fails on ia64.
9979
9980 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9981
9982         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
9983
9984 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9985
9986         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
9987
9988 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
9991         on 64 bit machines. Fixes part of #80738.
9992
9993         * basic.cs: Add regression test.
9994
9995 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * inssel.brg basic.cs: Revert previous change to fix build.
9998
9999         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10000         platforms.
10001         
10002         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10003
10004         * basic.cs: Add new regression test.
10005
10006 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10007
10008         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10009         many arguments.
10010
10011 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10012
10013         * cpu-s390x.md: Correct length of break instruction.
10014
10015 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10016
10017         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10018         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10019
10020 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10021
10022         * *.c: Begin WIN64 port.
10023         * mini.c:  Use correct register in profiler.
10024         * mini-amd64.c: No inline assembly on Win64.
10025         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10026         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10027         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10028         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10029         mono_arch_ip_from_context for Win64.
10030         
10031         Contributed under MIT/X11 license.
10032
10033 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10034
10035         * exceptions-amd64.c (seh_handler): Ditto.
10036
10037         * exceptions-x86.c (seh_handler): Fix a memory leak.
10038
10039 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10040
10041         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10042         mini-s390x.c: fixed peephole optimizations to deal
10043         correctly with 1 and 2 byte reload avoidance.
10044
10045 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10046
10047         * cpu-s390.md, cpu-s390x.md: update localloc length.
10048
10049 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10050
10051         * cpu-g4.md: added missing descriptions.
10052
10053 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10054
10055         *  Makefile.am: Add support so the tail tests are not executed on
10056         PowerPC as that is a known limitation of the PowerPC port.
10057
10058 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10059
10060         * runmdesc.bat:  Move to msvc directory.
10061         
10062 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10063
10064         * runmdesc.bat:  Run executable that was produced by the current
10065         target and sent via an argument.
10066         
10067 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10068
10069         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10070         #81102.
10071
10072         * generics.2.cs: Add regression test.
10073
10074 2007-03-09  Wade berrier  <wberrier@novell.com>
10075
10076         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10077
10078 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10081         AOT code depends on this.
10082
10083 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * mini.c: more precise tracking of types in the eval stack
10086         (part of fix for bug #81044).
10087
10088 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10091
10092         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10093
10094 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10097
10098         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10099
10100 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10103         a pointer on 64 bit systems. Fixes #80190.
10104
10105         * iltests.il: Add new regression test.
10106
10107 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10108
10109         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10110
10111 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10112
10113         * trace.c: Remove an erroneous alignemnt check when tracing.
10114           Fixes --trace on OSX86.
10115
10116 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10117
10118         * mini-$(arch).h: initialize SP in context for all the archs.
10119
10120 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10121
10122         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10123         regressions in the thread tests.
10124
10125 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10128         - fixed implementation of LOCALLOC opcode
10129         - implemented non-un compare for floats
10130         - code cleanup
10131         - implementation of FDIV and CKFINITE opcodes
10132         - fixes for latest mono updates
10133         - additional arch opcodes
10134
10135 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10136
10137         * Makefile.am: simplify and merge rules for cross-compilation.
10138
10139 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10140
10141         * local-propagation.c: Actually *apply* the fix for bug 80591...
10142
10143 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10144
10145         * mini-exceptions.c: backuot part of the last change
10146         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10147
10148 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10149         * inssel.brg: Fix bug 59286.
10150
10151
10152 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10153
10154         * mini-exceptions.c: patch from Zoltan to correctly check for
10155         stack boundaries (using the stack register, not the frame register),
10156         fixes bugs #80724, #79717.
10157
10158 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10159
10160         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10161         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10162
10163         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10164         presence of frame pointer elimination.
10165
10166 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10167         
10168         * mini-x86.h: NetBSD UCONTEX_REG defines.
10169
10170 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10171
10172         * inssel-amd64.brg: Fix amd64 build.
10173
10174 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10175
10176         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10177         on amd64.
10178
10179 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10180
10181         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10182         ends.
10183
10184         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10185
10186 2007-01-30 Mark Mason <mason@broadcom.com>
10187
10188            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10189            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10190            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10191            beginning support for CEE_JMP [not quite working yet]
10192            * tramp-mips.c: LMF handling now works
10193         
10194 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10197
10198         * mini.h (NULLIFY_INS): New macro.
10199
10200 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10201
10202         * mini.c: statistical profiler fix for windows, patch
10203         from Tor Lillqvist (tml@novell.com).
10204
10205 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10206         * local-propagation.c: Fix bug 80591.
10207
10208 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10209
10210         * Makefile.am: put back the --export-dynamic option as with
10211         the previous gmodule flags (thanks to Robert Jordan).
10212
10213 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10214
10215         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10216
10217         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10218         simplify and speed up the local register allocator. Also rename some fields
10219         like iassign->vassign.
10220         
10221         * regalloc.c: Remove some functions which are no longer used since their
10222         inlined version is in mini-codegen.c.
10223         
10224         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10225
10226         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10227
10228 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10231         narrowing. Fixes #80622.
10232
10233         * iltests.il: Add new regresssion test. 
10234
10235 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10236
10237         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10238         debug-debugger.c, debug-debugger.h: warning fixes.
10239         * driver.c: updated copyright year and made it fit in one line.
10240
10241 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10242
10243         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10244
10245 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10248
10249         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10250
10251         * iltests.il: Add new test for bug #80507.
10252
10253 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10254
10255         * mini-arm.h: use soft-float also on vfp for now.
10256
10257 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10258
10259         * mini.c: fix some more soft-float issues.
10260
10261 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10262
10263         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10264
10265 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10266         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10267         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10268         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10269
10270 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10271
10272         * mini-arm.c: typo fix.
10273
10274 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10275
10276         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10277
10278 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10281         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10282
10283         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10284
10285         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10286
10287         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10288         
10289         * inssel.brg: Fix a warning.
10290
10291         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10292
10293         * abcremoval.c ssa.c ssapre.c: Update after this change.
10294         
10295         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10296
10297         * dominators.c (df_set): Use mono_bitset_union_fast.    
10298
10299 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10300
10301         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10302         mini-codegen.c: reduce relocations and memory usage for the cpu
10303         description.
10304
10305 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10308
10309         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10310         to reduce their size.
10311
10312 2007-01-19 Mark Mason <mason@broadcom.com>
10313
10314         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10315         * mini-mips.c: more configuration macros, support long conditional branches, additional
10316         asserts, fix epilog instrumentation.
10317         * mini-mips.h: use standard stack walk
10318         * cpu-mips.md: increase size of div, rem and conditional branches
10319         
10320 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10321
10322         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10323         to cpu spec data.
10324
10325 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10326
10327         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10328         (compile_method): Ditto.
10329
10330         * aot-runtime.c (decode_klass_info): Ditto.
10331
10332         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10333         needed by the code generated by inssel.brg. Also fix a warning.
10334
10335 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10336
10337         * mini.c: deal with enums that become genericinsts by
10338         being nested in a generic class (bug #79956).
10339
10340 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10341
10342         * mini.c: match the generic definition to check for
10343         private access with generic types (bug #78431).
10344
10345 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10346
10347         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10348         to make life easier for people cross-compiling that insist on not
10349         using scratchbox.
10350
10351 2007-01-17 Mark Mason <mason@broadcom.com>
10352
10353         * inssel-long.brg: patch to deal with mips missing flags
10354         * inssel-long32-mips.brg: implement overflow checks
10355         * insset-mips.brg: implement overflow checks
10356         * mini-mips.h: implement conditional exception handling
10357         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10358           Remove unused code, minor cleanups.
10359         * exceptions-mips.c: minor cleanups
10360         * mini-ops.h: add mips conditional exception ops
10361         * cpu-mips.md: add mips conditional exception ops
10362
10363         
10364 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10365
10366         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10367         to deal with mips missing of flags.
10368
10369 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10370
10371         * exceptions-ppc.c: execute fault handlers.
10372
10373 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10374
10375         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10376
10377 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10378
10379         * mini.c: handle also floating point values in initialize_array.
10380
10381 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10382
10383         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10384         array initialization and make it conditional on the intrins option.
10385
10386 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10387
10388         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10389         relocations and put the patch info names close to the enum definition.
10390
10391 2007-01-15 Mark Mason <mason@broadcom.com>
10392
10393         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10394
10395 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10396
10397         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10398
10399 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10400
10401         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10402
10403 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10404
10405         * Makefile.am: distribute the mips sources.
10406
10407 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10408
10409         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10410         directly.
10411
10412 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10413
10414         * cpu-x86.md: back out for now as this triggers other regressions.
10415
10416 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10417
10418         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10419         to eax:edx, so ecx can't get allocated to them (bug #80489).
10420
10421 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10422
10423         * mini.c, mini-exceptions.c: enabled running fault handlers
10424         (bug #80469).
10425
10426 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10427
10428         * driver.c: If nothing fail, do not use the string "failed",
10429         because it makes it very annoying to view test result logs on the
10430         web. 
10431
10432 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10433
10434         * debug-debugger.c (mono_debugger_main): Rename "main" to
10435         "main_method" to prevent a warning.
10436
10437         Remove a warning for unused field.
10438
10439 2006-12-28  Martin Baulig  <martin@ximian.com>
10440
10441         * debug-debugger.c
10442         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10443
10444 2006-12-22  Martin Baulig  <martin@ximian.com>
10445
10446         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10447         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10448         seperate `.mdb_debug_info' section, so we can access it from the
10449         debugger even if the binary is stripped.
10450
10451         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10452         from the `.mdb_debug_info' here to prevent the linker from
10453         removing that section.
10454
10455         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10456         mdb-debug-info64.s.
10457
10458 2006-12-19  Robert Jordan  <robertj@gmx.net>
10459
10460         * mini-x86: enable the code to return small structures in
10461         registers for FreeBSD as well. Fixes bug #80278.
10462         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10463
10464 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10465
10466         * mini-x86.c: align the stack when calling the profiler
10467         function instrumenting the prolog (on OSX).
10468
10469 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10470
10471         * mini.c: emit a break opcode where Debugger.Break () is called.
10472
10473 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10474
10475         * mini.c (mono_method_to_ir): Provide useful information on this
10476         assert, to prevent others from debugging like I did.
10477
10478 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10479
10480         * mini.c: enable code which was incorrectly commented
10481         (bug #80235).
10482
10483 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10484
10485         * mini-x86.c: enable on OSX, too, the code to return small
10486         structures in registers.
10487
10488 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10489
10490         * mini-x86.c: remove the use of the dynamic code manager here, too.
10491
10492 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10493
10494         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10495         mono_debugger_create_notification_function() to use
10496         mono_global_codeman_reserve () instead of a dynamic code manager.
10497
10498 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10499
10500         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10501         ves_array_element_address() jit icall and use a generated
10502         managed method instead (which is about 4 times faster for a rank 3
10503         array access).
10504
10505 2006-11-29  Mark Mason  <mason@broadcom.com>
10506
10507         * basic-calls.cs: additional tests for passing
10508         structures as function arguments.
10509
10510 2006-11-29  Mark Mason  <mason@broadcom.com>
10511
10512         * mini-mips.h: disable custom exception handling
10513         * mini-mips.c: throw/rethrow should use jalr to call
10514         exception stubs.  Fixed bug with passing structures
10515         by value. More support for tracing floating point
10516         functions.
10517
10518 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10519
10520         * mini.c: fixed typo in the soft-float ldind.r4 handling
10521         (bug #80086).
10522
10523 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10524
10525         * mini.c, mini.h, driver.c: added --runtime command line
10526         option to select a different runtime than the autodetected one.
10527         * jit.h: added API for embedders to initialize with a specific
10528         runtime version.
10529
10530 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10531
10532         * mini.c: handle also boxing of r4 values (bug #80024).
10533
10534 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10535
10536         * mini-ppc.c: force indirect calls until we reserve
10537         enough address space for all the generated code.
10538
10539 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10540
10541         * exceptions-arm.c: workaround bugs in the libc definition
10542         of struct ucontext.
10543
10544 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10545
10546         * inssel.brg: fixes from me and Mark Mason.
10547
10548 2006-11-23  Dick Porter  <dick@ximian.com>
10549
10550         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10551         semaphore display now we've fixed the initial value
10552
10553 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10554
10555         * inssel.brg: partially revert the last change to fix the build.
10556
10557 2006-11-21  Mark Mason  <mason@broadcom.com>
10558
10559         * inssel.brg: Add and use compare-and-branch macros to support
10560         architectures that do not have condition code registers (ie. MIPS).
10561         * *-mips.{c,brg,md}: Fix copyright statements
10562
10563 2006-11-20  Mark Mason  <mason@broadcom.com>
10564
10565         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10566         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10567         * mini.h: Added declaration for mono_print_ins()
10568         * mini-codegen.c: added ins_spec initializer for MIPS
10569         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10570         vreg to be virtual and hreg to be non-virtual.
10571         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10572         is not yet working/implemented correctly.
10573         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10574         non-static, fixup calls to print_ins() from other parts in the file.
10575
10576 2006-11-20  Mark Mason  <mason@broadcom.com>
10577
10578         * basic-calls.cs: added tests for passing structures as arguments
10579         to calls.
10580
10581 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10582
10583         * inssel-long32.brg: optimize signed division by power of two.
10584
10585 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10586
10587         * mini-arm.c: added support for interworking with thumb code
10588         (mono must be still be built using the ARM instruction encoding).
10589
10590 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10591
10592         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10593         verifier has different rules for it.   Fixes a few verifier issues
10594         in the test suite.
10595
10596         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10597         at the end, so people know what happened.
10598
10599 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10600
10601         * brach-opts.c: in optimize_exception_target() make sure we
10602         are in a catch clause (fixes bug #79871).
10603
10604 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10605
10606         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10607         more soft-float support fixes.
10608
10609 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10610
10611         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10612         that are passed half on the stack and half in registers.
10613
10614 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10615
10616         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10617         more mips integration work from Mark E Mason 
10618         <mark.e.mason@broadcom.com>.
10619
10620 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10621
10622         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10623         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10624         tramp-mips.c: added sources for the mips port, not
10625         integrated in the build yet. Contributed by
10626         Mark E Mason <mark.e.mason@broadcom.com>.
10627
10628 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10629
10630         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10631
10632 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10633
10634         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10635         put the soft-float rules in its own file since it seems to
10636         break s390 compilation.
10637
10638 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10639
10640         * mini-arm.c: fixed wrnings.
10641
10642 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10643
10644         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10645         inssel-arm.brg: ARM support for soft-float.
10646
10647 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10648
10649         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10650         loads and stores of 32 bit fp values.
10651
10652 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10655
10656         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10657         works. Fixes #79852 and #79463.
10658
10659 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10660
10661         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10662         more soft-float support WIP and fixes.
10663
10664 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10665
10666         * mini-arm.c: some VFP updates.
10667
10668 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10669
10670         * mini-exceptions.c: 0 is a valid local var offset in some
10671         architectures, don't assert (bug #78508).
10672
10673 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10674
10675         * exceptions-arm.c: fixed off by one error in stack walk code.
10676
10677 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10678
10679         * mini.h, mini.c: more precise tracking of type load exceptions.
10680
10681 2006-11-03  Robert Jordan  <robertj@gmx.net>
10682
10683         * Makefile.am: [WIN32] Add monow.exe target.
10684         * driver.c: [WIN32] Don't detach the console when debugging.
10685         Fixes bug #79797.
10686         
10687 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10688
10689         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10690
10691 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10692
10693         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10694
10695         * driver.c (mini_regression): Fix --regression with AOT.
10696
10697         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10698
10699 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10700
10701         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10702
10703         * mini-sparc.h: Don't use sigaction on sparc/linux.
10704
10705         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10706
10707         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10708
10709         * mini-exceptions.c: Add proper include files for getpid ().
10710
10711 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10712
10713         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10714         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10715         method.
10716
10717         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10718         name cache to reduce its size.
10719
10720         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10721
10722 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10725         the mono_lmf TLS variable.
10726
10727         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10728         trampoline lmf frames.  
10729
10730         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10731
10732 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10733
10734         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10735         the mono_lmf TLS variable.
10736
10737         * mini-exceptions.c: Access the LMF structure through accessors.
10738
10739         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10740         variable instead of in jit_tls->lmf.
10741
10742         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10743         
10744         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10745         trampoline lmf frames.
10746
10747         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10748
10749 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10750
10751        * mini.c trace.c mini-x86.c: Revert these too.
10752         
10753        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10754        signature change.
10755
10756 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10757
10758         * genmdesc.c: removed now dead code.
10759
10760 2006-10-09  Robert Jordan <robertj@gmx.net>
10761
10762         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10763
10764 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10765
10766         * mini.h: do not leave gaps in the opcode values.
10767
10768 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10769
10770         * jit-icalls.h: flag functions as internal here, too.
10771
10772 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10773
10774         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10775         functions with the internal attribute.
10776
10777 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10778
10779         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10780
10781 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10782
10783         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10784         for soft-float.
10785
10786 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10787
10788         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10789         tail calls as on other platforms.
10790
10791         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10792
10793         * iltests.il: Add a few tailcall tests.
10794
10795 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10796
10797         * driver.c: fix loop for old compilers (bug #79521).
10798
10799 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10800
10801         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10802
10803         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10804
10805         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10806         metadata without any code.
10807
10808         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10809         more precise debugging information using gdb.
10810
10811 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10812
10813         * inssel-ia64.brg: Make the helper methods static.
10814
10815 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10816
10817         * inssel-x86.brg: make the helper methods static.
10818
10819 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10820
10821         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10822
10823 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10824
10825         * mini.c: updates for monoburg changes.
10826         * inssel.brg: make a few helper functions static as they should.
10827
10828 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10829
10830         * Makefile.am: Move mini-codegen.c to common_sources.
10831
10832 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10833
10834         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10835         instructions.
10836         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10837         mini-ppc.h: port to use the common local register allocator.
10838
10839 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10840
10841         * mini.h: Remove the comment too then.
10842
10843 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10844
10845         * mini.h: put back backend.data which is to be used shortly and
10846         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10847         pointers on 4 byte boundaries it'd have much bigger issues running
10848         and you can ifdef it out anyway.
10849
10850 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10851
10852         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10853         MonoInst size by 4 bytes on 64 bit machines.
10854
10855 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10856
10857         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10858         replacement with more meaningful field names. Arch maintainers, please
10859         check the assigned names are good enough for your arch.
10860
10861 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10862
10863         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10864         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10865
10866 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10867
10868         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10869         relocations and memory requirements, put the optimization flags
10870         definitions in their own file.
10871
10872 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10873
10874         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10875
10876         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10877
10878 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10881
10882 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10883
10884         * inssel.brg: use the correct function to get the size of an item
10885         in an array, given an element class.
10886         * aot-compiler.c: do not access class->class_size directly.
10887
10888 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10889
10890         * mini.h, debug-mini.c: added a debugging function to print
10891         info about local variables and arguments in a jitted method.
10892
10893 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10894
10895         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10896
10897         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10898
10899 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10900
10901         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
10902         inner and outer loops when passing vtypes.
10903
10904 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10905
10906         * mini-ppc.c: take into account the cpu errata for cache flushing
10907         which caused some random errors (bug #79381).
10908
10909 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10912         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10913
10914 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10915
10916         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10917         loaded.
10918
10919         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10920         freebsd ports tree.
10921
10922         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10923         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10924
10925         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10926         displacement.
10927
10928 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10931
10932 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
10935         macro does not have to be changed during debugging.
10936
10937         * 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>.
10938
10939         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
10940
10941         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
10942         
10943         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
10944         MONO_ARCH_NO_EMULATE_MUL is defined.
10945
10946         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
10947
10948         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
10949
10950         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
10951
10952         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
10953         
10954 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10955
10956         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
10957         stuff to mini-exceptions.c where it is used.
10958
10959         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
10960         setup code, the real one is in mini-exceptions.c.
10961
10962         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
10963         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
10964         some changes from the freebsd ports tree.
10965
10966         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
10967         constants.
10968         
10969         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
10970
10971 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
10972
10973         * mini.c: on Linux, check for /proc to be mounted
10974         (bug# 79351, novell bug#201204).
10975
10976 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10977
10978         * mini.c: handle cases where pthread_attr_getstack() behaves
10979         incorrectly (bug #78096).
10980
10981 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
10982
10983         * mini-arm.c: support larger stack frames (bug #79272).
10984
10985 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
10986
10987         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
10988
10989         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
10990         tokens.
10991
10992         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
10993         mono_class_from_name () to find a class from its name.
10994
10995         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
10996
10997 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11000
11001 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
11002
11003         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11004
11005 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11006
11007         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11008         callinfo->trampoline.
11009
11010         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11011         fixes #79271.
11012         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11013         future.
11014
11015 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11018
11019 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11020
11021         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11022         stats.method_trampolines, it is already done by the generic trampoline code.
11023
11024         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11025         
11026 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11029
11030         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11031
11032         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11033
11034         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11035         
11036         * mini.c (print_jit_stats): Print new stats.
11037
11038         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11039
11040 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11041
11042         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11043         Address on two dimensional arrays. Fixes #78729.
11044
11045         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11046
11047         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11048         a method.
11049
11050         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11051
11052         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11053         #79130.
11054         
11055         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11056         a race condition.
11057         (mini_get_ldelema_ins): Ditto.
11058
11059 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11062         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11063         Fixes #79213.
11064
11065 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11066
11067         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11068         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11069
11070         * exceptions-s390x.c: Cosmetic change.
11071
11072         * tramp-s390.c: Fix warning.
11073
11074         * cpu-s390.md: Correct length of mul_imm.
11075
11076 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11077
11078         * aot-compiler.c: added binary writer with ELF backend
11079         implementation (only on Linux/x86 for now).
11080
11081 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11082
11083         * Makefile.am: Don't run net 2.0 AOT tests.
11084
11085         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11086         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11087
11088         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11089
11090 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11091
11092         * aot-compiler.c: simplified and refactored the asm-writing code
11093         to allow different backends.
11094
11095 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11098
11099         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11100         little. Share patches of type TYPE_FROM_HANDLE as well.
11101
11102         * mini.c (mono_patch_info_equal): New helper function.
11103         (mono_patch_info_hash): Ditto.
11104
11105         * aot-compiler.c (emit_method_code): Fix s390 build.
11106
11107         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11108         is not handled because it is stored as a flag and not as a type ctor. Fixes
11109         #79016.
11110
11111 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * aot-compiler.c: Fix computation of GOT slot statistics.
11114         
11115         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11116         Also remove support for not PIC AOT.
11117
11118         * mini.h: Bump AOT file format version.
11119
11120         * objects.cs: Add a test for #78990.
11121
11122         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11123         (peter.dettman@iinet.net.au). Fixes #79087.
11124
11125         * basic-long.cs: Add a test for the above.
11126
11127 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11128
11129         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11130         
11131         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11132         code somewhat.
11133
11134 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11137         exceptions.
11138
11139 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11140
11141         * mini.c: Don't verify COM proxy invoke calls
11142         
11143
11144 2006-08-10  Dick Porter  <dick@ximian.com>
11145
11146         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11147         which process is holding semaphores locked.
11148
11149 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11150
11151         * mini-ia64.c mini-amd64.c: Fix #79027.
11152
11153         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11154
11155         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11156
11157         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11158         implicit arguments in a vararg call. Fixes #79027.
11159
11160 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11161
11162         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11163         (mono_get_array_new_va_signature): Ditto.
11164
11165 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * aot-runtime.c: Call init_plt lazily.
11168
11169         * inssel-long.brg: Fix unsigned long->int conversion.
11170
11171         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11172
11173         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11174         that most data is now in the .rss/.data section.
11175
11176 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11179
11180         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11181
11182         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11183
11184         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11185
11186         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11187         virtual call. Fixes #79010.
11188
11189         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11190         and use the result as the this argument in the real call.
11191
11192         * generics.2.cs: Add a new test for #79010.
11193         
11194 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini-x86.c: Fix a warning.
11197
11198         * aot-compiler.c: Add a bunch of statistics.
11199
11200         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11201
11202 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11205
11206 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11207
11208         * 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>.
11209
11210 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11211
11212         * mini.c (mono_method_to_ir): Obtain the original method in the
11213         CIL stream and use this to perform validation.
11214
11215         Fixed: #78816
11216
11217 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11220         (mono_arch_call_opcode): Ditto.
11221
11222         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11223         #78826.
11224
11225         * mini.c (mono_patch_info_dup_mp): New helper function.
11226         
11227         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11228         compilation. Fixes #78827.
11229
11230 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11231
11232         * declsec.c: Use original security informations for
11233           MONO_WRAPPER_MANAGED_TO_MANAGED.
11234
11235 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11236
11237         * mini.c: Allow Com Interop methods/classes and
11238         don't verify COM wrapper calls
11239         
11240
11241 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * inssel-long32.brg: Fix long->i4 checked conversion.
11244
11245         * exceptions.cs: Add a test for the above.
11246
11247 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11250
11251         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11252         leaks.
11253
11254         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11255         #78775.
11256
11257 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini.c: Fix solaris/x86 exception handling.
11260
11261         * Makefile.am: Get rid of $(ICU_LIBS).
11262
11263 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11266         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11267         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11268
11269         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11270
11271         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11272         this function causes a SIGSEGV.
11273
11274 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * mini.c: Remove unused solaris/x86 includes.
11277
11278 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11279
11280         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11281
11282 2006-06-20  Jb Evain  <jbevain@gmail.com>
11283
11284         * cpu-g4.md: fix max length of start_handler instruction.
11285
11286 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11287         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11288
11289 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11290         * ssa.c: Fixed bug 78653 for SSA based deadce.
11291         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11292         MonoInst.flags, used in SSA based deadce.
11293         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11294         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11295
11296 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11297
11298         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11299         it can end up using non executable memory on ppc64 systems
11300         running ppc32 userspace (fix from Johannes Berg).
11301
11302 2006-06-14  Dick Porter  <dick@ximian.com>
11303
11304         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11305         4.1.1
11306
11307 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11308         * mini.c: Made so that inline is locally disabled if it would
11309         trigger a .cctor, because too many apps depend on this behavior
11310         (which seems to be also the one of the MS CLR).
11311
11312 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11313
11314         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11315         No idea why this worked before.
11316
11317         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11318         which branch to outer exception clauses since they could skip the
11319         inner finally clauses. Fixes #78633.
11320
11321         * exceptions.cs: Add a test for the above.
11322
11323         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11324         Fixes #78629.
11325
11326         * iltests.il: Add a test for the above.
11327
11328 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11331         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11332
11333         * iltests.il: Add a test for the above.
11334
11335 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11336
11337         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11338         
11339         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11340         methods as instrinsics.
11341
11342 2006-06-09  Wade Berrier <wberrier@novell.com>
11343
11344         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11345         (simple-cee-ops.h ssapre-mini-ops.h)
11346
11347 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11348
11349         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11350         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11351         instruction).
11352         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11353         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11354
11355 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11356
11357         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11358
11359 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11360
11361         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11362         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11363         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11364         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11365         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11366         of opcodes, so that bug 78549 should not happen again.
11367         * ssapre.c: Updated to use the renamed files.
11368
11369 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11372         in OP_ATOMIC_EXCHANGE_I4.
11373
11374 2006-06-07  Wade Berrier <wberrier@novell.com>
11375
11376         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11377         in mono_debugger_create_notification_function)
11378
11379 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11382         
11383         * mini.c (type_from_stack_type): Disable some changes which do not
11384         seem to work.
11385
11386         * driver.c: Reenable opts.
11387
11388         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11389         of the evaluation stack.
11390         
11391         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11392         evaluation stack trace at entry to the bblock.
11393
11394         * mini.c (merge_stacks): New function to perform verification of stack merges.
11395         Turned off by default.
11396
11397         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11398         STACK_MP.
11399         
11400 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11401
11402         * local-propagation.c: Fixed bug 78549.
11403
11404 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11405
11406         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11407
11408 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11409
11410         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11411         tramp-arm.c, tramp-ia64.c
11412         (mono_debugger_create_notification_function): Update signature to
11413         new signature and use new protocol for creating the notification
11414         function.  
11415
11416         Should fix the build.
11417
11418 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11419
11420         * exceptions-ppc.c (mono_jit_walk_stack)
11421         (ves_icall_get_frame_info): Fix the build
11422
11423 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11424
11425         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11426
11427 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11428
11429         * il2tests.2.il: New file for generics CIL tests.  Add test for
11430         #78019.
11431         * Makefile.am: Update.
11432
11433         Fix #78019
11434         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11435         to nullable types.
11436
11437 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11438
11439         * aliasing.c: Fixed bug 78311.
11440
11441 2006-05-29  Martin Baulig  <martin@ximian.com>
11442
11443         * mini-exceptions.c (mono_find_jit_info): When computing the
11444         native offset, check whether we're actually inside the method's
11445         code; call mono_debug_print_stack_frame() to format the frame.
11446         (ves_icall_System_Exception_get_trace): Call
11447         mono_debug_print_stack_frame() to format the stack frame.
11448         (ves_icall_get_trace): Update to the new debugging API.
11449         (mono_jit_walk_stack_from_ctx): Likewise.
11450         (ves_icall_get_frame_info): Likewise.
11451
11452         * mini.c (get_method_from_ip): Use the new debugging API.
11453         (mono_print_method_from_ip): Likewise.
11454
11455         * exceptions-ppc.c
11456         (mono_jit_walk_stack): Use the new debugging API.
11457         (ves_icall_get_frame_info): Likewise.   
11458
11459 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11460
11461         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11462
11463 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11464
11465         * mini.c: Added "limitator" to inline for debugging.
11466
11467 2006-05-24  Martin Baulig  <martin@ximian.com>
11468
11469         * debug-debugger.c (mono_debugger_init): Create a private,
11470         malloc()-based code manager for the notification function and
11471         intentionally leak it on exit.  This fixes the crash-on-exit race
11472         condition.
11473
11474         * tramp-amd64.c
11475         (mono_debugger_create_notification_function): Added
11476         `MonoCodeManager *' argument.
11477
11478         * tramp-x86.c
11479         (mono_debugger_create_notification_function): Added
11480         `MonoCodeManager *' argument.
11481
11482 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11483
11484         * aliasing.c: Fixed 64 bit issue.
11485         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11486         default since all known bugs are fixed (one more time!).
11487
11488 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11489
11490         * mini.c: write barrier support.
11491
11492 2006-05-23  Martin Baulig  <martin@ximian.com>
11493
11494         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11495         check at the top of the file.
11496
11497 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11498
11499         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11500         reverting changes without reason and without changelog entries.
11501
11502 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11503
11504         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11505         to a few opcodes. Fixes #78439.
11506
11507         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11508         consistency with other archs.
11509
11510         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11511
11512 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11513
11514         * debug-debugger.c: fix the build.
11515
11516 2006-05-17  Martin Baulig  <martin@ximian.com>
11517
11518         * debug-debugger.c
11519         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11520         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11521         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11522         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11523
11524 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11527
11528 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11531         MONO_TYPE_GENERICINST.
11532         
11533         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11534         MONO_TYPE_GENERICINST.
11535
11536 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11539         #78325.
11540
11541 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11542
11543         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11544         mempool.
11545         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11546
11547 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11548
11549         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11550         mono_trace_cleanup ().
11551
11552         * iltests.il: Fix problem with the newly added test.
11553
11554         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11555         due to register constraints, free up the previous hreg. Fixes #78314.
11556
11557         * iltests.il: Add new test for #78314.  
11558
11559         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11560         Interlocked.Add. Fixes #78312.
11561
11562         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11563         
11564 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11565
11566         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11567
11568 2006-05-05  Martin Baulig  <martin@ximian.com>
11569
11570         * debug-mini.c (mono_debug_open_block): New method.
11571
11572         * mini-amd64.c
11573         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11574         the beginning of each basic block.
11575
11576         * mini-x86.c
11577         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11578         the beginning of each basic block.
11579
11580 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11581
11582         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11583         default until I understand why they break the build on amd64.
11584
11585 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11586
11587         * mini.c (mini_cleanup): Call mono_cleanup ().
11588
11589         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11590         errors.
11591
11592 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11593
11594         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11595         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11596         default since all known bugs are fixed, and I cannot reproduce bug
11597         77944... I'm asking Matt Hargett to test again after this commit.
11598
11599 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11600
11601         * mini-codegen.c: Fixed typo that thrashed inline.
11602
11603 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * dominators.c (compute_dominators): Avoid using a worklist since
11606         it is not correct in some cases. Instead, iterate over all bblocks as
11607         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11608
11609 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11610
11611         * mini.c (mono_jit_compile_method_inner): Use
11612         mono_prepare_exception_from_error that resets the value
11613         internally.
11614
11615 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11616
11617         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11618         
11619 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11620
11621         * aliasing.c: Fixed bug 78210.
11622
11623 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11624
11625         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11626         default until all their problems (or the ones they trigger) are fixed.
11627
11628 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11629
11630         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11631         
11632         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11633         as loaded only after resolving patches since that could invoke the same method.
11634
11635         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11636
11637         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11638         functions.
11639
11640         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11641         AOT loader.
11642
11643         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11644         stack.
11645
11646         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11647         made from AOT code through the PLT table.
11648
11649         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11650         holding the plt offset when a call is made to the aot plt trampoline.
11651         
11652 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11653
11654         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11655         amd64 AOT support.
11656
11657         * Makefile.am (common_sources): Fix build breakage.
11658
11659         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11660         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11661         intra-assembly calls if possible.
11662         
11663         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11664
11665         * mini-trampolines.c: Handle PLT entries.
11666
11667         * mini.c: Avoid creating a GOT var for calls.
11668
11669         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11670         from mscorlib code.
11671
11672         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11673         from mscorlib code.
11674
11675         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11676         AOT code.       
11677
11678         * mini.h: Bump AOT file format version.
11679         
11680         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11681         covers more cases.
11682
11683 2006-04-25  Martin Baulig  <martin@ximian.com>
11684
11685         * driver.c: Disable copyprop, consprop and inline when running
11686         inside the debugger.
11687
11688 2006-04-25  Martin Baulig  <martin@ximian.com>
11689
11690         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11691         with `get_current_thread' and added `detach'.
11692         (MonoDebuggerMetadataInfo): Added `thread_size',
11693         `thread_tid_offset', `thread_stack_ptr_offset' and
11694         `thread_end_stack_offset'.
11695
11696 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11697
11698         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11699         aot-runtime.c.
11700
11701         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11702         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11703
11704         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11705
11706         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11707
11708         * aot.c: Add support for ADJUSTED_IID.  
11709
11710 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11711
11712         * aot.c (emit_method_order): Don't align method_order_end.
11713
11714         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11715         the interface ID changes.
11716
11717 2006-04-21  Dick Porter  <dick@ximian.com>
11718
11719         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11720         cleaning up a thread.  Fixes the new part of bug 77470.
11721
11722 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11723
11724         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11725         to managed wrapper.
11726                      
11727 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11730         
11731         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11732         SIGSEGV. Fixes #78072.
11733
11734         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11735         unregister our SIGABRT handler.
11736
11737 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11738
11739         * mini.c: Disabled inline where it can alter the call stack in a
11740         way visible from managed code.
11741         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11742         default.
11743
11744 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11747         on other platforms. Fixes #78089.
11748
11749 2006-04-13  Martin Baulig  <martin@ximian.com>
11750
11751         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11752         determine whether we're inside the debugger.
11753
11754         * debug-debugger.h
11755         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11756
11757 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11758
11759         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11760         handler clauses. Fixes #78024.
11761
11762         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11763         in the CALL_MEMBASE opcodes. Fixes #78088.
11764         (mono_arch_get_vcall_slot_addr): Ditto.
11765
11766 2006-04-10  Martin Baulig  <martin@ximian.com>
11767
11768         * debug-debugger.c: The thread handling code has now been moved
11769         into ../metadata/threads.c.
11770
11771 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11772
11773         * driver.c (mono_main): Fix --with-gc=none build.
11774
11775         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11776         (mono_spillvar_offset_float): Ditto.
11777         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11778         hreg, not when its !global, since on ia64, there is a third category: stacked
11779         registers.      
11780
11781 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11782
11783         * mini.c: set MonoInst->klass for load field address and a few other
11784         places.
11785
11786 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11789
11790 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11793         the branch opt changes.
11794
11795 2006-04-06  Dick Porter  <dick@ximian.com>
11796
11797         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11798         
11799         * wapihandles.c (mini_wapi_seminfo): 
11800         * driver.c (mono_main): Add semaphore info option
11801
11802 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11805         branch optimization changes. Fixes #78009.
11806
11807 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11808
11809         * mini.c: ignore accessibility of methods in managed->native wrappers.
11810
11811 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11812
11813         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11814         
11815         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11816
11817 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11818
11819         * mini.c: Modify the branch optimizations to preserve the invariant that
11820         the entries inside the in_bb and out_bb arrays are unique.
11821         (mono_unlink_bblock): Avoid creation of new arrays.
11822
11823 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11824
11825         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11826         change (#77992).
11827
11828 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11829
11830         * mini.c (optimize_branches): Remove the "optimizations" in
11831         the cbranch1/cbranch2 -> branch cases which were causing several
11832         problems in the past. Fixes #77986.
11833
11834 2006-03-31  Chris Toshok  <toshok@ximian.com>
11835
11836         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11837         default optimizations :(
11838
11839 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11842         branch.
11843
11844 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11845
11846         * local-propagation.c: Added comments to structs and removed
11847         "Mono" prefixes from local tree mover types.
11848
11849 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11850
11851         * Makefile.am (arch_sources): Define this for each architecture so 
11852         libmono_la_SOURCES is defined in one place.
11853
11854 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11855
11856         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11857         from handles/.
11858
11859 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11860
11861         * driver.c: print the GC name supplied by configure.
11862
11863 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11864
11865         * local-propagation.c: Added tree mover, and moved here all the
11866         local propagation code from mini.c
11867         * mini.c: Added support for treeprop, and moved all the local
11868         propagation code to local-propagation.c
11869         * mini.h: Added support for treeprop
11870         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11871         treeprop, inline and deadce by default
11872         * Makefile.am: Added local-propagation.c
11873
11874 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11875
11876         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11877
11878 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11879
11880         * debug-debugger.c: make it compile without the Boehm GC.
11881
11882 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11883
11884         * mini.c: fixed issue with mismatch when an icall is registered
11885         with multiple names but same address.
11886
11887 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11888
11889         * declsec.c, mini-exceptions.c: use write barrier to set reference
11890         fields of managed objects.
11891
11892 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11895         (can_access_internals): Fix a warning.
11896
11897         * mini.c (print_method_from_ip): Rename this to 
11898         mono_print_method_from_ip so it gets exported.
11899
11900         * trace.c: Deal with strings inside StringBuilder's containing garbage
11901         and fix memory leaks. Fixes #77848.
11902
11903 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11906         fixes #77787.
11907
11908 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11909         
11910         * mini-s390.c: Remove OP_X86_TEST_NULL.
11911
11912 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11913
11914         * mini.c: use the correct GetHashCode() for the moving collector.
11915
11916 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11917
11918         * liveness.c: Regalloc spill cost tuning.
11919
11920 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11921         
11922         * mini-s390x.h: Correct S390_LONG macro.
11923
11924         * mini-s390x.c: Cleanup unused code.
11925
11926 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * jit-icalls.h: New file.
11929
11930         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11931         icalls and include that instead of including jit-icalls.c.
11932
11933         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11934         OP_X86 opcodes.
11935
11936 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
11937
11938         * mini.c: when checking for member accessibility, also check for
11939         friend assemblies and for explicit interface implementations.
11940
11941 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11942
11943         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
11944
11945         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
11946
11947         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11948         common cases are done first.    
11949
11950         * mini-ops.h: Only define platform specific opcodes on the given platform.
11951
11952         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
11953         branch.
11954         
11955 2006-03-14  Martin Baulig  <martin@ximian.com>
11956
11957         Revert Paolo's change from r57348:
11958
11959         * mini.h: don't use gboolean for bitfields.
11960         * mini.c: verifier changes for fields and methods accessibility.
11961
11962 2006-03-13  Neale Ferguson <neale@sinenomine.net>
11963
11964         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
11965
11966         * mini-s390x.c: Fix conv_r_un.
11967
11968         * cpu-s390, cpu-s390x.md: Fix lengths.
11969
11970 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11971
11972         * mini.c: nested types have access to all the nesting
11973         levels, not just the enclosing types.
11974
11975 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11976
11977         * mini.c: added a few more verification checks.
11978
11979 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * liveness.c: Merge optimizations from the linear-il branch.
11982
11983 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11984
11985         * mini-ia64.c (emit_call): Add a comment.
11986
11987         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
11988
11989         * tramp-ia64.c: Fix some warnings.
11990
11991 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11992
11993         * mini.h: don't use gboolean for bitfields.
11994         * mini.c: verifier changes for fields and methods accessibility.
11995
11996 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
11999         lazy icall wrapper changes.
12000
12001         * dominators.c: Replace all the dominator algorithms with faster
12002         ones from the linear-il branch.
12003
12004         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12005         the mempool.
12006
12007         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12008         common cases are done first.
12009
12010         * mini-amd64.c: Fix some warnings.
12011
12012         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12013         from the mempool.
12014
12015         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12016         added code.
12017
12018         * mini.h: Add a missing prototype.
12019
12020 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * mini.c: Compile icall wrappers lazily.
12023
12024         * mini-codegen.c: Use printf instead of g_print since its much faster.
12025
12026         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12027         function.
12028
12029         * mini.c (optimize_branches): Cache the negative result from 
12030         remove_block_if_useless ().
12031
12032         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12033         Also fix some bblock linking issues.
12034
12035         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12036         assembly files.
12037
12038         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12039
12040         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12041         accessed fields first, for better cache behavior.
12042         
12043 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12044
12045         * mini.c: speedup IList<T> array accesses.
12046
12047 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12048
12049         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12050         inline_costs counter. Fixes #77190.
12051
12052 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12053
12054         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12055         trace messages. Fixes #77706.
12056
12057 2006-03-04  Martin Baulig  <martin@ximian.com>
12058
12059         * tramp-amd64.c, tramp-x86.c
12060         (mono_debugger_create_notification_function): Use
12061         mono_global_codeman_reserve() to allocate a buffer at runtime and
12062         return it.
12063
12064         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12065
12066         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12067         notification function at runtime and then call `initialize' in the
12068         `MONO_DEBUGGER__debugger_info' vtable.
12069
12070 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * iltests.il: Fix a visibility problem.
12073
12074 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12075
12076         * driver.c, mini.c: add hooks for the counters API.
12077
12078 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12079
12080         * driver.c: show disabled options.
12081
12082 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12083
12084         * linear-scan.c: always use cost-driven selection.
12085
12086 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12087
12088         * jit-icalls.c (helper_compile_generic_method): Revert change from
12089         2006-02-24.
12090
12091 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12092
12093         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12094
12095 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12096
12097         * inssel.brg: style fixes, mostly to force the updated monoburg
12098         to run for people using svn.
12099
12100 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12101
12102         * mini.c: match monoburg changes.
12103
12104 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12105
12106         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12107         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12108         declaration in the header file.
12109
12110 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12111
12112         * helpers.c: reduce relocations and mem usage.
12113
12114 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12115
12116         * mini.h, mini-codegen.c: disable logging features if
12117         requested by configure.
12118
12119 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12120
12121         * mini.c: tiny verifier changes.
12122
12123 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12124
12125         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12126         cpu-pentium.md: stack alignment changes for osx/x86,
12127         partially from Geoff Norton <gnorton@customerdna.com>.
12128
12129 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12130
12131         * jit-icalls.c (helper_compile_generic_method): Update to changes
12132         in metadata/class.c.
12133
12134 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12135         
12136         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12137         
12138         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12139         interface calls with large offsets.
12140
12141 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12142
12143         * jit-icalls.c (helper_compile_generic_method): Document the
12144         special-case we depend on so that we can inflate the method twice
12145         with the same context with no bad side-effects.
12146
12147 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12148
12149         * mini-x86.c, mini-amd64.c: fix for case when xen support
12150         is disabled.
12151
12152 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12153
12154         * mini-x86.c, mini-amd64.c: generate code to access tls items
12155         in a faster way for Xen systems.
12156
12157 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12158
12159         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12160         updates and compilation fixes for the OSX/x86 port, mostly from
12161         Geoff Norton <gnorton@customerdna.com>.
12162
12163 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12164
12165         * inssel.brg: faster interface call implementation
12166         to sync with the interface_offsets MonoVTable changes.
12167
12168 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12169
12170         * mini.c: more verification checks.
12171
12172 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12173
12174         * mini.c: added a few more verification checks.
12175
12176 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12177
12178         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12179         facility on the processor and use it if available.
12180
12181 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12182
12183         * driver.c, aot.c, mini.c: throw exception if the IL code is
12184         invalid or unverifiable.
12185
12186 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12187
12188         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12189         m.StructField.
12190
12191 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12192
12193         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12194
12195 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12196
12197         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12198         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12199         handling of instantiated generic valuetypes.
12200
12201 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12202
12203         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12204         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12205         instead.
12206
12207         * generics.2.cs: Revert the nullable reftypes tests.
12208
12209 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12212         using __builtin_frame_address (1) as it doesn't work in the presence
12213         of optimizations. Hopefully fixes #77273.
12214
12215         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12216         -> generics.cs change as it doesn't work with some automake versions.
12217
12218 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12219
12220         * mini.c: handle systems that sue a different way to
12221         retrieve the stack address of the current thread.
12222
12223 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12224
12225         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12226         it specially in the makefile.
12227
12228         * generics.2.cs: Add tests for nullable reference types.
12229
12230 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12231
12232         * mini.c: always handle the case when mono_jit_init()
12233         is called in a thread different from the main thread,
12234         confusing libgc (bug #77309).
12235
12236 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12237
12238         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12239
12240 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12241
12242         * mini.c: change optimize_branches () to use a single loop
12243         and introduce a new optimization to simplify some range checks.
12244
12245 2006-02-03  Martin Baulig  <martin@ximian.com>
12246
12247         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12248         and merged with debugger_thread_manager_add_thread().
12249         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12250         inform the debugger about the main thread.
12251
12252 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12253
12254         * basic.cs: Add test for div.un/rem.un constant folding.
12255
12256 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12257
12258         * cpu-s390x.md: correct int_xor_imm length
12259
12260 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * generics.2.cs: New test for #77442.
12263
12264         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12265         #77442.
12266
12267 2006-02-02  Martin Baulig  <martin@ximian.com>
12268
12269         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12270         <mono/metadata/mono-debug-debugger.h>   
12271
12272         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12273
12274 2006-02-02  Martin Baulig  <martin@ximian.com>
12275
12276         * debug-debugger.h: New header file for debug-debugger.c.
12277
12278         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12279         function is a separate thread anymore; add support for attaching.
12280
12281 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * tramp-x86.c: Fix a warning.
12284
12285 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12288         on very large methods.
12289
12290         * aot.c (load_patch_info): Fix a warning.
12291
12292 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12293
12294         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12295         mini-ops.h: alu membase optimizations.
12296
12297 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12298
12299         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12300         to speedup StringBuilder.
12301
12302 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12303
12304         * dominators.c (mono_compute_natural_loops): Fix detection of
12305         loop body start blocks.
12306
12307         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12308
12309 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12310
12311         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12312         #75145.
12313
12314 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12315
12316         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12317
12318 2006-01-25  Martin Baulig  <martin@ximian.com>
12319
12320         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12321         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12322         started to cleanup this file a little bit.
12323
12324 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12325
12326         * mini.c: optimize a codepath frequently happening in generics code.
12327
12328 2006-01-23  Martin Baulig  <martin@ximian.com>
12329
12330         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12331
12332         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12333         functions directly.
12334
12335         * driver.c: debug-debugger.c is only available if
12336         `MONO_DEBUGGER_SUPPORTED' is defined.   
12337
12338 2006-01-23  Martin Baulig  <martin@ximian.com>
12339
12340         * debug-debugger.c: Only enable this on platforms where the Mono
12341         Debugger is working (x86 and x86_64).
12342
12343 2006-01-21  Martin Baulig  <martin@ximian.com>
12344
12345         The Mono Debugger is now using the normal `mono' instead of the
12346         `mono-debugger-mini-wrapper' when executing managed code.
12347
12348         * debug-debugger.c: New file; previously known as
12349         debugger/wrapper/wrapper.c.
12350
12351         * debug-mini.c (mono_init_debugger): Removed.
12352
12353         * driver.c (mono_main): Added new `--inside-mdb' command line
12354         argument which is used when running inside the debugger.
12355
12356 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12357
12358         * liveness.c (mono_analyze_liveness): Remove some unused data
12359         structures.
12360
12361 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12362
12363         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12364
12365 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12366
12367         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12368         depends on implementation details of monobitset.
12369
12370         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12371         Fixes #77271.
12372
12373 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12374
12375         * liveness.c: Update after monobitset changes.
12376
12377 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12378
12379         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12380
12381 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12382
12383         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12384
12385         * mini-s390x.c: Remove warning messages.
12386
12387 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12388
12389         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12390
12391 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12392
12393         * generics.2.cs: Add ldelem/stelem_any test.
12394
12395 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12396
12397         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12398
12399 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12402         
12403 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * generics.2.cs: Reenable vtype tests.
12406
12407         * inssel-x86.brg: Remove an icorrect valuetype rule.
12408
12409 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12410
12411         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12412         initial support for OP_ABS.
12413
12414 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12415
12416         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12417
12418 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12419
12420         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12421         conversion and implement LADD/LSUB.
12422
12423         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12424         architectures.
12425
12426 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12427
12428         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12429
12430         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12431         architectures.
12432
12433 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12434
12435         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12436         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12437         (stack walk problem).
12438
12439 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * aot.c (mono_aot_load_method): Fix a warning.
12442
12443 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12444
12445         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12446
12447 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * iltests.il: Add test for #77148.
12450
12451         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12452         #77148.
12453
12454 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12455
12456         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12457
12458 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12459
12460         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12461         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12462
12463         * basic-long.cs: Add lconv-to-r4/r8 tests.
12464
12465 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12466
12467         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12468
12469         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12470         here as on other archs.
12471
12472 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12473
12474         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12475
12476 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12477
12478         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12479         
12480         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12481
12482         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12483         instrument_prolog; Add memory_barrier instruction.
12484
12485 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12488
12489 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12492
12493         * aliasing.c inssel.brg: Fix warnings.
12494
12495         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12496         could skip initialization of some parts of memory.
12497
12498         * mini.c mini-ia64.c: Fix warnings.
12499
12500         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12501
12502 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12505         a crash seen on sparc.
12506
12507         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12508         
12509         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12510
12511 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12512
12513         * mini-ops.h: Add s390_backchain instruction
12514
12515         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12516
12517         * cpu-s390.md: Add s390_backchain instruction
12518
12519         * mini-s390.c: Significant ABI changes
12520
12521         * mini-s390.h: Cater for zero length structures
12522
12523 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12524
12525         * mini-s390.c: ABI fixes
12526
12527         * inssel-s390.brg: Remove debug statements
12528
12529         * cpu-s390.md: Fix length of ATOMIC_xx operations
12530
12531 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * basic-float.cs: Add float<->long conversion tests.
12534
12535 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12536
12537         * mini-s390.c: Fix LOCALLOC processing.
12538
12539         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12540
12541 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * iltests.il: Add tests for some opcodes not covered by the other
12544         tests.
12545
12546 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12547
12548         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12549         register loading for Tail processing; Correct trace output.
12550
12551         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12552
12553         * cpu-s390.md: Correct size of jmp instruction. 
12554
12555 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12556
12557         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12558
12559 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12560
12561         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12562           Bring s390 up to current level.
12563
12564 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12565
12566         * generics.2.cs: Disable the newly added tests as they do not work yet.
12567         
12568         * generics.2.cs: Add valuetype tests.
12569
12570 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * basic-long.cs: Add i4->u8 test.
12573
12574         * objects.cs: Add tests for JIT intrinsic.
12575
12576         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12577         optimizations lost by a mistake.
12578
12579 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12580
12581         * basic-long.cs: Remove a test moved to objects.cs.
12582
12583         * arrays.cs: Add more array tests.
12584
12585 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12586
12587         * arrays.cs: Add new tests for multi-dimensional arrays.
12588
12589 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12590
12591         * Makefile.am (test_sources2): Add generics.2.cs.
12592         (EXTRA_DIST): Add test_sources2.
12593
12594 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12595
12596         Support for boxing and unboxing nullable types as well as the
12597         isinst operation on nullables, per the CLI ammendment.
12598
12599         * inssel.brg (CEE_ISINST): Special case for nullable
12600
12601         * mini.c (handle_unbox_nullable): new method
12602         (handle_box): Special case for nullable types
12603         (mono_method_to_ir): Call handle_unbox_nullable in correct
12604         places.
12605
12606         * generics.2.cs: New test suite
12607
12608         * Makefile.am: Support for regression tests with generics.
12609
12610 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12613         allocated to registers. Fixes #76800.
12614
12615 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12616
12617         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12618
12619 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12620
12621         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12622         of platforms.
12623
12624 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12627         objects.cs.
12628
12629         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12630         
12631         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12632 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12633
12634         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12635         single precision before storing to a single precision location.
12636
12637 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12638
12639         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12640
12641 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12644         correct files.
12645
12646         * basic.cs: Remove test_0_byte_compares test which was moved to
12647         objects.cs a long time ago.
12648
12649 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12650
12651         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12652
12653 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12654
12655         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12656         handlers are called.
12657
12658         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12659         throwing code.
12660
12661          * mini-ia64.c: Add support for the throw->branch exception 
12662         optimization.   
12663
12664         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12665
12666 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12667
12668         * mini.c: Enabled "fastpath" deadce :-)
12669         
12670 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12671
12672         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12673         alias analysis pass to support it.
12674         * mini.h: Likewise.
12675         * ssa.c: Likewise.
12676         * liveness.c: Likewise (liveness computation can use aliasing
12677         information to be more accurate).
12678         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12679         moreover made so that "--compile-all" uses the given optimization
12680         flags and not the default ones.
12681         * aliasing.c: Alias analysis (new file).
12682         * aliasing.h: Likewise.
12683         * Makefile.am: added "aliasing.c" and "aliasing.h".
12684         
12685 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12688         OP_L opcodes.
12689
12690 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12691
12692         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12693         fp >= end_of_stack exit condition, as it is not needed, and it might
12694         become true for fp eliminated frames.
12695
12696 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12697
12698         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12699         coded offsets.
12700
12701 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12702
12703         * mini-arm.c: fixed alignment of doubles/longs to match
12704         the C ABI (bug #76635).
12705
12706 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12707
12708         * aot.c: fix compilation with --enable-minimal=aot.
12709
12710 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12711
12712         * mini-arm.c: fixed compatibility with the new
12713         floating point emulator package for compares.
12714
12715 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12716
12717         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12718
12719 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12720
12721         * mini-exceptions.c (print_stack_frame): Output to stderr.
12722         (mono_handle_native_sigsegv): Ditto.
12723
12724 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12725
12726         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12727         OP_LCONV_TO_OVF_I implementation.
12728
12729         * mini-amd64.c: Add support for the throw->branch exception 
12730         optimization.
12731
12732         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12733         when the catch clause catches a more general exception, i.e. Object.
12734
12735 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12736
12737         * cpu-ia64.md: Remove unused opcodes.
12738
12739         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12740         specific defines for architectures defining USE_SIGACTION.
12741
12742         * mini-ia64.c: Fix some warnings.
12743
12744         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12745         version seemed to skip a frame.
12746
12747 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12748
12749         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12750         only calls which are made to native code use this flag.
12751
12752 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12753
12754         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12755         varargs methods as well.
12756         
12757         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12758         which have save_lmf set. Reorganize methods prologs a bit.
12759
12760         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12761         debugger to the proper place.
12762
12763 2005-10-29  Martin Baulig  <martin@ximian.com>
12764
12765         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12766         when running inside the debugger until the debugger has support
12767         for it.
12768
12769 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12770
12771         * mini.h: Fix a warning.
12772
12773 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12774
12775         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12776         we expose publicly, this returns the string.
12777
12778 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12779
12780         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12781         with fp elimination.
12782
12783 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12784
12785         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12786         native stacktrace using the glibc 'backtrace' function if available.
12787
12788 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12791
12792         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12793         handle SIGSEGVs received while in native code.
12794
12795         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12796         code, call mono_handle_native_sigsegv which will abort the runtime
12797         after printing some diagnostics, instead of converting it into a
12798         confusing NullReferenceException.
12799
12800 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * cpu-pentium.md: Remove unused opcodes.
12803
12804 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12805
12806         * mini-amd64.h (MonoLMF): Add rsp field.
12807
12808         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12809         the lmf too.
12810
12811 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * mini-codegen.c (get_register_spilling): Fix some warnings.
12814
12815 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12816
12817         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12818         elimination during exception handling. Enable fp elimination by
12819         default.
12820
12821         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12822         elimination.
12823
12824 2005-10-16  Martin Baulig  <martin@ximian.com>
12825
12826         * mini-exceptions.c
12827         (mono_debugger_run_finally): New public method for the debugger.
12828
12829 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12830
12831         * debug-mini.c (mono_debug_init_method): Fix warning.
12832
12833         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12834         the 'exname' parameter const to fix some warnings.
12835
12836 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12837
12838         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12839         introduced by the previous patch.
12840
12841 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12842
12843         * basic-float.cs: Add test for precision of float arithmetic.
12844
12845         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12846         when loading/storing single values from/to memory.
12847
12848         * mini.c (mono_jit_compile_method_with_opt): Create the function
12849         pointers in the correct domain.
12850
12851 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12852
12853         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12854         introduced by previous patch.
12855         
12856         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12857         when out_filter_idx is NULL.
12858
12859         * mini-exceptions.c: Don't run filter clauses twice during exception
12860         handling. Fixes #75755.
12861
12862 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12863
12864         * aot.c: Add support for ldflda wrappers.
12865
12866         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12867         #75902.
12868
12869 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12870
12871         * mini.c, mini.h: do not consider exception handlers blocks when
12872         setting up interface variables.
12873
12874 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12875
12876         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12877
12878 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12881         causes a regression.
12882
12883         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12884
12885 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12886
12887         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12888         of the OP_P definitions.
12889
12890         * TODO: Add a proposal for dealing with the CEE/OP mess.
12891
12892         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12893         optimizations from the x86 port.
12894
12895         * cpu-amd64.md: Ditto.
12896
12897         * basic.cs basic-long.cs: Add tests.
12898
12899 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12900
12901         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
12902         Patrik Torstensson's implementation of my exception-handling
12903         optimization idea, when the exception object is not used
12904         (bug #62150).
12905
12906 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12907
12908         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12909         of the mul_imm optimizations from the old jit.
12910
12911 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12912
12913         * mini.c, liveness.c: patch by Patrik Torstensson and
12914         Zoltan Varga to improve performance in methods with
12915         exception clauses.
12916
12917 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * driver.c: Remove 'Globalization' entry from --version.
12920
12921 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12922
12923         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12924         there is a profiler interested in JIT events.
12925
12926         * aot.c: Load profile files produced by the AOT profiling module, and
12927         reorder methods based on the profiling info. Add a 'method_order' table
12928         to the AOT file to make mono_aot_find_jit_info work with the reordered
12929         methods.
12930
12931         * mini.h: Bump AOT file version info.
12932
12933 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12934
12935         * mini-arm.h: work around what looks like a gcc bug when optimizations
12936         are enabled.
12937
12938 2005-09-28  Raja R Harinath  <rharinath@novell.com>
12939
12940         * Makefile.am (AM_CFLAGS): Don't use += to append inside
12941         conditionals.  Use ...
12942         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
12943
12944 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
12945
12946         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
12947         to determine the amount of memory to copy when passing valuetypes.
12948
12949         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
12950         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
12951
12952 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
12953
12954         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
12955         information about aot.
12956
12957 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12958
12959         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12960         macros. This will allow a deadlock debugger to easily be plugged
12961         in.
12962
12963 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
12964
12965         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
12966
12967 2005-09-27  Raja R Harinath  <rharinath@novell.com>
12968
12969         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
12970         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
12971         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
12972         ($(arch_built)) [CROSS_COMPILING]: Error out.
12973
12974 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * aot.c: Add support for the no_special_static flag for classes.
12977
12978 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12979
12980         * Reapply reverted patches.
12981
12982         * *: Revert r50174 as well.
12983
12984         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
12985
12986 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12987
12988         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
12989
12990 2005-09-23  Miguel de Icaza  <miguel@novell.com>
12991
12992         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
12993         part of the SIG_HANDLER_SIGNATURE.  
12994
12995 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
12998         statistics.
12999
13000         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13001         introduced by previous patch.
13002
13003 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13006         saved registers too.
13007
13008         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13009         upon the information returned by get_call_info ().
13010         
13011         * mini-x86.c (add_float): Fix stack size calculation.
13012         (mono_arch_call_opcode): Rewrite this so it works based up the
13013         information returned by get_call_info ().
13014         (mono_arch_get_this_vret_args): Ditto.
13015
13016 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13017
13018         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13019         in cinfo to determine the registers which need to be used.
13020
13021 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13022
13023         * driver.c (mono_main): Add --server and --desktop flags. 
13024
13025 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13026
13027         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13028         registers as global registers.
13029
13030         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13031         longer needed with the new register allocator.
13032
13033         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13034
13035         * cpu-ia64.md: Remove unused opcodes.
13036         
13037         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13038         
13039 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13040
13041         * cpu-amd64.md: Remove unused opcodes.
13042
13043         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13044         needed with the new register allocator.
13045
13046         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13047         reg-reg moves.
13048
13049 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13050
13051         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13052
13053 2005-09-16  Martin Baulig  <martin@ximian.com>
13054
13055         * exceptions-amd64.c
13056         (throw_exception): Don't call mono_debugger_throw_exception() if
13057         we're a rethrow - see the FIXME in the code.
13058
13059 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13060
13061         * mini.c (mono_init_exceptions): This only works on some architectures.
13062         
13063 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13064
13065         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13066         on ia64.
13067
13068         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13069
13070         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13071         now in mini-exceptions.c.
13072
13073 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13074
13075         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13076         now in mini-exceptions.c.
13077
13078 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13081         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13082
13083         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13084         code into mini-exceptions.c. Add some assertions to it.
13085
13086 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13087
13088         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13089         (<software@solmersa.com>). Fix as errors on windows.
13090
13091 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13092
13093         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13094         method info into the LMF.
13095
13096 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13097         
13098         * mini-ia64.c: Add proper unwind info for method epilogs.
13099
13100         * exceptions-ia64.c: Add some code to help debugging.
13101         
13102         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13103
13104         * mini-exceptions.c: Fix warning.
13105
13106 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13107
13108         * mini.c: Really fix build.
13109
13110         * mini-x86.c mini-amd64.c: Fix build.
13111
13112 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13113
13114         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13115
13116         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13117         some Interlocked methods as intrinsics.
13118
13119         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13120         for Thread methods as well.
13121
13122         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13123
13124         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13125
13126         * mini-ia64.c mini-x86.c mini-amd64.c 
13127         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13128         OP_MEMORY_BARRIER.
13129         
13130         * mini.c (mono_init_exceptions): Fix build breakage.
13131
13132 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13135         of instructions. Use the new ia64_unw_op macros for emitting unwind
13136         info.
13137
13138         * mini.c (mono_init_exceptions): Initialize exception handling
13139         related trampolines at startup.
13140
13141 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13142
13143         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13144
13145 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13146
13147         * mini.c: Handle type loading errors gracefully during compilation and
13148         throw the appropriate exception.
13149
13150 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13151
13152         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13153         for the mono binary.
13154
13155 2005-09-09  Martin Baulig  <martin@ximian.com>
13156
13157         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13158         the release.
13159
13160 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13161
13162         * mini-arm.h: use emulation for conv.r.un for the release.
13163
13164 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13165
13166         * mini-arm.c, objects.cs: more fixes and tests for them.
13167
13168 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13169
13170         * mini-arm.c: align structures to at least 4 bytes to be able
13171         to keep our current optimized memcpy.
13172
13173 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13174
13175         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13176
13177 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13178
13179         * mini.c: ignore SIGPIPE.
13180
13181 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13182
13183         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13184
13185         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13186
13187 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13188
13189         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13190
13191 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13192
13193         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13194         exception handling support.
13195         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13196         patch by Brian Koropoff <briank@marakicorp.com>).
13197
13198 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13199
13200         * mini.c: revert another 'optimization' which breaks when
13201         items on the eval stack need to be saved at a basic block end
13202         (bug #75940).
13203
13204 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13205
13206         * jit-icalls.c: for arrays, ensure we always provide
13207         lower bounds.
13208
13209 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13210
13211         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13212         
13213         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13214
13215 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13218         arguments in their original register.
13219
13220 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13223         memset/memcpy.
13224
13225         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13226         when ssapre is enabled.
13227
13228         * inssel-long.brg: Fix bug in previous patch.
13229
13230         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13231         multiplication by a constant.
13232
13233 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13234
13235         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13236         icc.
13237
13238         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13239         saving registers.
13240
13241 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13242
13243         * inssel-arm.brg: apply changes tested by Brian Koropoff
13244         <briank@marakicorp.com>.
13245
13246 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13247
13248         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13249         
13250 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13251
13252         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13253         to the same register if dreg is just a base register.
13254         (print_ins): Improve printing of membase opcodes.
13255
13256         * inssel-x86.brg: Add optimized ldind(reg) rules.
13257
13258         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13259
13260 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13261
13262         * mini.c: when running under valgrind, set the stack bottom for
13263         the GC at the actual approximate stack for the app (fixes running
13264         mono with valgrind).
13265
13266 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13267
13268         * mini.c: do no break at the first valuetype to init found
13269         (fixes bug #75791).
13270
13271 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13272
13273         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13274
13275 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13276
13277         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13278
13279 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13280
13281         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13282
13283 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13284
13285         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13286
13287         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13288         code.
13289
13290         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13291         code.
13292
13293         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13294         methods.
13295
13296 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13297
13298         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13299
13300 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13301
13302         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13303         in the tail recursion optimization.
13304
13305         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13306         debug info into the assembly file.
13307
13308         * iltests.il: Add test for filter regions.
13309
13310         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13311         initial stack of filter regions. Fixes #75755.
13312
13313 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13314
13315         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13316         stack requirements.
13317
13318 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13319
13320         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13321         the check for an already compiled method on non-ia64 platforms.
13322         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13323         proper domain.
13324
13325         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13326
13327         * inssel-x86.brg: Add some optimized call rules.
13328
13329 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13330
13331         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13332         method here.
13333
13334         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13335         mono_arch_patch_delegate_trampoline.
13336
13337         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13338
13339         * mini-trampolines.c: Fix build.
13340
13341         * mini-amd64.h: Add delegate trampolines.
13342
13343         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13344
13345         * inssel-amd64.brg: Add optimized call rules.
13346         
13347         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13348
13349         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13350
13351 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13352
13353         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13354         change.
13355
13356         * mini-ia64.c: Remove LMF fixmes.
13357
13358         * mini-ia64.h: Remove most fields from LMF.
13359
13360         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13361
13362         * mini-trampolines.c: Add support for IA64 function descriptors.
13363
13364         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13365         for IA64 function descriptors.
13366
13367 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13368
13369         * tramp-arm.c: patch the vtable for virtual calls. Added
13370         support code to register/unregister the LMF.
13371         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13372         more LMF work.
13373
13374 2005-08-19  Dick Porter  <dick@ximian.com>
13375
13376         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13377         bit value if needed.
13378
13379 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13380
13381         * mini.c (mini_get_method): Move handling of wrapper data here.
13382
13383         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13384
13385         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13386         virtual.
13387
13388         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13389         bblock->code does not remain empty.
13390
13391 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13392
13393         * arrays.cs: Add regression test for #75832.
13394
13395         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13396         rules. Fixes #75832.
13397
13398         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13399         instruction scheduling.
13400
13401 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13402
13403         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13404
13405 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13406
13407         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13408
13409         * mini-codegen.c: Fix VC build.
13410
13411         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13412
13413 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13414
13415         * mini.h: fix signature for mono_register_opcode_emulation.
13416
13417 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13418
13419         * mini.c: Get rid of most of the helper_sig_... constants using
13420         mono_create_icall_signature ().
13421
13422 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13423
13424         * jit-icalls.c (helper_ldstr): New helper function.
13425
13426         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13427
13428         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13429         throw, load the string using a helper call instead of creating a string object.
13430
13431         * aot.c: Update after LDSTR changes.
13432
13433         * mini.h: Bump AOT file version.
13434         
13435         * aot.c: Save class size info into the AOT file. Print more statistics during
13436         compilation.
13437
13438         * mini.h: Bump AOT file version.
13439
13440         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13441         ordering of disasm cases. Fixes #74957.
13442
13443 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13444
13445         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13446         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13447         the generic code needed for the ARM port.
13448
13449 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13450
13451         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13452         inssel-arm.brg: more ARM features and fixes.
13453
13454 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13455
13456         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13457         ARM port work in progress.
13458
13459 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13460
13461         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13462
13463         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13464
13465         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13466
13467         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13468
13469         * *-ia64.*: Ongoing IA64 work.
13470         
13471         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13472
13473 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13474
13475         * TODO: Remove out-of-data todo stuff.
13476
13477         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13478         dead code.
13479
13480         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13481
13482         * mini.h: Bump corlib version.
13483
13484 2005-07-27  Martin Baulig  <martin@ximian.com>
13485
13486         * mini-codegen.c
13487         (create_copy_ins): Added `const unsigned char *ip' argument; set
13488         `copy->cil_code' from it.
13489
13490 2005-07-27  Martin Baulig  <martin@ximian.com>
13491
13492         * mini-exceptions.c (mono_handle_exception): Don't call
13493         mono_debugger_handle_exception() for filters.
13494
13495 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13496
13497         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13498         as well.
13499
13500 2005-07-26  Martin Baulig  <martin@ximian.com>
13501
13502         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13503
13504         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13505         helper_compile_generic_method() if the method is actually virtual
13506         and non-final.
13507
13508 2005-07-26  Martin Baulig  <martin@ximian.com>
13509
13510         * mini.c
13511         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13512         public; this is now accessed directly by the debugger.
13513         (mono_generic_trampoline_code): Removed.
13514
13515         * debug-mini.c
13516         (mono_debug_init_method): Also add interncalls and wrappers.
13517
13518 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13519
13520         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13521
13522 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13523
13524         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13525
13526 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13527
13528         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13529
13530 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13531
13532         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13533         getting TLS offsets on AMD64 too.
13534
13535 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13536
13537         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13538
13539 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13540
13541         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13542         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13543
13544 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13545
13546         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13547
13548         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13549         to mini.c.
13550
13551         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13552         mono_sparc_is_virtual_call ().
13553         
13554         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13555
13556         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13557         trampoline parameters.
13558
13559         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13560         
13561         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13562         to mono_arch_get_vcall_slot_addr.
13563
13564         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13565         trampoline code.
13566
13567         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13568
13569 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13570
13571         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13572
13573 2005-07-19  Martin Baulig  <martin@ximian.com>
13574
13575         * exceptions-amd64.c (throw_exception): Call
13576         mono_debugger_throw_exception() here like we're doing it on i386.
13577
13578 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13579
13580         * mini-ia64.c: Add optimized TLS access support.
13581
13582 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13583
13584         * mini-exceptions.c: Ongoing IA64 work.
13585
13586         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13587
13588         * mini.c: Use the default optimization set when embedding. Fixes
13589         #75194.
13590
13591 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13592
13593         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13594         of trampolines to a separate file.
13595
13596         * mini-trampolines.c: New file.
13597
13598         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13599         separate file.
13600         
13601         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13602         amd64/ia64 code.
13603
13604         * mini-codegen.c: Fix cygwin build.
13605
13606 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13607
13608         * mini.c: Add some minor changes needed by the IA64 port.
13609
13610         * *-ia64.*: Ongoing IA64 work.
13611
13612 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13613
13614         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13615         trampolines into arch-independent and arch-dependent parts.
13616
13617         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13618
13619 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13620
13621         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13622
13623         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13624         the xp-regalloc-branch for amd64.
13625
13626         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13627         xp-regalloc-branch for x86.
13628
13629 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13630
13631         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13632
13633 2005-07-06  Martin Baulig  <martin@ximian.com>
13634
13635         * mini.c
13636         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13637         (mono_jit_runtime_invoke): Likewise.
13638
13639 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13640
13641         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13642         on x86 too.
13643         
13644         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13645         without loading their metadata. Reorganize the file format so exception handling+
13646         debug info is kept separate from normal method info. Create MonoJitInfo 
13647         structures for methods lazily.
13648
13649         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13650         loading metadata.
13651         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13652
13653         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13654
13655         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13656         in AOT code.
13657
13658         * mini.h: Bump AOT file version.
13659
13660 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13661
13662         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13663
13664 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13665
13666         * Makefile.am (check-local): Call semdel-wrapper.
13667
13668 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13669
13670         * mini-x86.c: Revert the last change as it seems to break the build..
13671
13672 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13673
13674         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13675         
13676         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13677
13678 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13679
13680         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13681         outside of the macro, so strange stuff doesn't happen with gcc4
13682         (NEW_AOTCONST_TOKEN): Likewise.
13683
13684 2005-06-28  Martin Baulig  <martin@ximian.com>
13685
13686         * mini.c (mini_class_is_system_array): New static method; use this
13687         instead of `klass->parent == mono_defaults.array_class' everywhere
13688         since this also works for the new generic array class.
13689
13690 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13691
13692         * inssel.brg: Remove warnings.
13693
13694 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13695
13696         * mini-ia64.c: Ongoing IA64 work.
13697
13698         * basic-float.cs: Add float->i1 conversion test.
13699
13700         * iltests.il: Add conv.u4 test.
13701
13702 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13703
13704         * inssel-long.brg: Fix bug caused by last change.
13705
13706 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13707
13708         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13709         BSDs.  Allows the x86 JIT to work on OSX86
13710
13711 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13712
13713         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13714         u4->i8 conversion.
13715
13716         * mini-ia64.c: Ongoing IA64 work.
13717
13718 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13719
13720         * mini-ia64.c: Ongoing IA64 work.
13721
13722         * driver.c: Clean up jit_code_hash as well when using --regression.
13723
13724         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13725
13726         * basic-long.cs: Add tests for long->u4 conversion.
13727
13728 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13729
13730         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13731         that we do not depend on undefined C behavior: the order stuff
13732         gets evaluated within an expression. Fixes mono when compiled on
13733         GCC 4.
13734
13735 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13736
13737         * *-ia64.*: Ongoing IA64 work.
13738
13739         * aot.c: Lower memory usage while loading AOT methods.
13740
13741         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13742
13743         * mini.h: Bump AOT file format version.
13744
13745 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13746
13747         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13748
13749 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13750
13751         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13752         not on callee assembly). Fixed some comments.
13753
13754 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13755
13756         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13757         it gets proper disassembly.
13758         (emit_method_info): Remove some dead code.
13759
13760         * mini.c (mini_method_compile): Allways allocate the GOT var in
13761         mono_method_to_ir for emulating opcodes.
13762
13763 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13764
13765         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13766         before freeing the code memory. Fixes #74990.
13767
13768         * objects.cs: Add regression test for #74992.
13769
13770         * liveness.c: Extend live ranges of arguments to the beginning of the
13771         method. Fixes #74992.
13772
13773         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13774         so it points into the faulting instruction.
13775
13776 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13777
13778         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13779
13780         * *-ia64.*: Ongoing IA64 work.
13781
13782         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13783
13784 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13785
13786         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13787
13788         * *-ia64.*: Ongoing IA64 work.
13789
13790 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13791
13792         * basic-long.cs: Add tests for add/sub.ovf.
13793
13794         * basic.cs: Add tests for sub.ovf.
13795
13796         * *-ia64.*: Ongoing IA64 work.
13797
13798 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13799
13800         * *-ia64.*: Ongoing IA64 work.
13801
13802         * basic.cs: Add conv.ovf.i4.un test.
13803
13804 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13805
13806         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13807         
13808 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13809
13810         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13811
13812 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13813
13814         * *-ia64.*: Ongoing IA64 work.
13815
13816 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13817
13818         * trace.[ch]:
13819         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13820
13821 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13822
13823         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13824
13825 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13826
13827         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13828
13829         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13830         of a call is callable by a near call.
13831
13832 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13833
13834         * mini-ia64.c: Ongoing IA64 work.
13835
13836 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13837
13838         * genmdesc.c: Make the generated array non-static.
13839
13840         * inssel-long.brg: Fix LSHR_IMM rule.
13841
13842         * *-ia64.*: Ongoing IA64 work.
13843
13844         * *-ia64.*: Ongoing IA64 work.
13845
13846 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13847
13848         * *-ia64.*: Ongoing IA64 work.
13849
13850         * *-ia64.*: Ongoing IA64 work.
13851         
13852         * mini-ia64.c: Ongoing IA64 work.
13853
13854         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13855
13856 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13857
13858         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13859         
13860         * objects.cs basic-long.cs: Move some tests to objects.cs.
13861
13862 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13863
13864         * *-ia64.*: Ongoing IA64 work.
13865
13866         * iltests.il: Add a new test.
13867
13868         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13869         newobj. Fixes #75042.
13870
13871 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13872
13873         * *-ia64.*: Ongoing IA64 work.
13874         
13875         * *-ia64.*: Ongoing IA64 work.
13876         
13877         * *-ia64.*: Ongoing IA64 work.
13878
13879         * basic.cs objects.cs: Move tests accessing static variables as well.
13880
13881         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13882
13883 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13884
13885         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13886
13887         * driver.c: Always print failed tests.
13888
13889         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13890         frame pointer.
13891
13892         * *ia64*: Ongoing IA64 work.
13893
13894 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13895
13896         * basic.cs: Add tests for add.ovf. Fix warnings.
13897
13898 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13899
13900         * driver.c (mono_main): Avoid crash if no argument is passed to
13901         --break;  Do not use g_error, but f_printf.   And fix all other
13902         ocurrences of the same crash.
13903
13904 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13905
13906         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13907         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13908         Fixes #74742.
13909
13910 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13911
13912         * *-ia64.*: Add beginnings of IA64 backend.
13913
13914         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13915
13916 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13917
13918         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13919         Fixes #74925.
13920
13921         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13922
13923         * mini-amd64.c: Fix a warning.
13924
13925 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13926
13927         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13928         in float_neg. Fixes #74897.
13929
13930         * mini-amd64.c (emit_call): Fix another near call bug.
13931
13932 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13933
13934         * declsec.c: Keep the appdomain information in the structure. Added a 
13935         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
13936         value gets overwritten).
13937         * declsec.h: Set the default MonoArray for the the stack to 6. Added
13938         an MonoAppDomain member to MonoSecurityFrame.
13939         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
13940         used in the stack walk. Now use a MonoArray which grow (double) when
13941         it gets full.
13942
13943 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13944
13945         * mini.c: Re-enabled runtime cleanup, since running threads should
13946         now properly stop when exiting.
13947
13948 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13949
13950         * mini-codegen.c: New file contaning the arch-independent local
13951         register allocator. Not used by any architectures yet.
13952
13953         * mini.h linear-scan.c: Merge some changes from the 
13954         mini-xp-local-regalloc branch.
13955
13956 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13957
13958         * mini-amd64.c (emit_call): Fix calls to native functions when the
13959         runtime is compiled as a shared library. Fixes #74756.
13960
13961         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
13962         on a literal field. Fixes #74751.
13963
13964 2005-04-25  Raja R Harinath  <rharinath@novell.com>
13965
13966         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
13967
13968 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13969
13970         * objects.cs: Add missing null casting test.
13971
13972 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13973
13974         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
13975         in wrapper methods. Also rename 'address' variable to 'offset'.
13976
13977 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13978
13979         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
13980         warnings.
13981         
13982         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
13983
13984         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
13985         work on windows.
13986
13987 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13988
13989         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
13990
13991 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13992
13993         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
13994         just the last bytes.
13995
13996 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
13997
13998         * aot.c (mono_compile_assembly): Fix warning.
13999
14000         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14001         by the _MSC_VER stuff.
14002
14003 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14004
14005         * inssel-long.brg: Fix #74588.
14006
14007         * cpu-amd64.md: Fix #74591.
14008
14009         * iltests.il: Add new regression tests.
14010
14011 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14012
14013         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14014         valuetype.
14015
14016 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14017
14018         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14019
14020         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14021         from Bill Middleton <flashdict@gmail.com>.
14022
14023 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14024
14025         * arrays.cs: Add new regression test. Fix warnings.
14026
14027 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14028
14029         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14030         and leakage in CKFINITE.
14031
14032         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14033         this to a null op since it is called on amd64 too.
14034
14035         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14036
14037         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14038         body since this is not used on amd64.
14039         
14040         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14041
14042         * mini-amd64.c: Remove obsolete fixmes.
14043
14044         * mini.c (print_method_from_ip): Fix debugging support.
14045
14046 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14047
14048         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14049         so that expressions that don't give much gain are not reduced.
14050         * ssapre.h: Likewise.
14051
14052 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14053
14054         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14055
14056         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14057
14058         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14059
14060 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14061
14062         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14063
14064         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14065
14066 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14067
14068         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14069         stack touching.
14070
14071         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14072
14073         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14074
14075         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14076
14077         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14078         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14079
14080         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14081
14082         * mini-x86.c: Fix up stack overflow handling.   
14083
14084         * exceptions.cs: Add new regression test.
14085
14086 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14087
14088         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14089         mono_jit_thread_attach.
14090
14091         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14092
14093 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14094
14095         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14096         avoid calling constructors using callvirt.
14097
14098         * inssel.brg: Fix #74073.
14099
14100 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14101
14102         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14103         compilation with non-GCC compilers.
14104         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14105         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14106
14107 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14108
14109         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14110         klass->interface_offsets (will likely fix bug#74073).
14111
14112 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14113
14114         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14115
14116 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14117
14118         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14119         to amd64_div_reg_size ().
14120         
14121         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14122
14123 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14124
14125         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14126
14127 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14128
14129         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14130
14131 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14132
14133         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14134         
14135         * mini.c (mono_precompile_assembly): Load and precompile referenced
14136         assemblies as well. Fixes #74015.
14137
14138 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14139
14140         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14141
14142 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14143
14144         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14145         a lot of checks and (anyway) permissions cannot work until corlib is 
14146         loaded.
14147
14148 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14149
14150         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14151
14152 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14153
14154         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14155         calls (fixes bug#72824).
14156
14157 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14158
14159         * mini.c: fix tail recursion elimination (see test in bug#73936).
14160
14161 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14162
14163         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14164         some fp functions in sse2 mode.
14165
14166 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14167
14168         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14169
14170 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * mini.h mini.c: Add mono_get_jit_tls_key ().
14173
14174         * mini-x86.c: Enable fast TLS support on windows.
14175
14176 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14177
14178         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14179         * mini.c: Check for p/invoke method when generating code. If a
14180         p/invoke method, or it's class, isn't decorated with [Suppress
14181         UnmanagedCodeSecurity] then generate code to call System.Security.
14182         UnmanagedDemand (only if the security manager is active).
14183
14184 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14185
14186         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14187         last change as it seems to cause strange crashes.
14188         
14189 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14190
14191         * *.c: handle unsafe function pointers where needed.
14192
14193 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14194
14195         * mini.c (mono_jit_free_method): Remove the fixme too.
14196
14197 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14198
14199         * mini.c: As discussed, make the code actually free the delegate
14200         thunk now, to enable the debugging of delegate problems, use
14201         MONO_DEBUG=1 when running Mono. 
14202
14203         This takes also care of parts of the leaks as seen by Joe.
14204
14205 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14206
14207         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14208         thread_tls_offset calculation.
14209
14210 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14211
14212         * declsec.c: Reworked linkdemand checks for icall. The previous code
14213         was using the declaration code (untrusted) and didn't work as expected
14214         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14215         specific case.
14216
14217 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14218
14219         * iltests.il: Add new localloc test.
14220
14221         * mini-amd64.c: Handle large stack allocations the same way as on
14222         windows if stack overflow handling is working.
14223         
14224         * mini-amd64.c: Allocate the signal stack using mmap.
14225
14226         * mini.c (sigsegv_signal_handler): Fix reading of context.
14227
14228         * mini-exceptions.c: Fix up stack overflow handling.
14229
14230         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14231
14232         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14233
14234         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14235
14236         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14237
14238         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14239         tramp_init functions as they are no longer needed.
14240
14241 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14242
14243         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14244         
14245         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14246
14247         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14248         
14249         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14250         support that now.
14251
14252         * mini-ops.h: Add OP_LMUL_IMM.
14253
14254         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14255         long mul/div opcodes as intrinsic.
14256
14257         * mini-amd64.c (emit_call): Handle the case when the callee might be
14258         an AOT method.
14259
14260 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14261
14262         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14263         extra safe.
14264         
14265         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14266
14267         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14268
14269 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14270
14271         * mini.c (mono_codegen): Don't leak here, to help people running
14272         monogrind.
14273
14274 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14275
14276         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14277         conversions in sse2 mode.
14278
14279         * basic-float.cs: Add regression test.
14280         
14281         * mini-amd64.c: Reenable sse2.
14282
14283 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14284
14285         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14286
14287 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14288
14289         * driver.c: Copyright text should include 2005.
14290         
14291 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14292
14293         * cpu-amd64.md (load_membase): Fix more max lengths.
14294
14295 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14296
14297         * cpu-amd64.md (load_membase): Fix max length.
14298
14299         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14300
14301         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14302
14303         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14304         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14305
14306         * basic-float.cs: Add rounding regression test.
14307
14308         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14309
14310 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14311
14312         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14313         structures in registers for pinvoke wrappers.
14314
14315 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14316
14317         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14318
14319 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14320
14321         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14322         wrapper to mono_jit_thread_attach.
14323
14324         * mini.c (mini_jit_thread_attach): New jit icall.
14325
14326         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14327         native->managed wrappers.
14328
14329         * exceptions.cs: Add new regression test.
14330
14331         * mini.c (optimize_branches): Check regions in the cbranch to throw
14332         block case as well. Fixes #73242.
14333
14334 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14335
14336         * mini.c: thread safety fixes.
14337
14338 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14339
14340         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14341         patching stuff, since delegates use jump trampolines so there is
14342         no caller.
14343
14344         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14345         jump trampolines.
14346         
14347         * tramp-amd64.c: Fix build.
14348
14349         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14350         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14351
14352         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14353         Rename this to mono_arch....
14354         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14355
14356         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14357
14358         * mini-amd64.c (emit_call): If both the caller and the callee is
14359         guaranteed to have 32 bit addresses, emit a normal call.
14360
14361         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14362
14363         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14364         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14365         method_ptr inside delegates.
14366
14367 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14368
14369         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14370         invalidated. Fixes #73001.
14371
14372         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14373
14374         * mini-x86.c: Only use stdcall for pinvokes on windows.
14375
14376 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14377
14378         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14379         * mini-x86.c: remove unreliable __thread var offset detection,
14380         use the correct accessors and enable by default.
14381
14382 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14383
14384         * mini.c (mono_jit_free_method): Fix memory leak.
14385
14386 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14387
14388         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14389
14390 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14391
14392         * cpu-amd64.md: Fix lengths of atomic opcodes.
14393
14394 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14395
14396         * driver.c: try to not imply using ICU is any good.
14397
14398 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14399
14400         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14401         functions as inline ops.
14402
14403         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14404         some Interlocked functions as inline ops.
14405
14406         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14407
14408         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14409
14410         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14411
14412         * mini.c: Add support for OP_NOT_TAKEN.
14413
14414         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14415         structures in registers for pinvoke wrappers.
14416
14417         * mini-amd64.c: Fix warnings.
14418
14419 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14420
14421         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14422
14423         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14424
14425         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14426         address instead of loading the address from it.
14427
14428         * mini-x86.c: Add support for returning small structs in registers
14429         on Win32. Fixes part of #70864.
14430         
14431 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14432
14433         * trace.c (get_token): Improve error checking.
14434
14435 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14436
14437         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14438
14439 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14440  
14441         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14442         it can be reused for MonoClass.
14443         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14444         _LINKDEMAND.
14445
14446 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14447
14448         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14449         instead of a MonoReflectionMethod. The method information wasn't used
14450         when displaying SecurityException details (but will be now).
14451
14452 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14453
14454         * Makefile.am : windows build fix.
14455
14456 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14457
14458         * iltests.il: Add new regression test.
14459
14460         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14461         #72522.
14462
14463 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14464  
14465         * mini.c: Moved linkdemand check into helper function check_linkdemand
14466         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14467         LDFTN, LDVIRTFTN).
14468
14469 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14470
14471         * declsec.c: Added statistics counter for different kinds of 
14472         LinkDemands.
14473         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14474         (and commented) declaration.
14475         * mini.c: Added statistics counter for security Demand code 
14476         generation. Added display of security statistics.
14477
14478 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14479
14480         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14481         Fix compilation errors under gcc-2.95.
14482
14483 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14484
14485         * mini.c, driver.c: Use the new jit trampoline hashtable
14486
14487 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14488
14489         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14490
14491 2005-02-11  Martin Baulig  <martin@ximian.com>
14492
14493         * debug-mini.c (mono_debug_close_method): Free the line number array.
14494
14495 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14496
14497         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14498         icalls.
14499
14500         * mini.h: Bump AOT file format version. 
14501
14502 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14503
14504         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14505         APTC and P/Invoke.
14506         * declsec.h: Added macros to get/set lazyly initialized security 
14507         informations about assemblies. Added new enum for different type of
14508         possible LinkDemand violation. Added function to check LinkDemands.
14509         * mini.h: Added a field to MonoCompile to hold any security violation
14510         detected when JITting a method (so it can be thrown later).
14511         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14512         and CEE_CALLVIRT. Added code to throw exception at the end of
14513         mini_method_compile (note: the exception is unhandled right now).
14514
14515 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini.c, jit-icalls.c: use the managed implementation of
14518         memset for initobj and memset, to avoid managed <-> unmanaged
14519         transitions.
14520
14521 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14522
14523         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14524         optimization if it would need a GOT var.
14525
14526         * basic.cs: Add tests for constant propagation and switch statements.
14527
14528         * ssa.c: Fix out-of-range constant propagation and switch statements.
14529
14530 2005-02-09    <vargaz@freemail.hu>
14531
14532         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14533
14534 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14535
14536         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14537
14538 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14541
14542 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14543
14544         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14545         arithmetic operations.
14546
14547 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14548
14549         * mini-ppc.c: add a workaround for broken user code that
14550         DllImports vararg functions with non-vararg signatures.
14551
14552 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14553
14554         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14555         meaningfull error message for assemblies written in Managed C++.
14556
14557         * tramp-amd64.c mini-amd64.h: Add support for 
14558         create_trampoline_from_token ().
14559
14560         * aot.c mini-x86.c abcremoval.c: Applied patch from
14561         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14562
14563 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14564
14565         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14566         which takes a MonoImage/token as parameter instead of a MonoMethod.
14567
14568         * aot.c: Use the new trampoline for initializing vtables.
14569
14570         * aot.c: Add support for ldfld/stfld_remote wrappers.
14571
14572         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14573         rules for compare <MEM>, IMM.
14574
14575         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14576
14577         * aot.c: Handle inherited finalizers correctly.
14578
14579 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14580
14581         * inssel.brg (stmt): Add a missing _setup_... ().
14582
14583         * aot.c: Save some parts of the class state to the AOT file and use it
14584         to recompute that state when a class is initialized.
14585
14586         * mini.c: Install AOT hooks into the runtime.
14587
14588         * mini.h: Bump AOT file format version.
14589         
14590         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14591         Fixes #72148.
14592
14593         * iltests.il: Add new test.
14594
14595 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14596
14597         * mini.c: fix typo.
14598
14599 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14600
14601         * mini.c: setup the statistical profiler in the thread attach
14602         callback to cope with the new single thread code.
14603
14604 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14605
14606         * mini-ppc.c: ensure we have enough room for the profiler
14607         calls (fixed bug#72084).
14608
14609 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14610
14611         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14612         it.
14613
14614 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14615
14616         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14617
14618 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14619
14620         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14621         to succesfully execute parrotbench).
14622         * ssapre.h: Likewise.
14623
14624 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14625
14626         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14627         variable for stores to method arguments (fixes a SSAPRE issue).
14628
14629 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14630
14631         * mini.c: handle value types in dup, fixes gen-112.cs.
14632
14633 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14634
14635         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14636         sequence for calls in dynamic methods to avoid thunks.
14637
14638 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14639
14640         * mini.c: correctly remove dynamic methods from the hashtable.
14641
14642 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14643
14644         * driver.c: Disabled SSAPRE until fix the bug that appears
14645         in IronPython's parrotbench.
14646
14647 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14648
14649         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14650
14651         * mini.c (mono_method_to_ir): Revert the previous change.
14652         
14653         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14654         when AOT compiling.
14655
14656         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14657         mono_jit_info_table_find () etc. when running under valgrind.
14658
14659         * inssel.brg: Fix warnings.
14660
14661         * mini-exceptions.c: Fix warnings.
14662
14663 2005-01-31  Martin Baulig  <martin@ximian.com>
14664
14665         * driver.c (compile_all_methods_thread_main): Don't try to compile
14666         generic methods or anything which has type parameters.
14667
14668 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14669
14670         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14671
14672         * TestDriver.cs: Add --verbose flags.
14673
14674         * graph.c ssa.c: Fix 64 bit warnings.
14675         
14676         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14677         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14678         Fix 64 bit warnings.
14679
14680         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14681         variable not spotted by gcc.
14682         
14683         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14684         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14685         X86_COMPARE_MEMBASE opcodes.
14686
14687         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14688
14689 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14690
14691         * *: MonoMethod->signature might be NULL now. You *MUST* use
14692         mono_method_signature.
14693
14694 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14695
14696         * driver.c (compile_all_methods_thread_main): Compile the methods
14697         without invoking cctors.
14698
14699 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14702         * basic-calls.cs: test for the above.
14703
14704 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14705
14706         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14707         MonoJitInfo changes.
14708
14709 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14710
14711         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14712         eagerly if it contains dynamic methods.
14713         
14714         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14715
14716         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14717         trace, it is now computed by an icall from trace_ips.
14718         
14719         * mini-exceptions.c: Fix a warning.
14720
14721 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14722
14723         * mini-exceptions.c: don't bother getting stack trace info if
14724         it's not going to be used.
14725
14726 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14727
14728         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14729         ssapre-mini-ops.h.
14730
14731 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14732
14733         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14734
14735         * aot.c: Avoid calling mono_method_get_header () if not needed.
14736
14737         * mini.h: Bump AOT file format version.
14738         
14739         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14740
14741         * mini.c (mono_print_tree): Print more info for calls.
14742
14743 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14744
14745         * declsec.h: Remove warning by adding missing include for marshal.h
14746
14747 2005-01-26  Martin Baulig  <martin@ximian.com>
14748
14749         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14750         `ip' twice.
14751
14752 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14753
14754         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14755         flags.
14756
14757         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14758
14759         * aot.c (mono_compile_assembly): Fix a warning.
14760
14761 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14762
14763         * declsec.c: Look for security attributes on the original MonoMethod 
14764         (and not the wrapped one). This fix permissions on icalls.
14765
14766 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14767
14768         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14769
14770         * mini.c (mono_allocate_stack_slots): Add a fixme.
14771
14772         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14773
14774 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14775
14776         * inssel.brg: optimize casts of sealed types (more
14777         optimizations waiting for fixes in remoting).
14778
14779 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14780
14781         * inssel.brg (stmt): Add another dummy rule.
14782
14783         * driver.c: Fix warnings.
14784
14785         * driver.c (mono_main): If running under valgrind, instruct glib to use
14786         the system allocation functions so valgrind can track the memory
14787         allocated by the g_... functions.
14788
14789         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14790
14791         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14792
14793         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14794
14795         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14796         variables in try regions.
14797
14798         * mini.c (mini_method_compile): Don't disable optimizations on large
14799         methods when AOT compiling.
14800
14801         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14802         allocate stack slots. Not yet used.
14803
14804 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14805
14806         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14807
14808 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14809
14810         * mini-ppc.c: make the branch info relative as the code
14811         buffer can be reallocated.
14812
14813 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14814
14815         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14816         * driver.c: Removed the AOT/security restriction. Now initialize the
14817         security manager (in metadata) if --security is used.
14818         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14819         rather than the pointer to declarative security, when AOT is used.
14820
14821 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14822
14823         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14824         basic blocks, reduced intrinsic exception throwing code size.
14825
14826 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14827
14828         * driver.c (mini_usage): Reorder the usage screen.
14829
14830 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14831
14832         * mini.c (mono_resolve_patch_target): Fix warning.
14833
14834 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14835
14836         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14837         previous patch.
14838
14839         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14840
14841         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14842         breaks the amd64 build.
14843
14844         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14845         register allocation. Fixes #71454.
14846
14847         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14848
14849         * arrays.cs: Add new regression test.   
14850
14851 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14852
14853         * ssapre.c: Turned usage of snprintf to GString.
14854         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14855         (I left it on by mistake in my previous commit).
14856
14857 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14860         on cond branch optimization (fixes bug# 71515).
14861
14862 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14863
14864         * abcremoval.c: Fixed bug 71062.
14865         * abcremoval.h: Likewise.
14866
14867 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14868
14869         * mini.c: Added a new functionality to optimize_branches, the removal
14870         of useless basic blocks, and fixed some problem in the removal of
14871         critical edges; some utility functions added for both purposes.
14872         * ssapre.c: Added complex expression support, and fixed bug 70637.
14873         * ssapre.h: Likewise.
14874         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14875         enabled in SSAPRE.
14876         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14877         * driver.c: Re-enabled SSAPRE.
14878
14879 2005-01-19  Martin Baulig  <martin@ximian.com>
14880
14881         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14882         the result of mono_get_method_constrained().
14883
14884 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14885
14886         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14887         manager.
14888
14889 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14890
14891         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14892         be detected.  Fixes #59296.
14893
14894 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14895
14896         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14897         which can happen. Fixes #71361.
14898
14899 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14900
14901         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
14902         manager.
14903
14904 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14905
14906         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14907         appdomain-unload.exe to fail.
14908         
14909         * mini.c: Fix some memory leaks.
14910
14911 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14912
14913         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14914         Fixed bug and sped up some codepaths.
14915
14916 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14917
14918         * mini.c: Fix some memory leaks.
14919
14920         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14921         conversion.
14922
14923         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14924
14925         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14926         #71320.
14927
14928         * iltests.il: Add regression test for #71320.
14929
14930 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14931
14932         * mini.c (mono_codegen): Fix installation of profiler hooks.
14933
14934         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
14935
14936 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14937
14938         * mini.h, mini.c, cfold.c: optimize access to enum
14939         readonly fields, too. Eval conditional branches if possible
14940         to perform unreachable code removal in more cases.
14941
14942 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
14943
14944         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
14945
14946         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
14947         code manager.
14948
14949         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
14950         WinXP DEP. Fixes #71244.
14951
14952 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
14953
14954         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
14955
14956 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14957
14958         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
14959
14960 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14961
14962         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
14963         changes.
14964
14965         * mini.h: Bump AOT version.
14966
14967         * mini.h (MonoCompile): Change exvar to a hash table.
14968
14969         * mini.c: Allocate a separate exvar for each handler block.
14970
14971         * mini.c: Get rid of the computation of filter_lengths, its not needed.
14972
14973         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
14974         ex var with the pending exception and only throw if the two are equal.
14975         Fixes #68552.
14976         
14977         * exceptions.cs: Add tests for rethrow and nested catch clauses.
14978
14979         * mini-x86.c: Fix warnings.
14980
14981         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
14982         used by all the ports now.
14983
14984         * aot.c: Add write-symbols and save-temps options.
14985
14986 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
14987
14988         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
14989
14990 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
14991
14992         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
14993         operations.
14994
14995         * tramp-s390.c: Check vtable slot belongs to the domain.
14996
14997         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
14998         as per other platforms.
14999
15000         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15001
15002 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15003
15004         * driver.c: we don't run the Main() code in a subthread anymore.
15005
15006 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15007
15008         * mini.c: added experimental rtc support in the statistical
15009         profiler: if the user has the permission, more accurate statistics
15010         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15011         The MONO_RTC value must be restricted to what the linux rtc allows:
15012         power of two from 64 to 8192 Hz.
15013
15014 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15015
15016         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15017
15018 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15019
15020         * mini-ppc.c: better icache flush for smp.
15021
15022 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15023
15024         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15025
15026         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15027         amd64 port, not yet used.
15028
15029 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15030
15031         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15032         a struct type.
15033
15034 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15035
15036         * driver.c: Added --security option to activate the security manager.
15037         Right now this will allow code generation for declarative demands and
15038         is disabled when AOT is specified.
15039         * mini.c: Add code generation for declarative security demands.
15040         * mini.h: Add mono_use_security_manager as an extern gboolean.
15041
15042 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15043
15044         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15045         emitting more dense assembly code.
15046
15047         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15048         exception throwing stuff.
15049
15050 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15051
15052         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15053         dead code.
15054
15055         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15056         left in by mistake.
15057
15058         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15059         fixed.
15060
15061         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15062
15063         * tramp-*.c: Only patch vtable slots if the object is in the current
15064         domain. Fixes appdomain-unload.exe.
15065
15066         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15067         
15068         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15069         x86 branch.
15070
15071 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15072
15073         * mini.c (reverse_branch_op): New helper function.
15074
15075         * mini.c (optimize_branches): Run the new optimization only on 
15076         platforms which support it. Also reverse all kinds of branches.
15077
15078         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15079
15080         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15081         a throw statement.
15082
15083         * mini.c (optimize_branches): Reverse not-equals branches if the false
15084         bblock is a throw. This happens a lot of time with argument checking in
15085         corlib.
15086
15087         * mini.c (mono_codegen): Add support for placing basic blocks after
15088         the function epilogue.
15089
15090         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15091         function epilogue.
15092         
15093 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15094
15095         * mini.c (setup_stat_profiler): Only set this up if the platform
15096         supports ITIMER_PROF.
15097
15098 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15099
15100         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15101         previous patch.
15102
15103         * inssel.brg: Fix a warning.
15104
15105 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.c: added support for statistical profiler 
15108         (run with: --profile=default:stat).
15109
15110 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15111
15112         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15113
15114         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15115
15116         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15117         related to global registers from the amd64 port.
15118
15119 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15120
15121         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15122
15123         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15124         with global registers.
15125         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15126
15127         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15128
15129 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15130
15131         * debug-mini.c (encode_value): Fix off-by-one.
15132
15133         * aot.c (encode_value): Likewise.
15134
15135         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15136
15137 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15138
15139         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15140         AOT.
15141
15142         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15143         
15144         * aot.c (emit_method_info): Increase size of temp buffer.
15145
15146         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15147         the AOT case.
15148
15149 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15150
15151         * aot.c (emit_method_info): Fix build.
15152         
15153         * aot.c: Further rework of the AOT file format to reduce the size of
15154         the method info data.
15155
15156         * mini.h: Bump AOT file format version.
15157
15158 2004-12-27  Martin Baulig  <martin@ximian.com>
15159
15160         * mini.c (mini_get_method): New static method; call
15161         mono_get_method_full() and mono_get_inflated_method().
15162         (mono_method_to_ir): Use mini_get_method() instead of
15163         mono_get_method_full(). 
15164
15165 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15166
15167         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15168
15169 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15170
15171         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15172
15173         * inssel-amd64.brg: Add some optimization rules.
15174
15175 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15176
15177         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15178         standard not GC'd stuff is fine.
15179
15180 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15181
15182         * aot.c: Rework the AOT file format to get rid of most of the global
15183         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15184
15185         * mini.h: Bump AOT file format version.
15186         
15187 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15188
15189         * mini.h: Bump AOT file format version.
15190
15191         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15192         address is inside a GOT.
15193
15194         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15195
15196         * cpu-pentium.md: Increase the maximum size of some instructions which
15197         might involve a got access.
15198         
15199         * mini.c (get_method_from_ip): Another debug helper function.
15200
15201         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15202         when got var accesses are created during the decompose phase.
15203
15204         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15205
15206         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15207         argument mini_compile_method and to MonoCompile, and use this to
15208         determine whenever a given method is compiled for AOT. This allows the
15209         other methods compiled during AOT compilation to be free of AOT stuff,
15210         so the backends does not need to add special support for them by
15211         creating a fake GOT etc.
15212
15213         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15214         longer needed.
15215
15216 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15217
15218         * mini.c (mono_method_to_ir): It turns out that some of the
15219         x-appdomain wrappers are lax with types, so just ignore this for
15220         all wrappers.
15221
15222         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15223         at the vtable->klass. If it is non-shared code we can just use the
15224         vtable.
15225
15226 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15227
15228         * mini-ppc.c: access MonoDomain from tls, too.
15229
15230 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15231
15232         * declsec.c: Removed unused variable (and related warning ;-)
15233
15234 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15235
15236         * iltests.il: New test for LDELEMA on an array of ref types.
15237
15238         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15239         all ldelema's on reftypes.
15240         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15241         it was the wrong place to put it.
15242
15243         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15244         register to pop to make this cleaner, at the request of Paolo.
15245
15246 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15247
15248         * mini-ops.h (OP_GETHASHCODE): New op.
15249
15250         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15251
15252         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15253         operation.
15254
15255         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15256         by 25%.
15257         
15258         * mini-x86.c (mono_arch_output_basic_block): Rather than
15259
15260         add ebp, 4
15261
15262         Emit
15263
15264         pop edx
15265
15266         The first is 3 bytes while the second is 1. This saves 36 kb on
15267         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15268         see a small boost because of icache locality.
15269
15270         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15271
15272 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15273
15274         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15275         started code sharing with the generic code.
15276
15277 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15278
15279         * mini-ppc.c, cpu-g4.md: added code for direct access to
15280         tls data slots.
15281
15282 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15283
15284         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15285          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15286         to OP_TLS_GET.
15287
15288 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15289
15290         * declsec.c|h: Added functions to cache the declarative stack modifiers
15291         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15292         structure.
15293         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15294         created. Register internal calls for System.Security.SecurityFrame::
15295         _GetSecurityFrame and _GetSecurityStack.
15296         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15297         the definitions for the new stack walk/callback mechanism.
15298         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15299         first security frame for LinkDemands and InheritanceDemands) and
15300         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15301         from lupus.
15302         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15303         walk initialization (lupus).
15304
15305 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15306
15307         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15308         idiom.
15309         (handle_loaded_temps): Do not create a temporary variable for
15310         things that we know are temps. They will never be modified.
15311         (mono_spill_call): Set MONO_INST_IS_TEMP
15312         (mono_emulate_opcode): ditto
15313         (emit_tree): ditto
15314         (mono_method_to_ir.CEE_DUP): ditto
15315
15316 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15317
15318         * mini.c (type_to_eval_stack_type): Make this handle the void type
15319         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15320         (emit_tree): use ip_in_bb to special case some common idioms
15321         Update all callers to pass in the IP.
15322         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15323
15324         This gives us a nice 2% speedup in mcs bootstrap.
15325
15326         * mini-x86.c (peephole_pass): Peephole pass to make
15327         mov  [foo], eax
15328         push [foo]
15329
15330         into
15331
15332         mov [foo], eax
15333         push eax
15334
15335         * mini.c (ip_in_bb): new method.
15336         (mono_method_to_ir): use this method rather than doing the hash
15337         lookup ourselves.
15338
15339         * linear-scan.c (mono_linear_scan): When expiring actives, you
15340         don't need to keep around variables that expire on this
15341         instruction. This makes it so that:
15342              a = b + 1
15343         will turn into:
15344              store (ebx add (ebx, 1))
15345         which will become
15346              add ebx, 1
15347
15348 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15349
15350         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15351         combination to avoid doing two copies. Fix up problems with previous
15352         patch.
15353
15354         * mini.c: Fix 64 bit warnings.
15355
15356         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15357
15358 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15359
15360         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15361         changes from the x86 code.
15362
15363         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15364
15365 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15368         throwing code to reduce its size, unify the AOT and non-aot code and 
15369         get rid of relocations in the AOT case.
15370
15371         * mini-x86.h mini.c exceptions-x86.c 
15372         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15373         raise corlib exceptions which doesn't require relocations in the 
15374         caller.
15375
15376         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15377
15378 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15379
15380         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15381         needed.
15382
15383         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15384         in the AOT case.
15385
15386 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15387
15388         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15389         with add function when used from Inc/dec atomic 
15390         functions. Re-enabled optimization on x86.
15391         * mini-ops.h: renamed atomic_add functions to
15392         allow _add to match the Interlocked::Add and
15393         _add_next to match Interlocked::Inc/Dec.
15394
15395 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15396
15397         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15398         linking of BBs to the end BB, and enabled SSAPRE also with
15399         consprop and copyprop (which was prevented by that bug).
15400
15401 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15402
15403         * mini-x86.c: disabling the Interlocked optimizing code. 
15404
15405 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15406
15407         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15408         file version check.
15409         
15410 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15411
15412         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15413         interlocked optimization due lack of support on x86, rewrote 
15414         exchange to take into account that base may be in eax.
15415         
15416         xsp works again; activated Interlocked optimizing code.
15417         
15418 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15419
15420         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15421
15422 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15423
15424         * mini-ops.h: Add new opcodes.
15425
15426         * mini.h: Add new patch types. Add got_var to MonoCompile.
15427
15428         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15429         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15430         make it work with all kinds of patchable code.
15431
15432         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15433         address of the GOT, and referencing entries in the GOT.
15434
15435         * mini.c: Add code to load the GOT address if needed by an opcode.
15436
15437         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15438         independent AOT code on the x86 using an elf-style Global Offset Table.
15439
15440 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15441
15442         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15443
15444 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15445
15446         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15447         when running xsp.
15448
15449 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15450
15451         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15452         of Interlocked:Increment/Decrement/Add as inline ops.
15453         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15454
15455 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15456
15457         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15458         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15459
15460 2004-12-12  Duncan Mak  <duncan@ximian.com>
15461
15462         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15463         again. `patch_info->table_size' is no longer valid after Zoltan's
15464         commit #37636.
15465
15466 2004-12-12  Martin Baulig  <martin@ximian.com>
15467
15468         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15469         if we are the "real" method, ie. not an inlined method inside it.
15470
15471 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15472
15473         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15474         before we look in the special fields table. This fixes
15475         ../tests/thread-static-init.cs.
15476
15477 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15478
15479         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15480         for Array get_Rank and get_Length. Fixes bug #70465.
15481
15482 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15483
15484         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15485         separate structure to reduce the size of MonoJumpInfo.
15486
15487 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15488
15489         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15490
15491 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15492
15493         * mini.c (mini_get_inst_for_method): Changed to allow ports
15494         to return a MonoInst instead of opcode 
15495         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15496         
15497         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15498         Allow ports to return a created MonoInst instead of op-code, will enable
15499         new optimizations.
15500         (renamed mini_get_opcode_for_method to better reflected the functionality)
15501
15502 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15503
15504         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15505
15506 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15507
15508         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15509         Fixes #69985.
15510
15511 2004-12-08  Martin Baulig  <martin@ximian.com>
15512
15513         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15514         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15515
15516 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15517
15518         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15519         correctly.
15520
15521         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15522         arithmetic.
15523
15524 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15525
15526         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15527
15528 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15529
15530         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15531         bug introduced by the previous patch.
15532
15533 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15534
15535         * mini-ppc.c, objectc.cs: handle large structs passed by value
15536         (fixes bug #69972).
15537
15538 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15539
15540         * mini-ppc.c: OP_ARGLIST implementation from
15541         Geoff Norton  <gnorton@customerdna.com>.
15542
15543 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15544
15545         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15546         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15547
15548 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15549
15550         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15551
15552 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15553
15554         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15555         support.
15556
15557 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15558
15559         * mini-sparc.c: Zero out localled-ed memory.
15560
15561         * iltests.il: Add tests for zeroing out localloc-ed memory.
15562
15563 2004-12-04  Martin Baulig  <martin@ximian.com>
15564
15565         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15566         mono_method_get_signature_full().       
15567
15568 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15569
15570         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15571         and some utility functions (always for SSAPRE), integrated SSAPRE.
15572         * mini.h: Likewise.
15573         * driver.c: Added ssapre option.
15574         * ssa.c: Small fix on OP_ARG handling.
15575         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15576         * Makefile.am: Likewise.
15577
15578 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15579
15580         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15581         now in the xp code.
15582
15583         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15584         icall.
15585
15586 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15587
15588         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15589         
15590         * cpu-s390.md : Increase instruction length of oparglist.
15591
15592         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15593
15594 2004-11-30  Martin Baulig  <martin@ximian.com>
15595
15596         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15597         virtual generic methods.  We call a special helper_compile_generic_method()
15598         icall to retrieve the method from the vtable, inflate and compile
15599         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15600
15601         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15602
15603 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15604
15605         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15606
15607 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15608
15609         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15610         Fixes #69929.
15611
15612 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15613
15614         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15615         platforms with PIC aot.
15616
15617 2004-11-28  Martin Baulig  <martin@ximian.com>
15618
15619         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15620         Fixes gen-112.cs.
15621
15622 2004-11-28  Martin Baulig  <martin@ximian.com>
15623
15624         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15625         the result of mono_type_get_underlying_type() to check whether
15626         we're byref.
15627
15628 2004-11-26  Martin Baulig  <martin@ximian.com>
15629
15630         * mini.c
15631         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15632         in the g_assert().
15633
15634 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15635
15636         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15637         the same way as the other arguments so they won't get clobbered.
15638
15639         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15640         calls through R11 since it is clobbered by the trampoline code.
15641
15642 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15643
15644         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15645         pick up in-tree mscorlib.dll.
15646
15647 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15648
15649         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15650
15651         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15652         runtime data/code are now stored in a table similar to the GOT in ELF. 
15653         This allows the code itself to be position independent.
15654
15655         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15656         loading changes.
15657
15658         * aot.c: Attach ELF type (object/function) directives to all global
15659         symbols.
15660
15661         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15662
15663         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15664
15665         * mini-amd64.h: Turn on PIC AOT code.
15666
15667         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15668         returning the offset within an OP_AOTCONST instruction where the GOT
15669         offset needs to be added.
15670
15671         * mini.h: Bump AOT file format version.
15672
15673 2004-11-25  Martin Baulig  <martin@ximian.com>
15674
15675         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15676         uninflated generic methods.
15677
15678 2004-11-25  Martin Baulig  <martin@ximian.com>
15679
15680         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15681
15682 2004-11-24  Martin Baulig  <martin@ximian.com>
15683
15684         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15685         original klass (this only applies for generic instances).
15686
15687 2004-11-24  Martin Baulig  <martin@ximian.com>
15688
15689         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15690         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15691         that array).
15692
15693 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15694
15695         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15696         localloc. Fixes #69678.
15697
15698         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15699         
15700 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15701
15702         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15703         used SSE registers on pinvoke calls. Fixes #69774.
15704
15705 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15706
15707         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15708         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15709
15710 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15711
15712         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15713         Refer directly to the mcs/ tree.
15714
15715 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15716
15717         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15718         Check if a trampoline for a synchronized method is required. 
15719
15720 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15721
15722         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15723         with localloc if needed. Throe arithmetric exception in
15724         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15725         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15726
15727 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15728
15729         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15730         types before switching on type.  Fixes #69622.
15731
15732 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15733
15734         * Makefile.am (check-local): New.  Integrate into 'make check'.
15735         (MCS,RUNTIME): Define using in-tree mono and mcs.
15736         (ILASM): New.
15737         (%.exe): Use $(ILASM).
15738
15739 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15740
15741         * mini-ppc.c: adjust initial prolog size (bug #69691).
15742
15743 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15744
15745         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15746         #69664.
15747
15748 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15749
15750         * Makefile.am (clean-local): Rename from 'clean'.
15751
15752 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15753
15754         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15755         to mono_arch_is_int_overflow. 
15756         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15757         SIGFPE events.
15758
15759 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15760
15761         * declsec.c|h: New files to support declarative security attributes.
15762         Added function to check if a method has (applicable) security.
15763         * mini.c|h: Add check for declarative security attributes in
15764         mono_method_check_inlining.
15765         * Makefile.am: Added declsec.c and declsec.h to the build.
15766
15767 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15768
15769         * mini.c, mini.h: update to keep dynamic code info per-domain.
15770
15771 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15772
15773         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15774         (mini_init): Get rid of it from here too.
15775
15776 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15777
15778         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15779         implemented OP_RETHROW (patch by Geoff Norton
15780         <gnorton@customerdna.com>).
15781
15782 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15783
15784         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15785         between appdomains.  Fixes appdomain-unload on PPC.
15786
15787 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15788
15789         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15790         mini-exceptions.c: handle the new wrapper types.
15791         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15792         token value as a MonoClass* when compiling a wrapper.
15793         mono_jit_create_remoting_trampoline now takes an additional
15794         MonoRemotingTarget parameter.
15795         
15796 2004-11-10  Martin Baulig  <martin@localhost>
15797
15798         * mini.c (mono_method_to_ir): Use `generic_container->context'
15799         rather than creating a new one.
15800
15801 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15802
15803         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15804
15805         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15806
15807 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15808
15809         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15810         the experimental aot cache stuff.
15811
15812 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15813
15814         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15815         mini-exceptions.c: update to exception clause structure changes.
15816
15817 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15818
15819         * exceptions-x86.c (throw_exception): Fix warnings.
15820
15821         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15822         for OP_RETHROW.
15823
15824 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * exceptions-sparc.c (get_throw_exception): Really fix this.
15827
15828 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15829
15830         * tramp-*.c: we no longer support icalls without wrappers, so
15831         a bit of code can be removed here
15832
15833 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15834
15835         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15836         patch.
15837
15838         * cpu-sparc.md: Add op_rethrow.
15839
15840         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15841
15842         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15843
15844         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15845         * mini-ops.h: Add OP_RETHROW.
15846
15847         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15848
15849         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15850
15851 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15852         
15853         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15854         Makes the output much easier to read
15855
15856 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15857
15858         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15859         prevents another huge leak when compiling with ssa. Secondly, the
15860         performance of doing this rather than freeing the lists is much
15861         better. GList does a lock every time you allocate a list link,
15862         so that it can use a memory pool. So, it is better to just use
15863         a memory pool of our own.
15864         
15865         * ssa.c, linear-scan.c: replace g_list_remove_link with
15866         g_list_delete.  The remove one does not free the GList, so we were
15867         leaking memory. On -O=all --compile-all with corlib, this cut down
15868         3 MB of allocations.
15869
15870 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15873
15874         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15875
15876         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15877         into a new function mono_create_jit_trampoline ().
15878
15879 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15880
15881         * trace.c (get_spec): Allow tracing of classes without a namespace.
15882
15883 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15884
15885         * mini.c: Fix pointer overwrite in mini_method_compile.
15886
15887 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15888
15889         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15890         The darwin ABI needs some special handling for 1 and 2 byte structs
15891         Lets use lbz/lhz instead of lwz everywhere.
15892         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15893         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15894         Use stb/sth for the former, and put the latter always on stack instead of in
15895         argument registers.
15896
15897 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15898
15899         * trace.c (is_filenamechar): Add '_'.
15900
15901 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
15902
15903         * mini-s390.c: Fix prolog length to allow for large trace requirements.
15904
15905         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15906
15907 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15908
15909         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15910         depends on libmonogc. Fixes #68805.
15911
15912 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15913
15914         * mini.c (mono_jit_free_method): Provide extra information for
15915         this error.  Currently this leaks, but will be turned into a
15916         developer option in the future.
15917
15918 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15919
15920         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15921
15922 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15923
15924         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15925         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15926         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15927
15928 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15929
15930         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15931         trampolines for AOT code.
15932
15933 2004-10-22    <vargaz@freemail.hu>
15934
15935         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
15936         constructed types. Fixes #68136.
15937
15938 2004-10-21  Martin Baulig  <martin@ximian.com>
15939
15940         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
15941         if it returns true, unwind the stack to the call instruction.
15942
15943 2004-10-21    <vargaz@freemail.hu>
15944
15945         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
15946
15947         * mini.h: Bump AOT version number.
15948
15949         * objects.cs: Add another test for unbox trampolines.
15950
15951         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
15952         valuetype methods.
15953
15954 2004-10-20    <vargaz@freemail.hu>
15955
15956         * driver.c: Add SHARED to the set of optimizations tested.
15957
15958         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
15959
15960         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
15961         used by CEE_NEWARR.
15962
15963         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
15964
15965 2004-10-20  Martin Baulig  <martin@ximian.com>
15966
15967         * mini-exceptions.c (mono_handle_exception): Call
15968         mono_debugger_handle_exception() to tell the debugger about
15969         catch/finally clauses.
15970
15971 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15972
15973         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
15974
15975         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
15976         #68447.
15977
15978 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
15979
15980         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
15981         methods as their native size, fixed bug #57543, #57545.
15982         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
15983         This saves a temporary register and mullw call down into 1 (minor perf
15984         increase for cases like sum = sum * 5;  This use to translate into:
15985             li r11,5
15986             mullw r28,r28,r11
15987         It now translates to
15988             mulli r28,r28,5
15989
15990 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
15991
15992         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
15993         #68388.
15994
15995 2004-10-11  Martin Baulig  <martin@ximian.com>
15996
15997         * mini.c (mono_method_to_ir): If we're a generic method, get the
15998         MonoGenericContainer from our MonoMethodNormal and create a
15999         MonoGenericContext from it.
16000
16001 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16002
16003         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16004
16005         * basic-long.cs: Add test for checked i8->i2 cast.
16006
16007 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16008
16009         * inssel-ppc.brg: added a couple of speedup rules.
16010
16011 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16012
16013         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16014         to speed up rebuilds.
16015
16016 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16017
16018         * mini-s390.c: Minor fix to OP_OR_IMM.
16019
16020 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16021
16022         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16023         better. Fixes appdomain-unload.exe on sparc.
16024
16025 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16026
16027         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16028         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16029         see bug 67324.
16030
16031 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16034
16035 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16036
16037         * mini.c: Always generate a field read/write wrapper for members
16038         of the class MarshalByRefObject since the actual instance could
16039         be a CBO.
16040
16041 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16042
16043         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16044
16045 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16046
16047         * driver.c mini.h trace.c: Move the setting of the main assembly into
16048         a separate function called mono_trace_set_assembly () and call it after
16049         actually loading the main assembly. Fixes #66872.
16050
16051 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16052
16053         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16054         using the code manager.
16055
16056 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16057
16058         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16059
16060 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16061
16062         * cpu-amd64.md: Fix bug in previous patch.
16063         
16064         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16065         #66650.
16066
16067 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16068
16069         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16070         mini-exceptions.c: updates for changed stack walk interface.
16071
16072 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16073
16074         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16075
16076 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16077
16078         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16079
16080 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16081
16082         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16083         since assemblies can't be unloaded.
16084         
16085 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * cpu-amd64.md: Fix more instruction lengths.
16088
16089         * cpu-amd64.md: Fix lengths of some instructions.
16090
16091 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16092
16093         * inssel.brg: Make the array ldelema check aot friendly.
16094
16095 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16096
16097         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16098
16099         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16100
16101 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16102
16103         * mini-x86.c: Fix build.
16104
16105         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16106         mono_type_get_underlying_type () helper function to simplify code.
16107         
16108 2004-09-09  Martin Baulig  <martin@ximian.com>
16109
16110         * mini-amd64.c: Don't access `type->data.klass' directly, call
16111         mono_class_from_mono_type() instead since the type may be a
16112         generic instance.
16113
16114 2004-09-09  Martin Baulig  <martin@ximian.com>
16115
16116         * mini-amd64.c (get_call_info): Fix support for generic instances.
16117         (add_valuetype): Use mono_class_from_mono_type() to get the class
16118         since we can be a generic instance.
16119
16120 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16121
16122         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16123
16124 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16125
16126         * liveness.c: reset spill costs on each scan: bug 62107
16127
16128 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16129
16130         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16131         unnecessary line that doesn't compile
16132
16133 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16134
16135         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16136         trampolines, make them call an error function so people can fix their
16137         code.
16138
16139 2004-09-06  Martin Baulig  <martin@ximian.com>
16140
16141         * mini.c (mono_method_to_ir): When initializing locals, handle a
16142         generic instances like a valuetype if it's a valuetype and like a
16143         class if it's a class.
16144
16145 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16146
16147         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16148         stack. Fixes #64674.
16149
16150         * exceptions.cs: Add test for unwinding of call arguments.
16151
16152 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16153
16154         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16155         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16156         set the carry/borrow flag). The sparc and s390 implementations
16157         can now use optimized versions (and simplify the code). ppc bugfixes.
16158
16159 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16160
16161         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16162
16163 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * inssel-amd64.brg: Remove leftover 32 bit rule.
16166
16167         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16168
16169 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16170
16171         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16172         mono_arch_find_jit_info functions into a new function. Fix a memory
16173         leak.
16174
16175         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16176         refactored code.
16177         
16178 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16179
16180         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16181         as well.
16182         
16183         * exceptions.cs: Add array size tests.
16184
16185         * mini.c: Allocate a separate icall wrapper for each arity of 
16186         mono_array_new_va. Fixes #59509.
16187
16188         * exceptions.cs: Add testcase for 64578.
16189
16190         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16191
16192         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16193         
16194 2004-09-02  Martin Baulig  <martin@ximian.com>
16195
16196         * mini.c (mono_method_to_ir): When initializing the locals, call
16197         handle_initobj() on the generic instance itself, not its
16198         underlying type.
16199
16200 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16203         MonoJitInfo for dynamic methods.
16204
16205         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16206
16207         * mini.c: Add support for freeing JIT data for dynamic methods.
16208         
16209 2004-09-01  Martin Baulig  <martin@ximian.com>
16210
16211         * mini-x86.c (is_regsize_var): Added support for generic
16212         instances.
16213         (mono_arch_emit_prolog): Make this compile again, use
16214         `x86_push_imm_template (code)'.
16215
16216 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16217
16218         * mini-x86.c: make all push_imm instructions that get
16219         patched always emit the long form
16220
16221 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16222
16223         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16224         in a per-domain hash.
16225
16226         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16227         types.
16228
16229 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16230
16231         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16232         work.
16233         
16234         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16235         work.
16236
16237         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16238         Beginnings of SSE2 support.
16239
16240         * exceptions.cs: Add more tests for checked int<->uint casts.
16241
16242 2004-08-28  Martin Baulig  <martin@ximian.com>
16243
16244         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16245         generic instances.
16246
16247         * mini.c
16248         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16249         Handle generic instances recursively.
16250
16251 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16252
16253         * iltests.il: test for conv.u8 on a constant
16254
16255 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16256
16257         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16258         LCONV_x4 (shrun_32 (membase)).
16259
16260 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16261
16262         * inssel-x86.brg: c&p rules for push/setret of long
16263
16264 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16265
16266         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16267         compare (regvar, base)
16268
16269         * inssel-x86.brg: more burg love
16270
16271         * inssel.brg: more cleanup
16272
16273         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16274
16275 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16276
16277         * basic-long.cs, basic-calls.cs: new tests for optimization.
16278
16279 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16280
16281         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16282         patch.
16283
16284 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16287         
16288 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16289
16290         * inssel.brg (mini_emit_memcpy): use 
16291         NO_UNALIGNED_ACCESS to disable memcpy optimization
16292
16293 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * mini-amd64.c: Handle generic types in various places.
16296
16297         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16298
16299 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16300
16301         * mini.c (handle_box): Fix warning.
16302
16303         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16304
16305         * mini-amd64.h: Enable the emit_state optimization.
16306
16307         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16308
16309         * mini-amd64.c: Add some new 64 bit peephole opts.
16310
16311         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16312
16313         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16314
16315         * mini-amd64.c: Register allocator fixes.
16316
16317         * mini.c: Add an optimization to emit_state to avoid allocation of new
16318         registers on some platforms.
16319
16320 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16321
16322         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16323
16324         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16325         allocation. Fixes #63085.
16326
16327         * basic-long.cs: Add new regression test.
16328
16329         * mini-amd64.c: Register allocator improvements.
16330
16331 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16332
16333         * mini-amd64.c (read_tls_offset_from_method): Add another code
16334         sequence.
16335
16336         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16337         instruction sequence for nullifying class init trampolines.
16338
16339         * objects.cs: Add new regalloc test.
16340
16341         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16342
16343 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16344
16345         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16346         
16347         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16348         arguments.
16349
16350         * driver.c: Fix profiling after TLS changes.
16351         
16352         * driver.c (mono_main): Set mono_stats.enabled if needed.
16353
16354         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16355         CEE_BOX.
16356
16357 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16358
16359         * mini-x86.c: use a 1 op rather than a 2 op tls access
16360         instruction -> faster.
16361
16362 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16363
16364         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16365         x86 backend.
16366
16367 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16368
16369         * exceptions-sparc.c (throw_exception): fix typo
16370
16371 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16372
16373         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16374         set tree->dreg correctly with tls. Allow any
16375         register to be used.
16376
16377         * mini-x86.c (read_tls_offset_from_method): add new code
16378         generation pattern seen with GCC.
16379
16380
16381 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16382
16383         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16384         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16385         exceptions-sparc.c: fix some performance issues in exception
16386         handling and setting of the stack trace for exceptions that were
16387         already thrown.
16388
16389 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16390
16391         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16392         x86 backend.
16393         
16394         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16395         registers.
16396
16397 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16398
16399         This patch inlines tls access, when possible.
16400         
16401         * mini.h: new arch functions for TLS intrinsics.
16402         All platforms updated with a stub.
16403
16404         * mini.c: use the new intrinsics
16405
16406         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16407         arch specific intrinsic for tls variables
16408
16409 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16410
16411         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16412         under windows.
16413
16414 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16415
16416         * mini.c: thread local allocation
16417
16418 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16419
16420         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16421
16422         * Makefile.am: Link against the static version of libmonogc.
16423         
16424         * Makefile.am: Link the static versions of the convenience libraries
16425         into the mono executable.
16426
16427         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16428
16429 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16430
16431         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16432         on integer overflow.
16433
16434         * mini-amd64.c: Reorganize function call code.
16435
16436         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16437
16438 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16439
16440         * inssel-x86.brg: use xor eax,eax.
16441         
16442         * basic.cs: new tests
16443
16444 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16445
16446         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16447         in exception throwing code.
16448         
16449 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16450
16451         * inssel-x86.brg: use xor esi,esi.
16452
16453 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16454
16455         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16456         can trace methods compiled during mini_init () too.
16457
16458         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16459         CEE_CONV_U4.
16460
16461 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16462
16463         * Makefile.am: static link on x86 (r=zoltan)
16464
16465 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16466
16467         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16468         code since it causes some programs to fail.
16469
16470 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16471
16472         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16473
16474 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16475
16476         * mini.c: ovfops_op_map - add STACK_OBJ case for
16477         CONV_I 
16478         * basic.cs: add test_0_pin_string as test
16479         case for above.
16480
16481 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16482
16483         * Makefile.am: build C# if srcdir != builddir
16484
16485 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16486
16487         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16488         fall-through blocks.
16489
16490 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16491
16492         * driver.c: enable loop by default again and include abcrem in -O=all.
16493
16494 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16495
16496         * iltests.il: Add some localloc tests.
16497
16498         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16499
16500         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16501         Fixes #62574.
16502
16503         * inssel-amd64.brg: Add some optimizations.
16504
16505         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16506         for gcc-3.4.
16507
16508         * Makefile.am: Statically link mono against libmono on AMD64.
16509         
16510         * mini-amd64.c inssel-amd64.brg: Optimizations.
16511
16512 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16513
16514         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16515
16516         * tramp-amd64.c: Patch calling code in trampolines.
16517
16518 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * mini-amd64.c: pinvoke struct passing fixes.
16521
16522 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16523
16524         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16525         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16526
16527 2004-08-05  Duncan Mak  <duncan@ximian.com>
16528
16529         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16530         CEE_LDELEM_ANY.
16531
16532 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16533
16534         * mini-amd64.c (emit_move_return_value): Move return value for normal
16535         calls too.
16536
16537 2004-08-05  Martin Baulig  <martin@ximian.com>
16538
16539         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16540         `type->type'; just modify `type' itself when dealing with enums
16541         and generic instances.
16542         (check_call_signature): Make `simple_type' a `MonoType *'.
16543
16544 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16545
16546         * mini.c: Use OP_PADD to add offsets to addresses.
16547
16548         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16549
16550 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16551
16552         * mini-sparc.c (mono_arch_emit_epilog): fix check
16553         for folding last op into restore instruction
16554
16555 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16558         helper methods using the code manager.
16559         
16560         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16561
16562         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16563
16564 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16565         
16566         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16567           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16568
16569         * mini-s390.c: fix tail processing
16570
16571 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16572
16573         * mini-ppc.c: mul.ovf.un exception name fix.
16574
16575 2004-08-03  Martin Baulig  <martin@ximian.com>
16576
16577         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16578         instances; before jumping to `handle_enum', also modify `ptype'.
16579
16580 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16581
16582         * cpu-sparc.md: fcall maximal length too small.
16583
16584 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16585
16586         * mini-amd64.c mini.h: Add initial support for passing/returning 
16587         structures to/from pinvoked methods.
16588
16589 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16590
16591         * mini-ppc.c: reg allocator fix.
16592
16593 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16596
16597         * inssel.brg: Optimize memset on 64 bit machines.
16598
16599         * mini-amd64.c: Fix some vararg cases.
16600
16601 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16602
16603         * mini-s390.c: Corrected macro in emit_float_to_int
16604
16605         * s390-abi.cs: Tests to exercise the s390 ABI
16606
16607 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16610         caller saved regs.
16611
16612         * basic.cs: Add a test for add.ovf.un.
16613
16614 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16615
16616         * mini-sparc.c: add case for OP_IDIV_UN
16617
16618 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16619
16620         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16621         
16622         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16623
16624 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16625
16626         * basic.cs: regression tests.
16627
16628         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16629         regressions.
16630
16631 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * basic.cs: Add a new test.
16634
16635         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16636         and AOT. Various fixes and optimizations.
16637
16638         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16639
16640 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16641
16642         * mini-ppc.c: make sure temp regs are not used for global reg
16643         allocation.
16644
16645 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16646
16647         * cpu-sparc.md: conv_i8 fix for 64bits
16648
16649         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16650
16651 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16652         
16653         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16654         add opcode for cmp BYTE PTR [eax], imm.
16655
16656         * inssel.brg: Make memcpy and memset takes bases.
16657
16658 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16659
16660         * *-amd64.*: More AMD64 work.
16661         
16662 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16663
16664         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16665         add a compare-not-equal opcode.
16666         
16667 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16668
16669         * mini.c: Use mono_init_from_assembly instead of mono_init.
16670         
16671 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16672
16673         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16674
16675         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16676
16677         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16678
16679         * inssel.brg: 64 bit fixes.
16680
16681         * mini.h (MonoCallInst): Add some AMD64 specific data.
16682
16683         * mini.h: Add some OP_P opcodes.
16684
16685 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16686
16687         * basic.cs: tests for 61797 and 61740
16688
16689 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16690
16691         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16692         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16693
16694 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16697
16698         * *-amd64*.*: Ongoing AMD64 work.
16699
16700 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16701
16702         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16703
16704         * *-amd64*: Ongoing AMD64 work.
16705
16706         * mini-arch.h: Add AMD64 support.
16707
16708         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16709
16710         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16711
16712         * mini-ops.h: Add new opcodes.
16713
16714         * Makefile.am: Add AMD64 support.
16715
16716         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16717         rules into the inssel-long*.brg files.
16718
16719         * *-amd64.*: Add beginnings of AMD64 backend.
16720
16721 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16722
16723         * mini.c (print_dfn): commenting out the code that prints
16724         the cil. With -O=deadce, this makes -v -v crash.
16725         
16726         * cpu-pentium.md: make checkthis have a length of 2
16727
16728 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16729
16730         * mini-sparc.h: fix implementations of __builtin
16731         functions for Sun compiler for V9.
16732
16733 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16734
16735         * mini.c: use the new stelem.ref wrapper
16736         * exceptions.cs, arrays.cs: new stelem.ref tests
16737
16738 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16739
16740         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16741         new XSP should work with these changes).
16742
16743 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16744         
16745         * inssel-{long32,x86,}.brg: trivial optimizations.
16746         
16747 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16748
16749         * mini.c: load value when emitting box operation in
16750         constrained calls.
16751
16752 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16753
16754         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16755         is one byte shorter than cmp DWORD PTR [eax], 0.
16756
16757 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16758
16759         * inssel-ppc.brg: arguments on the stack are always
16760         relative to the stack pointer (spotted by Neale Ferguson).
16761
16762 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16763
16764         * exceptions-x86.c: delay appending the method name to the trace until
16765         after mono_jit_info_table_find is called, as this gets the real
16766         MonoMethod.
16767
16768 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16769
16770         * aot.c: register roots
16771
16772 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16773
16774         * aot.c : I could just use PLATFORM_WIN32 flag.
16775
16776 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16777
16778         * aot.c : Reverting the previous fix. This time it broke linux build.
16779
16780 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16781
16782         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16783
16784 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16785
16786         * mini.c (handle_stack_args): Remove some more debugging code.
16787         
16788         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16789
16790         * driver.c mini.h aot.c: Allow additional options to be specified with
16791         --aot and pass them to mono_compile_assembly.
16792
16793         * aot.c: Add experimental code to AOT compile all loaded assemblies
16794         on demand and save the code into a cache in the filesystem.
16795
16796         * aot.c: Add support for more wrapper methods.
16797         
16798         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16799         58863.
16800
16801         * cpu-*.md: Remove removed opcodes.
16802
16803         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16804         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16805         related icalls to marshal.c.
16806
16807 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16808
16809         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16810
16811         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16812
16813         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16814
16815 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16816         * liveness.c: If liveness is recomputated we need to reset the information
16817         for each variable. This way, if the liveness range has been narrowed
16818         by optimizations that happened after the last computation, we can return
16819         a smaller range.
16820         
16821         For example, if you have
16822         
16823         {
16824                 int i = 0;
16825                 
16826                 // Tons of code that does not affect i
16827                 
16828                 i = foo ();
16829                 ...
16830         }
16831         
16832         i = 0 is dead code and will be removed by SSA. However, when
16833         linear scan gets to the code, i will still appear to be live
16834         throughout the entire block. This prevents good register allocation.
16835
16836 2004-07-06  Martin Baulig  <martin@ximian.com>
16837
16838         * debug-mini.c (mono_debug_init_method): Allow
16839         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16840         (mono_debug_add_icall_wrapper): New method.
16841
16842         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16843
16844 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16847         optimization.
16848
16849 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16850
16851         * aot.c (mono_aot_load_method): Fix loading of debug info.
16852
16853 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16854
16855         * aot.c: Add logging support.
16856
16857 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16858
16859         * mini.h: Add prototype for mono_print_method_from_ip.
16860
16861         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16862
16863         * inssel.brg: 64 bit fixes.
16864
16865         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16866         inssel-long32.brg.
16867
16868         * Makefile.am: Add SPARC64 support.
16869
16870 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * aot.c: Fix alignment problems on 32 bit platforms.
16873
16874 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16875
16876         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16877         SPARC64.
16878
16879         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16880         problems.
16881
16882         * mini.h: Bump AOT file version. Some 64 bit fixes.
16883
16884 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * inssel-sparc.brg: Add new rule to avoid register moves.
16887
16888         * inssel.brg: Add ldind_to_load_membase helper function.
16889
16890 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16891
16892         * mini.c: OffsetToStringData intrinsic.
16893         
16894 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16895
16896         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16897
16898         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16899         regression tests.
16900
16901         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
16902 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16903
16904         * mini.c: reinstated mono_compile_get_interface_var()
16905         on x86, too, since the change breaks the Gtk# build there as well.
16906
16907 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16908
16909         * driver.c: remove loop from the default optimizations: it seems to
16910         interact badly with some of the other options (see bug #60613).
16911
16912 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16913
16914         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16915         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16916
16917 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16918
16919         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16920         vararg-using methods.
16921
16922 2004-06-21  Martin Baulig  <martin@ximian.com>
16923
16924         * mini/mini-exceptions.c
16925         (mono_handle_exception): Added `gpointer original_ip' argument.
16926         After calling mono_unhandled_exception(), call
16927         mono_debugger_unhandled_exception() and if that returns true,
16928         restore the context and return.
16929
16930 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16931
16932         * mini-ppc.c: prefer the use of relative branches so
16933         they won't need to be patched in aot code (patch from Patrick Beard).
16934
16935 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16936
16937         * aot.c: patch from Patrick Beard to make the output assembly
16938         more correct for the MacOSX assembler. Small tweak to
16939         generate sane images on Linux/PPC, too.
16940
16941 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16942
16943         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
16944         case until bug #59509 is fixed (shows up in #60332).
16945
16946 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16947
16948         * mini.c: make sure the needed wrappers are compiled, too, with
16949         precomp.
16950
16951 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
16952
16953         * driver.c: remove NPTL reference in --version output.
16954
16955 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16956
16957         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
16958         generate valid assembly for the Mach-O assembler.
16959
16960 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16961
16962         * driver.c: don't include abcrem in the all optimization specifier
16963         since it slows down jit compilation too much for now.
16964
16965 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
16966
16967         * mini.c: use BIGMUL only if both operands have the same signage.
16968         * iltests.il: Test for bug 60056. (errors related to signage in
16969         BIGMUL).
16970
16971         r=lupus.
16972
16973 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
16974
16975         * mini.c, aot.c: memory leak fixes.
16976
16977 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16978
16979         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
16980
16981 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
16982
16983         * Makefile.am: remove the -static hack completely, it links in
16984         statically glib as well.
16985
16986 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
16987
16988         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
16989         * exceptions.cs: make it compile with new mcs/csc.
16990
16991 2004-06-03 Massimiliano Mantione <massi@ximian.com>
16992         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
16993         and added relevant test case.
16994
16995 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
16996
16997         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
16998         regressions in gtk-sharp.
16999
17000 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17001
17002         * exceptions.cs: New regression tests.
17003
17004         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17005
17006 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17007
17008         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17009
17010 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17011
17012         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17013
17014         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17015
17016 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17017
17018         * mini.c (mono_jit_runtime_invoke): Init class in this
17019         method instead of trusting mono_jit_compile_method to
17020         do the work (because wrappers can be in object class)
17021
17022 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17023
17024         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17025
17026         * basic-long.cs: New regression test.
17027
17028 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17029
17030         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17031         and div/rem checks.
17032
17033 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17034
17035         * Makefile.am: fix miguel's change to build mono statically against
17036         libmono (track build dependencies).
17037
17038 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * cfold.c: Some glib versions do not have G_MININT32.
17041
17042 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17043
17044         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17045         with precision of tan, atan, sin and cos, and implemented related
17046         regressions tests (fixes bug 54467, but one new problem appeared and
17047         is not fixed yet).
17048
17049 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17050
17051         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17052
17053         * exceptions.cs: Add test for constant folding && division by zero.
17054
17055         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17056         since driver.c is in libmono too, so the optimization was useless.
17057
17058         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17059         variable to driver.c so the compiler can emit more efficient code to
17060         access them.
17061
17062 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17063
17064         * Makefile.am: don't distribute generated inssel.[ch] files.
17065
17066 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17067
17068         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17069         into the default appdomain. Fixes #58707.
17070
17071         * jit-icalls.c: Remove the broken approximation for truncl, doing
17072         no conversion is better.
17073
17074         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17075         Fixes #58863.
17076
17077 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17078
17079         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17080         of the mcrxr instruction which is not available on some processors
17081         even if it's documented to be. Implement add and sub overflow correctly
17082         (still not complete for long unsigned). Speed up icalls a bit.
17083
17084 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17085
17086         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17087         we run .cctor in the current domain instead of target_domain.
17088         
17089         Fixes bug #58558, .cctor not being called in -O=shared.
17090
17091 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17092
17093         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17094
17095 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17096
17097         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17098         which can be done with an imm8, do it that way.
17099         (mono_arch_output_basic_block): ditto for a jmp
17100         (mono_arch_emit_prolog): Computate maximum offset of a label.
17101
17102 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17103
17104         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17105         now tries to allocate prefered physical reg's for virtual
17106         regs. This reduces the number of emited spills/loads with
17107         20-30% on our core assemblies.
17108
17109 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17110
17111         * jit-icalls.c: truncl() is not needed and trunc() is
17112         the correct thing to do anyway (bug #58287).
17113
17114 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17115
17116         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17117         if available.
17118
17119 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17120
17121         * driver.c: enable loop optimizations by default.
17122
17123 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17124
17125         * mini-x86.c: fix calc of max loop size when aligning loops start.
17126
17127 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17128
17129         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17130         the stack.
17131
17132 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17133
17134         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17135         should set carry.
17136
17137         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17138
17139         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17140         
17141         * mini.c (inline_method): Allways inline some wrappers even if the cost
17142         is too large. Fixes #58785.
17143
17144         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17145         
17146 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17147
17148         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17149         (crichton@gimp.org). Beginning of support for sparc/linux.
17150
17151         * mini-sparc.c: Optimize retrieval of LMF address.
17152
17153 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17154
17155         * exceptions-ppc.c:  handle alloca in methods with clauses.
17156
17157 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17158
17159         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17160
17161 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17162
17163         * mini.c: Delegate most of the abort signal work to 
17164           mono_thread_request_interruption, which also handles Stop and Suspend
17165           states.
17166
17167 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17170         supports the save/restore lmf opcodes.
17171
17172 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17173
17174         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17175         by gcc-3.4 as well.
17176
17177         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17178
17179 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17180
17181         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17182         methods which contain array accesses.
17183
17184         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17185         boundaries. Fixes #58537.
17186
17187         * iltests.il: Add regression test for #58537.
17188
17189 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17190
17191         * mini-x86.c (mono_arch_local_regalloc): Last part of
17192         fix for bug #58633 (releasing register to early).
17193
17194 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17195
17196         * basic-long.cs: Add new regression test.
17197
17198 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17199
17200         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17201         register too early on the chain.
17202
17203 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * mini.c (create_helper_signature): Use a helper function to reduce
17206         the code which needs to be written. Also set the calling convention of
17207         icalls on windows. Fixes #57840.
17208
17209 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17210
17211         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17212         exceptions-ppc.c: added helper function to get the instruction address
17213         from a signal handler context.
17214
17215 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17216
17217         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17218         from gonzalo.
17219
17220 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17221
17222         * helpers.c: Add new env variable to pass args to objdump.
17223         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17224
17225 2004-05-17  Radek Doulik  <rodo@ximian.com>
17226
17227         * Makefile.am (common_sources): added abcremoval.h so it get
17228         disted and daily mono packages on go-mono.com will build again
17229
17230 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17231
17232         * abcremoval.c: Fixed coding style, added copyright header.
17233
17234         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17235
17236         * mini.h: Added prototype for abc removal main function.
17237
17238         * build_relations_propagation_table.pl: Added copyright header.
17239
17240 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17241
17242         * basic-long.cs: reg test for complex ceq_long bug.
17243
17244 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17245
17246         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17247         reg in long and clob case (bug #58343). Fixed/added comments.
17248
17249 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17250
17251         * mini.c (mono_jit_runtime_invoke): Follow new convention
17252         of calling the invoke method with an function pointer.
17253
17254 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17255
17256         * ChangeLog: Fix author of memory leak patch.
17257
17258 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17259
17260         * Makefile.am: fix make dist as well...
17261
17262
17263 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17264
17265         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17266         on archs where pointers are 4 bytes long.
17267
17268         * Makefile.am: Added abcremoval.c source file.
17269
17270         * abcremoval.c: Added abcremoval.c.
17271
17272         * abcremoval.h: Added abcremoval.h.
17273
17274         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17275
17276         * inssel.brg: Enabled bounds check removal.
17277
17278         * mini.c: Added support for abcrem optimization.
17279
17280         * mini.h: Added abcrem optimization label.
17281
17282         * driver.c: Added support for abcrem optimization.
17283
17284         * propagated_relations_table.def: Added propagated_relations_table.def.
17285
17286 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17287
17288         * mini.c, cfold.c: fix style.
17289
17290 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17291
17292         * mini.c: handle issue with the low-level implementation of
17293         some long opcodes (bug #54209).
17294
17295 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17296
17297         * basic.cs: test for my new cmov stuff.
17298
17299 2004-05-13      Patrik Torstensson
17300
17301         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17302         opt and added peephole documentation.
17303
17304 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17305
17306         * tramp-ppc.c: rewrote the generic trampoline code.
17307
17308 2004-05-11      Patrik Torstensson
17309
17310         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17311
17312 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17313
17314         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17315
17316         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17317         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17318
17319         * mini.c: Add new icalls for AsAny marshalling.
17320
17321 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17322
17323         * tramp-ppc.c, mini-ppc.c: more cleanups.
17324
17325 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17326
17327         * mini.c: no warnings.
17328
17329 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17330
17331         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17332
17333 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17334
17335         * mini.c: In the thread abort signal handler, if the thread is in the
17336         process of being stoped, don't throw the Abort exception, just stop the
17337         thread.
17338
17339 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17340
17341         * tramp-ppc.c: removed old code.
17342
17343 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17344
17345         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17346         do some simple speed optimizations on ppc.
17347
17348 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17349
17350         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17351         and large offsets in load/store.
17352
17353 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17354
17355         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17356         it causes regressions.
17357
17358 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17359
17360         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17361         support.
17362
17363 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17364
17365         * jit-icalls.c: remove warnings.
17366         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17367         speedups for unsafe code.
17368
17369 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17370
17371         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17372
17373 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * basic-calls.cs: Add new regression test.
17376
17377         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17378         more portable.
17379
17380         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17381
17382         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17383         is no longer used.
17384
17385 2004-05-06      Patrik Torstensson
17386
17387         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17388         long reg allocation in any reg (not only eax:edx) and implemented 
17389         long shl/shr ops in asm instead of helpers.
17390
17391 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17392
17393         * mini-sparc.h: Fix warnings.
17394
17395         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17396         stack.
17397
17398         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17399         separate statement for clarity.
17400
17401         * mini-sparc.c: Update status.
17402
17403 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17404
17405         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17406         here.
17407
17408 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17409
17410         * inssel-ppc.brg: another small pre-release workaround:
17411         we don't do overflow detection for long_sub_un.
17412
17413 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17414
17415         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17416         (also works around a weird ppc bug: 57957).
17417
17418 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17419
17420         * tramp-ppc.c: trampoline fixes.
17421
17422 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17423
17424         * mini-ppc.c: fixed typos.
17425
17426 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17427
17428         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17429         at the top of the stack. Fixed typos. Use a frame registers
17430         for all the methods with exception clauses.
17431
17432 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17433
17434         * exceptions-ppc.c: restore fp registers.
17435
17436 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17437
17438         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17439         order from the stack top (moved the stack room to save the
17440         return value for trace after the param area). Fixed corruption
17441         in restoring registers on unwind.
17442
17443 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17444
17445         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17446
17447 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17448
17449         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17450         and prolog/epilog for methods that use it. Allow
17451         enough param area room for varargs methods. Fix miguel's
17452         breakage in exception handling.
17453
17454 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17455
17456         * Makefile.am: run genmdesc only on current arch.
17457
17458 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17459
17460         * exceptions-x86.c:
17461         * mini-x86.h: fix the build on windows.
17462
17463 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17464
17465         * 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.
17466
17467         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17468
17469         * mini-exceptions.c: New file.
17470         
17471         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17472         Move some parts of the x86 exception handling code to an 
17473         arch-independent file so it can be shared with other ports.
17474
17475 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17476
17477         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17478
17479 2004-04-26  David Waite  <mass@akuma.org>
17480
17481         * driver.c: remove comma from end of enumeration declaration
17482
17483 2004-04-26  Jackson Harper  <jackson@ximian.com>
17484
17485         * driver.c: parse config file before loading first assembly. This
17486         allows the user gac to be enabled/disabled. 
17487         
17488 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17489
17490         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17491         simpler mechanism: we do not care what is encoded initially
17492         (branch absolute or relative), we care about the code and its
17493         target.  I kept the old code for reference for now.
17494
17495         The new code tries first to determine if the jump is anywhere in
17496         the -/+32 absolute meg range, if it succeeds, it encodes using the
17497         absolute branch;  If not, it tried to find something in the
17498         relative range, if not, it uses the handle_thunk code. 
17499
17500 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17501
17502         * exceptions-ppc.c: use the correct ip register on macosx.
17503
17504 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17505
17506         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17507
17508 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17509
17510         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17511         Raise exception on integer divide by zero by hand since the hw
17512         doesn't support it. Handle NaNs in FP compares.
17513
17514 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17515
17516         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17517         code reducing duplication between the platforms and enabled
17518         signal exception handling (on linux for now).
17519
17520 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17521
17522         * exceptions-ppc.c: more macosx support.
17523
17524 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17525
17526         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17527
17528 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17529
17530         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17531
17532 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17533
17534         * iltests.il: more tests.
17535
17536 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17537
17538         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17539         vars as well.
17540
17541 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17542
17543         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17544
17545 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * liveness.c: Mark variables as volatile in all basic blocks reachable
17548         from exception clauses.
17549
17550 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17551
17552         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17553         inlining.
17554
17555 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17556
17557         * iltests.il, basic.cs: more tests for regalloc.
17558
17559 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17560
17561         * iltests.il: Some tests for register allocation modifications
17562         I have locally.
17563
17564 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * exceptions.cs: Add regression test for bug #56782.
17567
17568         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17569         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17570         the beauty of fixing the same thing in 5 different files...
17571
17572 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17573
17574         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17575         methods.
17576
17577 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * mini.c: Add support for STRWLPARRAY marshalling convention.
17580
17581 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17582
17583         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17584         to init the context to setup the regs pointer).
17585
17586 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17587
17588         * exceptions-ppc.c: more exceptions work.
17589
17590 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17591
17592         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17593         not allowed.
17594
17595 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17596
17597         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17598         can use the memory directly.
17599
17600         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17601
17602         add x86_add_membase, x86_sub_membase, x86_mul_membase
17603
17604 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17605
17606         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17607         GENERAL_REGS they were also hardcoded for all PPC ports.
17608
17609         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17610
17611         Remove hard-coded limit for floating point registers, use
17612         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17613
17614         Notice that in MacOS X calling conventions you can fit a lot more
17615         floating point values in registers, so I should update the PInvoke
17616         test to excercise the passing of floating point values on the
17617         stack (currently broken).
17618         
17619 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17620
17621         * tramp-ppc.c (create_trampoline_code): Added
17622         JUMP_TRAMPOLINE_SIZE. 
17623         (ppc_magic_trampoline): Follow the pattern from
17624         x86_magic_trampoline: if code is set to zero, return. 
17625         (create_trampoline_code): Always pass MonoMethod to the jump
17626         trampoline, before it was passing a null.
17627         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17628         share the code with mono_arch_create_jit_trampoline. 
17629
17630         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17631         implemented.
17632         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17633         implemented.  
17634
17635         * cpu-g4.md: Added length for jmp instruction, the worst case
17636         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17637         for save_lmf).
17638
17639 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17640
17641         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17642
17643 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17646         before each IL instruction.
17647
17648         * mini.c (CEE_BOX): Fix warnings.
17649
17650 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17651
17652         * mini.c: removed a few unused vars and extra whitespace.
17653
17654 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17655
17656         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17657         checks.
17658         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17659         index.
17660         (OP_GETCHR): use the above
17661         (CEE_LDELEMA): use the above.
17662
17663         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17664         version of the generic impl.
17665         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17666         (CEE_LDELEMA): use the above.
17667
17668 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17669
17670         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17671         Fixes #56317.
17672
17673         * iltests.il: Added new regression test for #56317.
17674
17675 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17678         under NetBSD. Fixes #56450.
17679
17680         * liveness.c (update_gen_kill_set): Fix previous patch.
17681
17682 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17683
17684         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17685
17686 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17687
17688         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17689         ldsfld and ldsflda.
17690
17691         * inssel-sparc.brg: Add more optimizations.
17692
17693         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17694
17695 2004-04-01  Martin Baulig  <martin@ximian.com>
17696
17697         * mini.c (handle_box): New static function; moved the
17698         implementation of CEE_BOX here.
17699         (mono_method_to_ir): Added `constrained_call' variable.
17700         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17701         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17702         mono_method_get_constrained() to get the method.
17703
17704 2004-04-01  Martin Baulig  <martin@ximian.com>
17705
17706         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17707         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17708         (mono_method_to_ir): We don't need these macros anymore since
17709         mono_class_get_full() already takes care of it. 
17710
17711 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17712
17713         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17714         use @function (as doesn't accept #function here) and check the return
17715         value of system and stop if fails.
17716
17717 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17718
17719         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17720
17721 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17722
17723         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17724
17725         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17726
17727         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17728         #56223.
17729
17730         * basic-long.cs: Add test for negation of Int64.MinValue.
17731
17732 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17733
17734         * mini-sparc.c: Update status.
17735
17736         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17737
17738         * exceptions-sparc.c: Fix return value in filters.
17739
17740         * inssel-sparc.brg: Fix register allocation in some rules.
17741
17742 2004-03-28  Martin Baulig  <martin@ximian.com>
17743
17744         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17745         if neccessary.  
17746
17747 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17748
17749         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17750         
17751         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17752         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17753         remove unused conv_u4 opcode.
17754
17755         * mini-x86.c: Remove valgrind workaround since it slows down things
17756         even when mono is not run under valgrind.
17757
17758 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17759
17760         * mini-sparc.c: Update status.
17761
17762         * inssel-sparc.brg: Add some optimizations.
17763
17764         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17765         future delay slot filling. Add support for varargs, tail calls and JMP.
17766
17767         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17768         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17769
17770         * inssel.brg: Fix register allocation in OP_ARGLIST.
17771
17772         * inssel.brg: Fix warnings.
17773
17774 2004-03-25  Martin Baulig  <martin@ximian.com>
17775
17776         * mini.c (inflate_generic_field): Removed.
17777         (mini_get_method): Removed, use mono_get_method_full(),
17778         (mini_get_class): Removed, use mono_class_get_full().
17779         (mono_method_to_ir): Pass our generic context to
17780         mono_field_from_token().        
17781
17782 2004-03-25  Martin Baulig  <martin@ximian.com>
17783
17784         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17785         of a `MonoMethod *'.
17786         (mini_get_method): Take a `MonoGenericContext *' instead
17787         of a `MonoMethod *'.
17788         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17789         a new local variable called `generic_context' which holds the
17790         current `MonoGenericContext *'; use it to lookup things.
17791
17792 2004-03-24  Martin Baulig  <martin@ximian.com>
17793
17794         * mini.c (mini_get_class): New static method; if we're inside a
17795         generic instance, inflate the class if neccessary.
17796         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17797
17798 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * iltests.il: New regression test for #55976.
17801
17802         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17803         #55976.
17804
17805 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17806
17807         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17808         output.
17809
17810 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17811
17812         * liveness.c: Consider SSA stores as well as loads when making vars
17813         volatile.
17814
17815         * exceptions.cs: New regression tests for register allocation.
17816         
17817 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17818
17819         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17820         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17821           domain lock only to protect puntual access to data structures.
17822           Added access lock for sighash, jit_icall_hash_name, 
17823           jit_icall_hash_addr and domain->code_mp.
17824
17825 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * driver.c: Print SIGSEGV handling method.
17828
17829         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17830
17831         * mini.c (setup_jit_tls_data): Handle case when this is called
17832         multiple times for a thread.
17833
17834         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17835         is different from fbxx_un. Fixes #54303. Also use constants instead of
17836         magic numbers in a lot of places.
17837
17838 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         * exceptions.cs: Fix cctor test when --regression is used.
17841
17842 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17843
17844         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17845         for Linux/ppc.
17846
17847 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17848
17849         * inssel-ppc.brg: fixed register assignments for some rules.
17850
17851 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17852
17853         * exceptions.cs: Add test for exceptions in static constructors.
17854
17855         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17856         static constructors outside the domain lock. Fixes #55720.
17857
17858 2004-03-17  Martin Baulig  <martin@ximian.com>
17859
17860         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17861         (inflate_generic_field): Take the `MonoMethod *' instead of the
17862         `MonoClass *' and added support for generic method.
17863         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17864         have a `field->parent->gen_params', only inflate the field if it's
17865         an open constructed type.
17866
17867 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17870         exception object instead of the preconstructed ones.
17871
17872 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17873
17874         * mini.c: reverted changed to sigsegv_signal_handler commited
17875         accidentally in the previous patch.
17876
17877 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17878
17879         * mini.c:
17880         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17881         running --aot with an old assembly.
17882
17883 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17884
17885         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17886         point values.
17887
17888         * mini-sparc.c: Add support for v9 branches with prediction.
17889
17890 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17891
17892         * mini.c (mini_init): #warning is GNUC only
17893
17894         * mini-sparc.h: implement __builtin_frame_address
17895         and __builtin_return_address for Sun C compiler
17896
17897 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17898
17899         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17900
17901 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * basic-calls.cs: Add test for unaligned byref long argument passing.
17904
17905         * mini-ops.h: Add sparcv9 compare and branch instructions.
17906
17907         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17908         v9 instructions if we have a v9 cpu.
17909
17910         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17911         registers for global allocation.
17912
17913         * exceptions-sparc.c: Fixes.
17914         
17915 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * liveness.c (mono_analyze_liveness): Optimized version.
17918
17919         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17920
17921         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17922         sparc work.
17923
17924         * basic-float.cs basic-calls.cs: New regression tests.
17925
17926 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17929         sigaltstack implementation.
17930
17931         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17932         
17933         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17934         stuff if SIGSEGV_ON_ALTSTACK is not defined.
17935
17936 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17937
17938         * mini.c: Fix warnings.
17939         
17940         * mini.c (mono_resolve_patch_target): New function which contains the
17941         arch independent part of the patching process.
17942
17943         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
17944         patching code to a separate function.
17945
17946 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
17947
17948         * mini.c (add_signal_handler): ifdef out on Windows
17949
17950 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
17953         cpu-sparc.md: Add exception handling support + other fixes.
17954
17955         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
17956         typed GC detection in --version.
17957
17958         * basic.cs exceptions.cs: New regression tests.
17959
17960         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
17961         the arch specific code can store data during a compilation.
17962
17963         * mini-ops.h: Add OP_SETFRET.
17964
17965         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
17966         function, register a separate icall for each arity, so the icalls can
17967         get a wrapper.
17968         
17969         * mini.c (mono_print_tree): Print negative offsets in a more readable
17970         form.
17971         
17972         * mini.c: Make signal handling work on sparc.
17973         
17974         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
17975
17976         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
17977
17978         * jit-icalls.c: Emulate truncl by aintl on solaris.
17979
17980         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
17981
17982 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
17983
17984         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
17985
17986 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
17987
17988         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
17989         a MarshalByRef type, inline a method that performs the check, taking into
17990         account that the object can be a proxy. Also implemented tow new opcodes:
17991         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17992         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
17993         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
17994
17995 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17996
17997         * mini-ppc.c: if a relative branch displacement is too big
17998         but it points to and area reachable with an absolute branch, 
17999         avoid the thunks.
18000
18001 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18002
18003         * mini.c: optimize small copies in cpblk.
18004
18005 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18006
18007         * basic-calls.cs basic-float.cs: New regression tests.
18008
18009         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18010         negative offsets from %fp. Implement localloc. Fix local register 
18011         allocation. Fix the case when the this argument needs to be saved to
18012         the stack. Implement some missing opcodes.
18013
18014 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * mini.c (mini_method_compile): Reenable global regalloc in methods
18017         with exception handlers.
18018
18019         * linear-scan.c (mono_varlist_sort): Fix warning.
18020
18021         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18022
18023         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18024         regalloc costs.
18025
18026         * liveness.c: Make all variables uses in exception clauses volatile, to
18027         prevent them from being allocated to registers. Fixes #42136.
18028
18029 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18030
18031         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18032         causes regressions.
18033
18034         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18035         argument to mono_arch_regalloc_cost.
18036
18037         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18038         precisely.
18039
18040 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18041
18042         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18043         Make the cost of allocating a variable to a register arch dependent.
18044
18045         * basic-calls.cs: Fix compilation of tests.
18046         
18047         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18048         helper function to cut back on the number of #ifdefs needed.
18049
18050         * mini-ppc.c: Fix compilation.
18051
18052         * basic-calls.cs: New regression tests.
18053
18054         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18055
18056         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18057         of l0 since that is callee saved.
18058
18059         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18060         to virtual calls.
18061
18062         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18063         of delay instruction.
18064
18065         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18066
18067         * mini.h (MonoCallInst): Add 'virtual' flag.
18068
18069         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18070
18071 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18072
18073         * *.cs: New regression tests.
18074
18075         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18076         work.
18077
18078         * mini.c (mono_runtime_install_handlers): Fix build.
18079
18080         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18081         'signal_stack_size' members.
18082
18083         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18084         alternate signal stack.
18085
18086         * exceptions-x86.c: Add stack overflow handling.
18087
18088         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18089         functions to arch independent code.
18090
18091         * mini.c (mono_print_tree): Print more detailed info for load_membase
18092         opcodes.
18093         
18094 2004-02-23  Martin Baulig  <martin@ximian.com>
18095
18096         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18097
18098 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18099
18100         * mini-x86.c: fixed reg allocation for div/rem.
18101
18102 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18103
18104         * driver.c (mono_main): Report some configuratio options on --version.
18105
18106 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18107
18108         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18109         low in the address space. Correctly flush memory in thunks where we
18110         output native code.
18111
18112 2004-02-20  Martin Baulig  <martin@ximian.com>
18113
18114         * mini.c (mini_get_method): New static method; inflate all generic
18115         methods and methods in open generic instances.
18116         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18117         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18118
18119 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18120
18121         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18122
18123         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18124
18125 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18126
18127         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18128
18129         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18130         it compile using Sun's compiler.
18131
18132 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18133
18134         * 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.
18135
18136         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18137
18138 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18139
18140         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18141         code.
18142         * mini-ppc.c: handle calls outside of the allowed range with thunks
18143         allocated using the code manager.
18144         * tramp-ppc.c: use the code manager to hold generated native code.
18145         Fixed the magic trampoline to just patch vtable entries.
18146
18147 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18148
18149         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18150         independent file.
18151
18152 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18153
18154         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18155         PPC.
18156
18157         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18158         if we have a working __thread implementation.
18159
18160         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18161         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18162
18163 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18164
18165         * mini-x86.c: Fix compilation under gcc 2.
18166         
18167 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18168
18169         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18170         contains a call to the wrapped function.
18171
18172         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18173         OP_<CALL>_IMM opcodes, and use them under X86.
18174         
18175         * mini.c (mono_jit_find_compiled_method): Fix warning.
18176
18177         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18178
18179         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18180
18181         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18182         functionality to mini.c.
18183
18184         * mini.c (mono_create_jump_trampoline): New function to create a jump
18185         trampoline. Return a compiled method instead of a trampoline if it
18186         exists. Add a cache for jump trampolines.
18187
18188         * mini.c (mono_jit_find_compiled_method): New function to return a
18189         compiled method if it exists.
18190
18191         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18192         mono_arch_create_jit_trampoline.
18193
18194         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18195         a jump trampoline. Fixes #52092.
18196         
18197 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18198
18199         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18200         which is not up-to-date. Add check_corlib_version () instead.
18201
18202         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18203         have to call it.
18204         
18205         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18206         since newer valgrind versions do not need it.
18207
18208         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18209         compile a method with a given set of optimizations.
18210
18211         * mini.c: Compile icall wrappers on-demand instead of at startup.
18212
18213         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18214         wrapper for an icall.
18215
18216 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18219         #54063.
18220
18221         * iltests.il: Add test for non-empty stack before switch instruction.
18222
18223 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18224
18225         * mini.c: Add support for new stringbuilder marshalling conventions.
18226
18227         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18228
18229 2004-02-01  Martin Baulig  <martin@ximian.com>
18230
18231         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18232         in `ginst->mtype_argv'.
18233
18234 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18235
18236         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18237         facilitate grepping.
18238
18239 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18240
18241         * mini.c: fixed buglet in initobj generic implementation for references.
18242
18243 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18244
18245         * Makefile.am: make the version script conditional.
18246         * jit-icalls.c: handle missing truncl().
18247
18248 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18249
18250         * exceptions.cs: Add more tests for double->int conversion.
18251
18252         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18253         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18254
18255 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18256
18257         * driver.c: make --verbose --version emit an error
18258         if the loaded corlib doesn't match the runtime version.
18259
18260 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18261
18262         * mini-ppc.h: export ppc_patch().
18263         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18264         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18265         on par or better than on MacOSX.
18266
18267 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18268
18269         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18270         mono_lookup_pinvoke_call.
18271
18272         * mini-x86.c: Under windows, the default pinvoke calling convention is
18273         stdcall. Fixes #52834.
18274
18275         * mini.c (optimize_branches): Add an upper bound to the number of
18276         iterations to prevent infinite loops on strange loops. Fixes #53003.
18277
18278 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18279
18280         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18281         and ISINST. Fixes #52093.
18282
18283         * objects.cs (test_0_vector_array_cast): New tests.
18284         
18285 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18286
18287         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18288         checking in Array.Set ().
18289
18290         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18291         #52590.
18292
18293         * object.cs (test_0_multi_array_cast): New regression test.
18294
18295 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18296
18297         * exceptions-ppc.c: fix build on Linux/PPC.
18298
18299 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18300
18301         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18302         running under valgrind.
18303         (x86_magic_trampoline): Fix build bustage.
18304
18305         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18306         negative values as well. This is needed for the encoding of the line number
18307         info, since sometimes the line numbers are not in increasing order.
18308
18309 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18310
18311         * cpu-pentium.md (localloc): Increase the size of the localloc 
18312         instruction since it is a loop under Win32.
18313
18314         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18315         allocation.
18316
18317 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18320         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18321         Max Horn (max@quendi.de). Fix file names in comments.
18322
18323 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18324
18325         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18326         avoid stack overflow.
18327         (replace_usage): Avoid uninitialized variable warnings.
18328
18329         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18330         and taking the address of valuetype variables.
18331
18332 2004-01-03  Patrik Torstensson
18333
18334         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18335         for other purposes than FP later on.
18336
18337 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18338
18339         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18340         of tail calls.
18341
18342 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18343
18344         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18345
18346 2003-12-30  Patrik Torstensson <p@rxc.se>
18347
18348         * mini-x86.h: Decreased number of availiable fp regs.
18349         Solves corner cases with FP spilling.
18350
18351 2003-12-23  Patrik Torstensson <p@rxc.se>
18352
18353         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18354         for floating point stack tracking / spilling on x86. 
18355         Fixes bug #49012.
18356         
18357         * basic-float.cs: added float mul overflow test.
18358
18359 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18360
18361         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18362
18363 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18364
18365         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18366         supports for cond branches that overflow the immediate
18367         overflow offset. mcs can compile simple programs.
18368
18369 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18370
18371         * exceptions-ppc.c: exception handling support wip:
18372         finally handlers get run on exception.
18373
18374 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18377         profiling.
18378
18379 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18380
18381         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18382         initial support for stack walking and unwinding.
18383
18384 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18385
18386         * driver.c (mono_main): Make corlib-out-of-sync message more 
18387         descriptive. Also remove verify_corlib call.
18388
18389 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18390
18391         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18392         not overlap with other call's arguments, too.
18393
18394 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18395
18396         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18397         move to arch-specific code the choice of arch-specific
18398         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18399         * mini.c: ensure emulation calls will not interleave
18400         with other calls.
18401
18402 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18403
18404         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18405         the magic trampoline stack frame is dropped before executing
18406         the new method.
18407
18408 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18409
18410         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18411         and integer to fp conversions. Added support for overflowing
18412         arguments on the stack. Reserve a couple more registers as temps.
18413         Added support for aot compilation (as output still needs to be
18414         tweaked, though).
18415
18416 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18417
18418         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18419         Don't overwrite return register in some corner cases.
18420
18421 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18424         static constructors when AOT compiling.
18425
18426         * driver.c (mono_main): Call mono_check_corlib_version.
18427
18428 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18429
18430         * cpu-g4.md, basic.cs: fixed div target register.
18431
18432 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18433
18434         * mini-ppc.c, basic.cs: shl_imm fix with test.
18435
18436 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18437
18438         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18439         structures by value. Misc fixes.
18440         * objects.cs: more tests.
18441
18442 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18443
18444         * mini-ppc.c: lconv.ovf.i implemented.
18445
18446 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18447
18448         * mini.c:
18449         (mini_init): don't error out if someone already called g_thread_init.
18450
18451 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18452
18453         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18454         to be any type per the spec. Fix abnormal memory usage when
18455         the same object is repeatedly thrown.
18456
18457 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18458
18459         * mini.c: check for overruns in IL code.
18460
18461 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18462
18463         * TODO: Add/remove some todo entries.
18464
18465 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18466
18467         * driver.c (mono_main): Call mono_verify_corlib.
18468
18469 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18470
18471         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18472         This has been moved to mini.c
18473         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18474         type being casted is marshalbyref it could be a proxy, so instead of
18475         emitting the type check code, emit a call to a runtime method that will
18476         perform the check by calling CanCastTo if needed.
18477
18478 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18481         methods with large stack frames under Win32.
18482
18483 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * Makefile.am: Distribute regression tests.
18486
18487         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18488         at the end instead of inserting each variable into the sorted list.
18489
18490         * linear-scan.c (mono_varlist_sort): New helper function.
18491         
18492 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18493
18494         * mini.c: ensure arguments and locals are within bounds.
18495
18496 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18497
18498         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18499         related fixes.
18500
18501 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18502
18503         * mini.c (mono_cprop_copy_values): Fix crash.
18504
18505         * aot.c: Set verbosity back to 0.
18506         
18507 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18508
18509         * regalloc.c: complete memory leak fix by Laurent Morichetti
18510         (l_m@pacbell.net).
18511
18512 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * driver.c (main_thread_handler): Revert the previous patch.
18515
18516         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18517         under valgrind.
18518
18519         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18520         memory from the memory pool.
18521
18522         * driver.c (main_thread_handler): Turn on all optimizations when
18523         --aot is used.
18524
18525         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18526         an array for better performance.
18527
18528         * regalloc.c (mono_regstate_assign): Fix memory leak.
18529
18530         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18531         serialize the debug info.
18532
18533         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18534         debug info from the serialized representation.
18535
18536         * aot.c: Save debug info into the generated file and load it when 
18537         loading a method.
18538
18539         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18540
18541 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18542
18543         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18544         More FP-related fixes.
18545
18546 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18547
18548         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18549         and register allocation buglet. Hello world now runs.
18550
18551 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18552
18553         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18554         * tramp-ppc.c: fixed class init trampoline.
18555         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18556
18557 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18558
18559         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18560         mini.c: more ppc changes/fixes.
18561
18562 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18565         Also optimize the case when the arguments are the same in the caller 
18566         and in the callee.
18567
18568         * iltests.il: Add tests for tail calls with valuetype arguments.
18569
18570 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18571
18572         * mini-ppc.c: fixes for struct return type.
18573
18574 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18575
18576         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18577         mono_spillvar_offset() to arch-specific code.
18578
18579 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18580
18581         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18582
18583 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18584
18585         * exceptions-x86.c: Fix stack space leaks.
18586         
18587         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18588         registers from the lmf if the method has save_lmf set.
18589
18590 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18593         of icall wrappers into InvokeInDomain, since these are now per-domain.
18594
18595 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18596
18597         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18598         make some opcode emulation and intrinsic ops enabled/disabled 
18599         according to the architecture. More fixes.
18600
18601 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18602
18603         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18604
18605 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18606
18607         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18608         arch-specific handling for 'this' and struct return type to
18609         arch-specific code.
18610
18611 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18612
18613         * aot.c: prevent divide by zero error when reporting (it happened with
18614         Accessibility.dll).
18615
18616 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18617
18618         * mini.h (inst_switch): Remove unused macro.
18619
18620 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18621
18622         * aot.c:
18623         (load_aot_module): free 'info->methods' and 'info' properly. No more
18624         "free(): invalid pointer blah" messages when you have an old aot
18625         compiled assembly.
18626
18627 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18628
18629         * jit-icalls.c, mini.c: Added support for context static fields.
18630
18631 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18632
18633         * mini.c (mono_method_blittable): Methods which set LastError are not 
18634         blittable either. Fixes #51108.
18635         
18636 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18637
18638         * mini.c: flush icache.
18639         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18640
18641 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18644
18645 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18646
18647         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18648         safe on IA32.
18649
18650         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18651         vararg calls.
18652
18653         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18654
18655 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18658         instruction when the result is discarded.
18659
18660         * iltests.il (test_0_div_regalloc): New regression test.
18661
18662         * arrays.cs: Fix compilation error.
18663
18664 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18665
18666         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18667         float rules to inssel-x86.brg: sane architectures with FP registers
18668         don't need to implement these rules.
18669
18670 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18671
18672         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18673
18674 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18675
18676         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18677         implementation of 32 bit systems.
18678
18679 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18680
18681         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18682         (Jeroen Zwartepoorte).
18683
18684 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18685
18686         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18687         the caller and the callee matches.
18688         
18689         * mini.c (mono_method_to_ir): Add comment.
18690
18691         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18692         signbit is missing on some platforms.
18693
18694 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18697
18698         * mini.c (setup_jit_tls_data): Call the new function.
18699         
18700         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18701
18702         * mini-x86.c: Add experimental support for fast access to the lmf
18703         structure under NPTL/Linux 2.6.x.
18704
18705 2003-11-06  Martin Baulig  <martin@ximian.com>
18706
18707         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18708         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18709         the debugger.
18710
18711 2003-11-02  Martin Baulig  <martin@ximian.com>
18712
18713         * mini.c (inflate_generic_field): New static method.
18714         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18715         generic instance and the field is declared in a generic type, call
18716         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18717
18718 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * mini.h mini.c (mono_method_same_domain): New function to return
18721         whenever the caller and the callee are in the same domain.
18722
18723         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18724
18725 2003-10-30  Martin Baulig  <martin@ximian.com>
18726
18727         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18728         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18729         method parameters.
18730         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18731         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18732
18733 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18734
18735         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18736         propagation.
18737
18738         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18739         object here, so it is in the correct appdomain etc.
18740
18741 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18744         already done.
18745         (mono_method_to_ir): Avoid freeing the type created returned from
18746         mono_type_create_from_typespec, since it is put into an internal cache
18747         by the function. Fixes pointer.exe.
18748
18749         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18750         trampolines for icalls and pinvokes as well. Fixes #33569.
18751
18752 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini.c: Update after appdomain changes.
18755
18756         * mini.c (mono_jit_compile_method_inner): Allways compile native
18757         method wrappers in the root domain, since there can only be one
18758         instance of them, whose address is stored in method->info.
18759
18760 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18761
18762         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18763         environment variable. Instead detect automatically whenever running
18764         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18765         valgrind.h.
18766
18767 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18768
18769         * trace.c, trace.h: New files that implement the new trace option
18770         parsing. 
18771
18772         * driver.c: Document new --trace options.
18773
18774         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18775         mini-x86.c: Apply:
18776
18777         -       if (mono_jit_trace_calls)
18778         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18779
18780         * mini.h: prototypes.
18781         
18782 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18785
18786         * mini.c inssel.brg: Implement typedefbyref opcodes.
18787
18788         * mini.c (mono_jit_compile_method): Remove unused local variable.
18789
18790         * mini.c (mono_jit_compile_method_inner): Ditto.
18791         
18792 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18795         
18796         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18797
18798 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini.c (mono_no_aot): Remove unused global variable.
18801
18802         * mini.c: Thread safety fixes.
18803
18804 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18805
18806         * mini.c (mono_create_class_init_trampoline): Add a lock around
18807         class_init_hash_addr.
18808
18809         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18810         #30073.
18811
18812         * mini.c: Decompose the NEWARR instruction before decomposing its
18813         arguments. Fixes #30073.
18814
18815 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18818         convention.
18819
18820 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18821
18822         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18823
18824         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18825
18826         * driver.c: Add support for compiling icall wrappers to --compile.
18827
18828 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * inssel.brg: The empty value in class->interface_offsets is -1, not
18831         0. Fixes #49287.
18832
18833 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * objects.cs: New test for 'is' operator on an array of interfaces.
18836
18837 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18838
18839         * tramp-ppc.c: update trampoline code to support jumps
18840         and class initialization.
18841
18842 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18845
18846         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18847
18848         * inssel.brg (OP_UNBOX): Remove unused rule.
18849
18850         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18851         region instead of one for each method. Fixes #47813.
18852
18853 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18854
18855         * exceptions.cs (test_0_nested_finally): New regression test for
18856         nested exception handlers.
18857
18858         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18859
18860         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18861
18862         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18863         inlining.
18864
18865         * mini.c (mono_method_check_inlining): Make the inlining limit 
18866         configurable by an environment variable.
18867         
18868         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18869
18870         * mini.h: Bump AOT file version.
18871
18872         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18873         token, store the image along with the token, since the token might not 
18874         refer to the same image as the method containing the relocation, 
18875         because of inlining.
18876
18877 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * mini.c (mono_precompile_assemblies): New function to compile
18880         all methods in all loaded assemblies.
18881
18882         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18883
18884         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18885         iassign and fassign to int*, since they can contain large negative
18886         values if the register is spilled. Also added some comments. Fixes
18887         #45817.
18888
18889         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18890         under Win32. Fixes #42964.
18891
18892 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18893
18894         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18895
18896         * aot.c: Added support for AOT compiling methods which contain calls
18897         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18898         handled.
18899         
18900         * driver.c (compile_all_methods): Run the compilation in a thread
18901         managed by mono. Fixes #44023.
18902
18903         * mini.c (mono_codegen): Print full method name in verbose output.
18904
18905         * mini-x86.c (mono_arch_patch_code): Fix warning.
18906         
18907         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18908         jumps, since the method we are jumping to might be domain-specific.
18909
18910         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18911
18912 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18913
18914         * inssel.brg: string chars are unsigned.
18915
18916 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * TODO: New todo item.
18919
18920         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18921         which calls mono_runtime_class_init and patches the call site to
18922         avoid further calls.
18923         (mono_arch_create_class_init_trampoline): New arch specific function 
18924         to create a class init trampoline.
18925         (create_trampoline_code): Generalized so it can create
18926         class init trampolines as well.
18927
18928         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18929         (mono_create_class_init_trampoline): New function to create and cache
18930         class init trampolines.
18931         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18932         vtable given the address of a class init trampoline. Used by the
18933         patching process.
18934         (mono_codegen): Generate a call to a trampoline instead of
18935         mono_runtime_class_init in LDSFLD[A].
18936         (mono_codegen): Add relocations for the new trampoline.
18937         
18938         * mini.h mini-x86.c aot.c: Added a new relocation type: 
18939         MONO_PATCH_INFO_CLASS_INIT.
18940
18941         * mini.h: Bump AOT version number.
18942
18943         * aot.c: Create a copy of the loaded code instead of using the original
18944         so methods which call each other will be close in memory, improving
18945         cache behaviour.
18946         
18947         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
18948         patch since it breaks the regression tests.
18949         
18950         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
18951         for the register saving instruction sequence since the 
18952         frame_state_for function in glibc 2.3.2 don't seem to detect it.
18953
18954 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
18955
18956         * TODO: Fix todo item && remove another.
18957
18958 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
18959
18960         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
18961         previous checkin.
18962
18963         * aot.c: Moved the check for MONO_LASTAOT into the initialization
18964         function of the module.
18965
18966         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
18967         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
18968         --no-aot command line option.
18969
18970 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18971
18972         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
18973         by Bernie Solomon (bernard@ugsolutions.com).
18974
18975         * inssel.brg: Refactor the interface offset table related code into
18976         its separate functions and add support for the AOT case.
18977
18978 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * aot.c (mono_aot_get_method_inner): Fix memory leak.
18981         
18982         * aot.c: Added mono_aot_verbose variable and made all debugging
18983         output depend on the value of this variable.
18984
18985         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
18986         method_label and info_label.
18987
18988         * mini.h mini-x86.c aot.c: Added a new relocation type 
18989         MONO_PATCH_INFO_IID for klass->interface_id.
18990
18991         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
18992         the MonoJitInfo structure.
18993
18994         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
18995         a non-root appdomain in shared mode.
18996
18997 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
18998
18999         * aot.c: make aot loader less verbose. Remove free of unused variable.
19000
19001 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19004
19005         * .cvsignore: Added *.dll.
19006
19007         * mini.c (mono_print_tree_nl): New function callable while debugging.
19008
19009         * mini.c (mono_print_code): Export this.
19010
19011         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19012         patched code.
19013
19014 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini.h (MonoCompile): Added 'jit_info' field.
19017
19018         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19019         the cfg structure, since it is needed by the AOT compiler.
19020
19021         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19022
19023         * aot.c: A major rewrite. Changes include:
19024         - save exception tables for methods which have them.
19025         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19026         to g_module_symbol.
19027         - reworked the file format so it is now much smaller and needs
19028         fewer relocation entries.
19029         
19030 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19031
19032         * aot.c (load_aot_module): Fix build bustage on platforms without
19033         Boehm GC.
19034
19035 2003-09-04  Martin Baulig  <martin@ximian.com>
19036
19037         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19038
19039 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19040
19041         * TODO: Some new optimization ideas.
19042
19043         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19044
19045         * aot.c: Save the optimization flags used to compile the code into
19046         the AOT module.
19047
19048         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19049         support emitting domain specific code.
19050         
19051         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19052         no longer domain neutral. It can be made domain neutral by compiling 
19053         with --optimize=shared.
19054
19055         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19056         between appdomains.
19057
19058         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19059         loading of AOT code.
19060
19061         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19062         
19063         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19064         if there is no domain neutrality information.
19065
19066 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19069         format version into the generated library.
19070
19071         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19072         callee method into the caller since one of them could be shared.
19073
19074         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19075         system exceptions from AOT code now works.
19076
19077         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19078         method if it is domain neutral and the callee is not.
19079
19080         * graph.c (cfg_emit_one_loop_level): Fix warning.
19081
19082 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19083
19084         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19085         last checkin.
19086
19087 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19090         is needed  by code which is executed before mono_runtime_init ().
19091         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19092         
19093         * mini.c (mono_thread_abort): Fix warning.
19094         (mono_jit_compile_method): Call static constructor in the AOT case too.
19095
19096         * aot.c (mono_compile_assembly): Fix warning.
19097
19098 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19099
19100         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19101
19102 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19105
19106         * cpu-pentium.md: Fix the length of call opcodes so they include the
19107         ESP restoring instruction. Fixes #47968.
19108
19109 2003-08-28  Martin Baulig  <martin@ximian.com>
19110
19111         * mini-x86.c (mono_arch_call_opcode): Added support for
19112         MONO_TYPE_GENERICINST.
19113
19114         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19115
19116 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19117
19118         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19119         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19120
19121         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19122         metadata_section.
19123
19124 2003-08-26  Martin Baulig  <martin@ximian.com>
19125
19126         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19127         when reporting an error, set this to the actual error location.
19128         (mono_method_to_ir): Report the correct error location if
19129         get_basic_blocks() returned an error.
19130
19131 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19132
19133         * mini.c (mono_type_blittable): OBJECT is not blittable.
19134         (mono_method_blittable): Methods which have marshalling descriptors
19135         are not blittable either. Fixes #47842.
19136
19137 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * driver.c mini.c: Use an environment variable instead of a global 
19140         variable. Also fix the build.
19141
19142         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19143         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19144         reporting this. 
19145
19146         * driver.c mini.c: Added --with-valgrind option to turn off some
19147         code which prevents mono from running under valgrind.
19148
19149         * mini.c (mono_emit_call_args): Fixed warning.
19150
19151         * mini.c (mono_emulate_opcode): Fixed warning.
19152
19153 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19154
19155         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19156         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19157         regalloc.c, regalloc.h: specify available registers in arch-specific
19158         code and support floats in the regallocator (patch by Laurent Morichetti 
19159         <l_m@pacbell.net>)
19160
19161 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19162
19163         * mini.c: mono_thread_current() can be called only after
19164         mono_runtime_init(): rearrange code to not call it early on.
19165
19166 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19167
19168         * mini.c: allocate jump tables in the code mempools.
19169
19170 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19171
19172         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19173         freed.
19174
19175 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19176
19177         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19178         12 to 16.  This fixes bug #47453.
19179
19180
19181 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19182
19183         * mini-ppc.c: fixed indexed load and unsigned compares.
19184
19185 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19186
19187         * mini.c: reenabled installation of handler for
19188           thread abort signal.
19189
19190 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19191
19192         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19193         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19194         until it's fixed and actually useful.
19195
19196 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19197
19198         * inssel-long32.brg: couple more opcodes implemented.
19199
19200 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19201         
19202         * mini-sparc.c: Even more opcodes implemeted.
19203
19204 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19205
19206         * mini-sparc.c: More opcodes implemented.
19207
19208 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19209
19210         * mini-sparc.c: More opcodes implemented.
19211
19212 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19213
19214         * inssel-sparc.brg: Add some needed rules.  Direct
19215         copy from PPC.
19216         * Makefile.am: Use inssel-sparc.brg
19217         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19218         an assert happy for now.
19219
19220 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19221
19222         * mini-sparc.c: Fixed compile errors.
19223         * exceptions-sparc.c: Same.  We now produce a mono binary 
19224         on sparc-linux.  Yea.
19225
19226 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19227
19228         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19229         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19230         They compile, but do not work.
19231
19232 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19233
19234         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19235         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19236         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19237         (ct@gentoo.org).
19238
19239 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19240
19241         * mini.c: more opcodes implemented and better support for generics.
19242
19243 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19244
19245         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19246         * mini.c, mini.h: first cut at generics support: some new instructions 
19247         added and changed the behaviour of some of the existing ones.
19248
19249 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19250
19251         * mini.c: Removed definition of metadata_shared mutex here.
19252
19253 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19254
19255         * mini-x86.c: make vararg calls work for instance methods.
19256
19257 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19258
19259         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19260         returns the arguments in a separte list, now.
19261
19262 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19263
19264         * aot.c, mini.c: updates for array type representation changes.
19265
19266 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19267
19268         * mini.c: register function to perform jit shutdown.
19269
19270 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19271
19272         * mini.c: use a faster allocator if possible.
19273
19274 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19275
19276         * aot.c: some cleanups and portability changes.
19277
19278 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19279
19280         * mini.c: use faster allocation for CEE_BOX if possible.
19281
19282 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19283
19284         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19285         Moved inlined mempcy code to its own function so that is can be
19286         reused. Added an inline memset function as well (optimized initobj).
19287         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19288
19289 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19290
19291         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19292
19293 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19294
19295         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19296         arch code can setup the cpu for CLR execution, if needed.
19297         We use it on x86 to set the precision of FP operations.
19298
19299 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19300
19301         * mini.c: disable some optimizations if we can guess they'll cost too
19302         much for a given method.
19303
19304 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19307         
19308 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19309         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19310         info collection support.
19311
19312 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19313
19314         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19315         is now implemented in the profiling API. Get rid of a couple of
19316         unnecessary global variables.
19317
19318 2003-06-15  Nick Drochak <ndrochak@gol.com>
19319
19320         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19321         * cpu-g4.md: add op_bigmul and op_bigmul_un
19322         * cpu_pentium.md: add op_bigmul_un
19323         * inssel-long32.brg: add rule for unsigned bigmul
19324         * mini-ops.h: define OP_BIGMUL_UN
19325         * mini-x86.c: THE BUG: handle (un)signed properly
19326         * mini.c: choose unsigned opcode if needed.
19327         This set of patches fixes bug #44291
19328
19329 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19330
19331         * mini.c (optimize_branches): improved to handle all kinds of
19332         conditional branches.
19333
19334 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19335
19336         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19337         don't raise exceptions.
19338
19339 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19340
19341         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19342         to arch-specific files.
19343
19344 2003-06-09  Martin Baulig  <martin@ximian.com>
19345
19346         * Makefile.am (libs): Added $(LIBGC_LIBS).
19347
19348 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19349
19350         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19351         and OP_ATAN (fixes bug#44293).
19352
19353 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19354
19355         * Makefile.am, mini-x86.c: rename cpu description array to
19356         pentium_desc, since some compilers define the 'pentium' preprocessor
19357         symbol.
19358
19359 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19360
19361         * mini.c (mini_select_instructions): add explicit branch if the
19362         following block is not the false target of a conditional branch -
19363         we need this with any optimization that reorder or remove bblocks
19364
19365         * mini.c (optimize_branches): bug fixes
19366
19367 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19368
19369         * mini.c (mono_method_to_ir): inline static readonly fields
19370
19371         * ssa.c (fold_tree): start cfold support for long (very simple
19372         cases only)
19373
19374         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19375
19376 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19377
19378         * inssel.brg: fixed memcpy (bug #44219).
19379
19380 2003-06-05  Dick Porter  <dick@ximian.com>
19381
19382         * driver.c: Set the glib log levels to not abort if g_message
19383         recurses.
19384
19385         g_set_prgname() has to happen before mini_init() so that the
19386         process handle gets the info.
19387         
19388 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19389
19390         * driver.c: add intrins to the default optimizations to get wider
19391         exposure.
19392
19393 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19394
19395         * mini.h: some large basic blocks will overflow a 16-bit
19396         integers for symbolic registers.
19397
19398 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19399
19400         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19401         (mono_arch_output_basic_block): fix bug 43499 
19402
19403 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19404
19405         * mini.c: kill duplicated definition of mono_debug_format.
19406
19407 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19408
19409         * mini-x86.c, arrays.cs: fixed register allocation bug.
19410
19411 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19412
19413         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19414
19415         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19416
19417 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19418
19419         * mini.c:
19420         (print_method_from_ip): also print source location information if
19421         available.
19422
19423 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19424
19425         * mini.c (mono_find_block_region): bug fix in region code
19426         (mini_method_compile): enable removing unreachable code again, but
19427         only in methods without exception clauses.
19428
19429 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19430
19431         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19432         Implemented arglist opcode and handling of TypedReference type.
19433         Fixed x86 call convention when a structure is returned.
19434         Minimal support for calling static vararg methods.
19435
19436 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19437
19438         * mini.c (mini_method_compile):  always remove unreachable code,
19439         because the code in them may be inconsistent  (access to dead
19440         variables for example).
19441
19442 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19443
19444         * driver.c, debug-mini.c: warning fixes.
19445
19446 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19447
19448         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19449
19450 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19451
19452         * mini.c: thread-static fields are registered in mono_class_vtable(),
19453         so ensure the function is called before checking for them.
19454
19455 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19456
19457         * mini.c (optimize_branches): fix for bug 43586
19458
19459         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19460         overflow (fixes Bug #43639)
19461
19462 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19463
19464         * mini.c, objects.cs: allow the use of stobj for primitive types.
19465
19466 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19467
19468         * mini.c: be less strict about argument checking until we support
19469         running the verifier.
19470
19471 2003-05-27  Nick Drochak <ndrochak@gol.com>
19472
19473         * basic-long.cs: tests for (ulong)int * (ulong)int also
19474         * mini.c: use the same trick for (ulong)int * (ulong)int
19475
19476 2003-05-27  Nick Drochak <ndrochak@gol.com>
19477
19478         * basic-long.cs: add regression test for (long)int * (long)int
19479         * cpu-pentium.md: add op_bigmul specification
19480         * inssel-long32.brg: add OP_BIGMUL rule
19481         * mini-ops.h: add OP_BIGMUL
19482         * mini-x86.c: register allocator: handle case where src1 needs to be
19483         in EAX.
19484         * mini.c: substitute special BIGMUL opcode in the tree for 
19485         (long)int * (long)int
19486
19487 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19488
19489         * jit-icalls.c: call the type ctor on field access if needed.
19490
19491 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19492
19493         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19494         to a method (including results of ldelema, bug#43207).
19495
19496 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19497
19498         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19499         colors to show exception handler blocks.
19500
19501         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19502         (fix for pinvoke7.cs).
19503
19504 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19505
19506         * mini.h, mini.c: ensure correct initialization order for types that
19507         require it. Prepare for lazy compilation of jit icall wrappers.
19508         Provide a name for opcode emulation to reduce unneeded mallocing.
19509
19510 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19511
19512         * mini-x86.c: better register restoring code and profiling
19513         support for tail calls.
19514
19515 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19516
19517         * mini.h, driver.c: prepare for leaf methods optimization.
19518
19519 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19520
19521         * mini.c: get targets of branches before converting a method.
19522
19523 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19524
19525         * mini.c (optimize_branches): added some experimental code (disbaled) 
19526
19527 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19528
19529         * mini.c (optimize_branches): fix branch to branch optimization 
19530
19531         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19532
19533         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19534
19535         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19536
19537         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19538         if needed.
19539
19540 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19541
19542         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19543         enable use of interface variables again.
19544
19545         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19546         I1 to registers because there is no simply way to sign extend 8bit
19547         quantities in caller saved registers on x86.
19548
19549         * inssel-float.brg: set costs of some rules to 2 so
19550         that monobure always select the arch. specific ones if supplied,
19551         regardless of the order we pass the files to monoburg.
19552
19553 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19554
19555         * mini.c, mini-x86.c: since the magic trampoline for jumps
19556         can't patch the code directly, we do it as soon as the
19557         method gets compiled.
19558
19559 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19560
19561         * mini-x86.c, mini.h: introduce a new patching method
19562         to support CEE_JMP and tail calls.
19563         * mini.c: obey tail.call. Don't precompile methods target
19564         of CEE_JMP.
19565         * tramp-x86.c: new trampoline code to handle methods
19566         reached through a jump.
19567
19568 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19569
19570         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19571         bit values to registers
19572
19573 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19574
19575         * mini.c (mono_compile_get_interface_var): share interface
19576         variables if possible.
19577
19578 2003-05-16  Martin Baulig  <martin@ximian.com>
19579
19580         * debug-mini.c (mono_init_debugger): New function to initialize
19581         the debugger.  This is not in the debugger since it needs to
19582         access some of mini's internals.
19583
19584 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19585
19586         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19587
19588 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19589
19590         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19591         for value type handling.
19592
19593 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19594
19595         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19596         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19597
19598 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19599
19600         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19601           the constructor through a proxy.
19602
19603 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19604
19605         * jit-icalls.c, inssel.brg: fixes to array element address
19606         calculations.
19607
19608 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19609
19610         * mini-x86.c (is_regsize_var): allocate pointer to registers
19611
19612 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19613
19614         * driver.c: fixed typo, added intrins to the set of optimizations
19615         tested with regressions.
19616
19617 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19618
19619         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19620         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19621         test case.
19622
19623 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19624
19625         * inssel.brg: remove some common pop instructions without side effects
19626
19627 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19628
19629         * inssel-x86.brg: fixed thinko in int to double conversions.
19630
19631 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19632
19633         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19634
19635 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19636
19637         * inssel-long32.brg: two more missing instructions.
19638
19639 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19640
19641         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19642         if not already set.
19643
19644 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19645
19646         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19647         correctly.
19648
19649         * basic-float.cs: Added tests for negative zero.
19650
19651 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19652
19653         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19654         a couple of missing operations for long casts, with test cases.
19655
19656 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19657
19658         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19659
19660 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19661
19662         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19663         code size estimation.
19664
19665 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19666
19667         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19668         abstract methods (fix bug 42542)
19669
19670         * aot.c: add ability to handle array types
19671         
19672 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * mini.c: Call the _specific versions of the object allocation
19675         functions if possible.
19676
19677 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19678
19679         * driver.c: call setlocale ().
19680
19681 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19682
19683         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19684         windows build.
19685
19686 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19687
19688         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19689
19690         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19691         wrappers (fix bug 42122)
19692
19693 2003-05-04  Martin Baulig  <martin@ximian.com>
19694
19695         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19696
19697         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19698         s/mini_set_defaults/mono_set_defaults/g.
19699
19700 2003-05-04  Martin Baulig  <martin@ximian.com>
19701
19702         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19703
19704 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19705
19706         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19707         (reported by Don Roberts).
19708
19709 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19710
19711         * mini.c: temporarily work around two bugs for this release.
19712
19713 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19714
19715         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19716         that contains -export-dynamic and it makes using the ld script
19717         useless.
19718         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19719
19720 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19721
19722         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19723         specific cpu.
19724
19725 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19726
19727         * mini.c: make sure leave calls all the needed finally blocks,
19728         even when the target jumps out of multiple exception clauses.
19729
19730 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19731
19732         * ldscript, Makefile.am: add linker script to reduce the number of
19733         exported symbols (should also fix the issues with libwine defining
19734         some of the same symbols in io-layer).
19735
19736 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * driver.c (mini_main): Avoid assertion when no file name is given on 
19739         the command line.
19740
19741 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19742
19743         * driver.c: added --version/-V command line option.
19744         Added the inline optimization in the regression tests.
19745
19746 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19747
19748         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19749         to the type in the method signature (fixes bug#42134).
19750
19751 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19752
19753         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19754
19755 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19756
19757         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19758
19759 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19760
19761         * driver.c: fixed bug #42100.
19762
19763 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19764
19765         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19766
19767 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19768
19769         * mini.c: moved most of the code required to do inlining to its own
19770         function so it can be reused. Inline also ctors if appropriate.
19771
19772 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19775         the runtime can call mono API functions.
19776
19777 2003-04-27  Martin Baulig  <martin@ximian.com>
19778
19779         * debug-mini.c (mono_debug_init_method): Added
19780         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19781         send a notification to the debugger.
19782
19783         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19784         running in the Mono Debugger, just pass the breakpoint number to
19785         mono_debug_init_method().
19786
19787         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19788
19789 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19790
19791         * mini.c: allow some more unsafe compares.
19792
19793 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19794
19795         * mini-x86.c, Makefile.am: make distcheck works (partially from
19796         a patch by Richard Lee <r.h.lee@attbi.com>).
19797         * regset.c, regset.h: removed, they are unused.
19798
19799 2003-04-25  Dick Porter  <dick@ximian.com>
19800
19801         * driver.c: Usage reports the name as 'mono' not 'mini'
19802         * exceptions-x86.c: Build and run on freebsd
19803
19804 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19805
19806         * Makefile.am: install the program with the 'mono' name and
19807         the library as libmono instead of mini and libmini.
19808
19809 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19810
19811         * driver.c: provide the APIs for the embedding interface of the old jit.
19812
19813 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19814
19815         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19816
19817 2003-04-23  Martin Baulig  <martin@ximian.com>
19818
19819         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19820
19821         * driver.c: Added `--debug' command line argument to enable
19822         debugging support.
19823
19824 2003-04-23  Martin Baulig  <martin@ximian.com>
19825
19826         * debug.[ch]: Removed.  The code is now in
19827         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19828
19829         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19830         last six months.
19831
19832 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19833
19834         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19835
19836 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19837
19838         * mini.c:
19839         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19840         mono_domain_finalize.
19841         (mini_method_compile): use mono_method_profile* if the the option is
19842         enabled.
19843
19844 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19847         methods with their wrapper.
19848
19849         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19850         methods with their wrapper.
19851
19852         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19853         their wrapper.
19854
19855         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19856         wrapper.
19857
19858         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19859         methods.
19860
19861 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19862
19863         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19864
19865 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19866
19867         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19868         of the mempool. This is slightly faster and uses less memory
19869
19870 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19871
19872         * mini.c: avoid O(n) allocation for variables.
19873
19874 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19875
19876         * mini.c: handle items on the stack after inlining methods.
19877
19878 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19879
19880         * mini.c: make the method->opcode optimization dependent
19881         on MONO_OPT_INSTRINS and do it lazily.
19882
19883 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19884
19885         * driver.c: print overall results at the end of regression run.
19886
19887 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19888
19889         * inssel.brg: don't overwrite symbolic registers.
19890
19891 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19892
19893         * inssel-x86.brg: fix conversion from long to float.
19894
19895 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19896
19897         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19898
19899 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
19902
19903         * driver.c: Added --print-vtable option as in the old JIT.
19904
19905 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19906
19907         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19908
19909 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19910
19911         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19912
19913 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * mini.c regalloc.c regalloc.h: Fix memory leak.
19916
19917 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19918
19919         * aot.c (mono_aot_get_method): register all used strings
19920
19921 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19922
19923         * mini.c: always intern strings references with ldstr at compile time.
19924
19925 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19926
19927         * Makefile.am: add BUILT_SOURCES.
19928
19929 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19930
19931         * driver.c: give a better error message when the assembly to execute
19932         doesn't have an entry point.
19933
19934 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
19935
19936         * Makefile.am: added hack for automake
19937
19938         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
19939         correct sematics.
19940
19941         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
19942
19943 22003-04-07  Martin Baulig  <martin@ximian.com>
19944
19945         * Makefile.am: Added Makefile.am.
19946
19947         * debugger-main.c: Removed, this is now in the debugger where it
19948         belongs.
19949
19950         * mini.pc.in: Call this package `mini' for the moment.
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
19964
19965