* HttpRuntime.cs: Avoid ANE on Windows when HttpRuntime is used
[mono.git] / mono / mini / ChangeLog
1 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4
5         * mini-llvm.c: Update comments.
6
7         * mini.h (COMPILE_LLVM): New macro.
8
9         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
10
11         * ssa.c (mono_ssa_compute): Ditto.
12         
13         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
14         the unwind ops from a DWARF FDE.
15
16         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
17         methods by extracting the dwarf unwind ops from the unwind info generated
18         by LLVM.
19         
20         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
21         calls.
22
23         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
24         addressing modes.
25
26 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
27
28         * Makefile.am (llvm_sources): Enable this.
29
30         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
31         failing back to the JIT if something cannot be handled.
32
33         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
34         compiling with LLVM.
35
36         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
37         compiling with LLVM.
38
39         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
40         compiling with LLVM.
41
42         * mini-ops.h: Add a few opcodes needed by LLVM.
43
44         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
45         has no unwind info.
46
47         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
48         backend.
49
50         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
51
52         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
53
54 2009-04-01  Mark Probst  <mark.probst@gmail.com>
55
56         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
57         ridiculously large methods.
58
59 2009-03-31  Martin Baulig  <martin@ximian.com>
60
61         * debug-debugger.c (debugger_remove_breakpoint): Call
62         mono_debugger_remove_class_init_callback ().
63
64 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
65
66         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
67         right before emitting code, not at the start.
68
69         * mini.c (mono_postprocess_patches): Extract this into a separate function
70         from mono_codegen ().
71
72         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
73         byref types correctly.
74
75 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
76
77         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
78         by the last change.
79
80 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
81
82         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
83         indirect calls, this avoids problems where get_vcall_slot () would get
84         confused by the native code for the instruction preceeding the call.
85         (mono_arch_get_vcall_slot): Simplify this.
86         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
87
88         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
89         register allocator now seems to depend on them instead of the data in
90         cpu-<ARCH>.md.
91
92         * mini.c (mini_method_compile): Throw the correct type of exception if
93         mono_method_get_header () fails because of a loading error.
94
95 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
96
97         * mini.c (mini_method_compile): Clear the loader error if the method
98         header cannot be decoded.
99
100         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
101         interface methods on proxies correctly.
102
103         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
104         this argument for vtype methods. Add precise liveness info for arguments.
105
106         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
107         LIVERANGE_START/END opcodes.
108
109         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
110         for arguments and values in registers.
111
112 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
113
114         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
115         return a valuetype. Fixes #487518.
116
117         * iltests.il: Add a test.
118         
119         * aot-compiler.c: Use mono_thread_create () to create helper threads.
120
121         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
122         closed over a null reference correctly.
123
124 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
125
126         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
127
128 2009-03-25  Mark Probst  <mark.probst@gmail.com>
129
130         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
131         allocated to the same registers as fixed sregs.
132
133 2009-03-24  Mark Probst  <mark.probst@gmail.com>
134
135         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
136         ATOMIC_CAS_IMM ops.
137
138         * method-to-ir.c: Handle more cases for
139         Interlocked.CompareExchange.
140
141         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
142         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
143         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
144
145 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
146
147         * aot-runtime.c (decode_method_ref): Fix a warning.
148
149         * unwind.c (mono_unwind_frame): Ditto.  
150
151 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
152
153         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
154         (mono_compile_assembly): Enable the binary writer for full-aot as well.
155
156         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
157         fix the handling of large values in the ALU_PC_G0_NC relocation.
158
159 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
160
161         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
162
163 2009-03-22  Mark Probst  <mark.probst@gmail.com>
164
165         * method-to-ir.c (mono_spill_global_vars): Support for ternary
166         ops.
167
168 2009-03-22  Mark Probst  <mark.probst@gmail.com>
169
170         * method-to-ir.c: MINI_OP3 needs a comma.
171
172         * method-to-ir.c, mini.h, mini.c: Remove
173         mono_init_op_sreg_counts ().
174
175 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
176
177         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
178         OP_JMP.
179         
180         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
181         assertion.
182
183         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
184
185         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
186         code somewhat.
187
188 2009-03-21  Mark Probst  <mark.probst@gmail.com>
189
190         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
191         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
192         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
193         operations.
194
195 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
196
197         * driver.c: Change location of gc_wrapper.h.
198
199         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
200         inside finally clauses correctly. Fixes #485721.
201
202         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
203         after the change above.
204
205         * exceptions.cs: Add a test.
206         
207 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
208
209         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
210
211         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
212         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
213         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
214
215         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
216         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
217
218 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
219
220         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
221         Simplify logic for ensure_method_is_allowed_to_call_method. 
222         Handle wrappers on callers.
223
224 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
225
226         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
227         them don't run yet.
228
229         * basic-simd.cs: Fix the names of some test methods.
230
231 2009-03-18  Geoff Norton  <gnorton@novell.com>
232
233         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
234
235 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
236
237         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
238
239 2009-03-17  Jb Evain  <jbevain@novell.com>
240
241         * driver.c: remove now uneeded call to mono_gc_base_init before
242         mono_profiler_load.
243
244 2009-03-17  Jb Evain  <jbevain@novell.com>
245
246         * dwarfwriter.c (token_handler): handle more cases.
247
248 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
249
250         * method-to-ir.c: Remove more dead code (that was required only
251         because of method_is_safe). Fix compiler warnings.
252
253 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
254
255         * method-to-ir.c: Remove unneeded/useless method_is_safe
256         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
257
258 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * mini.c (mini_method_compile): Print the method been compiled with
261         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
262         for people not familiar with the runtime.
263
264 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
267         a managed object which is later put into a GList. Return its class instead.
268
269         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
270         stack slots when using sgen.
271
272 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
273
274         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
275
276 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
277
278         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
279         > so it works on the first vreg as well.
280
281 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
282
283         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
284         trigger randomly.
285
286         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
287         
288         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
289         implement GArray.
290
291 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
292
293         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
294         native->IL offset mapping.
295
296 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
297
298         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
299
300         * basic.cs: Add a test.
301
302 2009-03-11  Mark Probst  <mark.probst@gmail.com>
303
304         * mini-x86.c (mono_arch_output_basic_block): Use different
305         registers in case the ones we want to overwrite are used by the
306         other operand.  Fixes regression in #480807.
307
308 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
309
310         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
311
312         * dwarfwriter.c (emit_line_number_info): The line number info for
313         IL code was off by one. Fix that.
314
315         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
316         stack.
317
318 2009-03-09  Mark Probst  <mark.probst@gmail.com>
319
320         Contributed under the terms of the MIT/X11 license by Steven
321         Munroe <munroesj@us.ibm.com>.
322
323         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
324         Fixes #483462.
325
326 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
327
328         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
329         as well.
330
331 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
332
333         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
334         the delegate ctor handling code. Fixes #482638.
335         
336         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
337         #481458.
338
339         * iltests.il.in: Add a test.
340         
341         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
342         mini-posix.c.
343
344 2009-03-05  Mark Probst  <mark.probst@gmail.com>
345
346         * mini-trampolines.c (mono_create_jump_trampoline): If the method
347         is shared generic code, return the trampoline, even if the method
348         has already been compiled.  Fixes #479763.
349
350         * mini.c, mini.h: New function
351         mono_jit_find_compiled_method_with_jit_info() which is the same as
352         mono_jit_find_compiled_method() but also returns the jit info.
353
354 2009-03-05  Mark Probst  <mark.probst@gmail.com>
355
356         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
357         for methods which actually have one.  For all other methods, make
358         sure the this argument var is live the whole method.
359
360         * mini.c (mini_method_compile): Every shared method has a
361         this/vtable/mrgctx info.  Fixes #480807.
362
363 2009-03-05  Mark Probst  <mark.probst@gmail.com>
364
365         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
366         generic/imt thunks where some entries branch through the vtable,
367         while other entries branch directly.
368
369 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
370
371         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
372
373         * mini-windows.c: Ditto.
374         
375         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
376         ctors.
377
378 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
379
380         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
381         down an assert.
382
383 2009-03-04  Mark Probst  <mark.probst@gmail.com>
384
385         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
386         #481403.
387
388 2009-03-04  Mark Probst  <mark.probst@gmail.com>
389
390         * exceptions-x86.c: Include debug-mini.h - fixes build.
391
392 2009-03-04  Martin Baulig  <martin@ximian.com>
393
394         * debug-mini.c: Clean up the exception API and add documentation.
395         (mono_debugger_handle_exception): New public method; this is
396         called when throwing an exception or encountering an unhandled one.
397         (mono_debugger_call_exception_handler): Formerly known as
398         mono_debugger_handle_exception(); this is used to tell the
399         debugger that we're about to invoke an exception handler.
400
401 2009-03-04  Martin Baulig  <martin@ximian.com>
402
403         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
404         ../metadata/mono-debug-debugger.c; save and reset exception state.
405
406 2009-03-02  Martin Baulig  <martin@ximian.com>
407
408         * debug-mini.c: Moved the debugger exception handling here from
409         ../metadata/mono-debug-debugger.c.
410
411         * debug-mini.h
412         (MonoDebuggerExceptionAction): New exception typedef.
413
414         * debug-mini.c
415         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
416
417         * exceptions-amd64.c
418         (mono_amd64_throw_exception): Use the new debugger exception
419         handling code.
420
421         * mini-exceptions.c
422         (mono_handle_exception_internal): Don't call
423         mono_debugger_unhandled_exception() here.
424
425 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
426
427         * mini.c aot-compiler.c: Update after the changes to 
428         mono_marshal_get_runtime_invoke ().
429
430         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
431         Virtual generic methods might not have method->slot set, work around
432         that.
433
434         * generics.cs: Add a test.
435
436 2009-03-02  Geoff Norton  <gnorton@novell.com>
437
438         * mini.c:
439         * driver.c: Allow signal chaining of SIGFPE as well.
440
441 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
442
443         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
444         this since it now receives the method not its generic context in the
445         IMT reg.
446
447         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
448         generic/imt thunks where some entries branch through the vtable, while
449         other entries branch directly.
450
451         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
452
453         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
454         support for interface methods as well.
455
456         * mini-trampolines.c: Add support for virtual generic methods in interfaces
457         using the normal IMT thunks.
458
459         generics.cs: Add new tests.
460         
461         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
462         the generic inst to the generic imt thunks. This fixes AOT support, 
463         improves consistency with the normal IMT thunks, and makes it easier to
464         add support for interface generic virtual methods later.
465
466         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
467         
468 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
469
470         * driver.c (mono_set_signal_chaining): New public API function to enable
471         signal chaining on POSIX platforms.
472
473         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
474         (si@lindenlab.com) to implement signal chaining. The original patch was
475         contributed under the MIT X/11 license:
476         https://bugzilla.novell.com/show_bug.cgi?id=318894
477
478 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
479
480         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
481         too until it can be made to run on amd64.
482
483 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
484
485         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
486         to  get_generic_context_from_code () + get_call_info () if possible.
487
488 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
489
490         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
491         suspend-on-sigsegv functionality.
492
493         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
494         to suspend when a native SIGSEGV is received. This is useful for debugging
495         crashes which don't happen under gdb, since a live process contains more
496         information than a core file.
497
498         * mini-exceptions.c (mono_print_thread_dump): Use 
499         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
500
501         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
502
503         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
504         
505         * basic-float.cs: Disable the tests which currently fail on amd64.
506
507         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
508         value to mono_arch_patch_callsite () to fix crashes.
509         
510         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
511
512 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
513
514         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
515         nop code by patching the call address to point to the nullified class init
516         trampoline, as the former does not seem to be safe on SMP machines.
517
518 2009-02-23  Mark Probst  <mark.probst@gmail.com>
519
520         * mini-ops.h: Fix the argument types for a few x86 opcodes where
521         they were wrong.
522
523 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
524
525         * basic-float.cs basic-calls.cs: Fix warnings.
526
527 2009-02-22  Mark Probst  <mark.probst@gmail.com>
528
529         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
530         correct frame pointer in the LMF.  Should fix #478394.
531
532 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
533
534         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
535
536         * image-writer.c: Make the binary writer less verbose.
537
538 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
539
540         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
541         are called from runtime invoke wrappers.
542
543 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
544
545         * cpu-ppc.md (store_memindex): Increase the size of this.
546
547 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
548
549         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
550
551         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
552
553         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
554         OP_LCONV_TO_R_UN.
555
556         Last fix for of #467201.
557
558
559 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
560
561         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
562
563         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
564         and long_conv_to_r8_2:
565
566         Fixed part of #467201.
567
568 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
569
570         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
571
572         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
573         conversion to 32 bits.
574
575         * cpu-x86.md: Increase the size of int_conv_to_r4.
576
577         * basic-float.cs: Add a test for this.
578
579         Fixed part of #467201.
580
581 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
582
583         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
584
585         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
586         conversion to 64 bits.
587
588         * basic-float.cs: Add a test for this.
589
590         Fixed part of #467201.
591
592 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
595
596         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
597         This behavior is compatible with MS.
598
599         * iltest.il.in: Add a test for this.
600
601         Fixed part of #467201.
602
603 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
604
605         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
606
607         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
608         change the precision of the value.
609
610         * cpu-x86.md: Define len for float_conv_to_r4.
611
612         * basic-float.cs: Add a test for this.
613
614         Fixed part of #467201.
615
616 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
617
618         * mini.c: Adjust locking order to the new semantics where the loader lock
619         comes first.
620
621 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
622
623         * aot-runtime.c:
624         * mini-amd64.c:
625         * mini-arm.c:
626         * mini-ia64.c:
627         * mini-mips.c:
628         * mini-ppc.c:
629         * mini-sparc.c:
630         * mini-trampolines.c:
631         * mini-x86.c:
632         * mini.c:
633         * tramp-alpha.c:
634         * tramp-amd64.c:
635         * tramp-arm.c:
636         * tramp-hppa.c:
637         * tramp-ia64.c:
638         * tramp-mips.c:
639         * tramp-ppc.c:
640         * tramp-s390.c:
641         * tramp-s390x.c:
642         * tramp-sparc.c:
643         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
644
645 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
646
647         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
648         as it is incorrect.
649
650 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
651
652         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
653         for cctors if needed.
654
655 2009-02-17  Mark Probst  <mark.probst@gmail.com>
656
657         * mini-ppc.c: Fix build on Darwin.
658
659 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
660
661         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
662         version instead of 3 as valgrind doesn't like version 3.
663
664         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
665
666         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
667         usable for hashing methods.
668         (emit_extra_methods): Use the new hash to avoid putting every method in the
669         same hash bucket.
670
671         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
672
673         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
674         whenever a method ref could match a method.
675         
676         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
677         test to fail.
678         
679         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
680         methods refs.
681
682         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
683
684         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
685         the encoding buffer.
686
687         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
688         mono_method_get_header () on inflated methods as an optimization.
689
690 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
691
692         * ssa.c (fold_ins): Fix another crash if the instruction following the
693         switch was optimized away.
694
695 2009-02-16  Mark Probst  <mark.probst@gmail.com>
696
697         Contributed under the terms of the MIT/X11 license by Steven
698         Munroe <munroesj@us.ibm.com>.
699
700         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
701
702 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
703
704         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
705         around the mono_domain_alloc calls, it is now done by the functions
706         themselves.
707
708         * aot-compiler.c (compile_method): Only add wrappers referenced by
709         the method if compiling with full AOT.
710         (mono_compile_assembly): Error out if --aot=full is specified on
711         a platform where it is not supported.
712
713         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
714         on ARM too.
715
716         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
717         AOT support.
718
719         * aot-runtime.c (load_named_code): Handle 
720         mono_arm_throw_exception_by_token.
721
722         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
723
724         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
725         unaligned.
726
727         * Makefile.am (fullaotcheck): Exit if a test fails.
728
729         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
730         on ARM.
731         (mono_compile_assembly): Handle the assembler failing.
732
733         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
734         accepting subsections of .bss.
735
736         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
737         was optimized away.
738
739         * aot-compiler.c: Remove some unused includes.
740         
741         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
742         now in MonoImageWriter.
743
744         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
745         code sequence which matches a non-virtual call. Fixes #472654.
746
747 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
748
749         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
750         xdebug code.
751         
752         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
753         use the image/dwarf writers directly.
754
755         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
756         field.
757
758         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
759         MonoDwarfWriter.
760
761         * image-writer.h: Fix some typos.
762
763         * dwarfwriter.h dwarfwriter.c: New files.
764         
765         * aot-compiler.c: Extract the DWARF info writing functionality into a 
766         separate module.
767
768         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
769         argument to return unwind info.
770
771         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
772
773         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
774         
775         * aot-runtime.c (decode_method_ref): Add a case for 
776         MONO_AOT_METHODREF_WRAPPER_NAME.
777
778         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
779         for AOT.
780
781         * aot-compiler.c (encode_method_ref): Use the new constants.
782
783         * aot-runtime.c (decode_method_ref): Ditto.
784
785         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
786         be compiled, not the icall itself.
787
788 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
789
790         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
791         using decode_method_ref ().
792
793         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
794         convert it to an in32. Fixes #475859.
795
796         * arrays.cs: Add a test.
797
798 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
799
800         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
801         OP_LCONV_TO_U2.
802
803         * basic-long.cs: Add a test.
804
805 2009-02-12  Mark Probst  <mark.probst@gmail.com>
806
807         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
808         remove the frame pointer in leaf methods which don't receive any
809         arguments, don't throw exceptions and don't do dynamic stack
810         allocations.
811
812 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
813
814         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
815         the fail_tramp changes. Hopefully fixes #475132.
816
817 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
818
819         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
820         instead of mono_metadata_signature_dup_full.
821
822 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
823
824         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
825         for processing jump tables. Fixes #473787.
826
827 2009-02-11  Mark Probst  <mark.probst@gmail.com>
828
829         * mini-generic-sharing.c: mini_method_get_context() just calls
830         mono_method_get_context_general() now.
831
832         * mini.c, mini.h: Moved get_object_generic_inst(),
833         construct_object_context_for_method() and
834         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
835
836 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
837
838         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
839         basic block fell through to its successor bblock without a branch. Fixes
840         #474718.
841
842         * iltests.il.in: Add a test.
843         
844         * aot-compiler.c (encode_method_ref): Encode methods of array types.
845         (can_encode_patch): We can now handle arrays of generic parameters and
846         array methods.
847
848         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
849
850         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
851         the AOT file to avoid some #ifdefs in aot-runtime.c
852
853         * mini.h: Bump AOT file format version.
854
855 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
856
857         * Makefile.am (fullaotcheck): Make this run the tests.
858
859         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
860
861 2009-02-10  Mark Probst  <mark.probst@gmail.com>
862
863         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
864         individually.  Fixes #473482.
865
866 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
867
868         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
869
870 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
871
872         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
873         (mono_compile_assembly): Hush compile warnings about
874         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
875         code path.
876
877 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
878
879         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
880
881         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
882
883         * aot-compiler.c: Fix arm support.
884
885         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
886         img_writer_emit_unset_mode () function.
887
888         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
889         (mono_unwind_get_dwarf_pc_reg): Ditto.
890
891         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
892         Move almost all platform specific code to a set of arch_ functions, 
893         and document them to ease porting.
894         
895         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
896
897         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
898
899         * aot-compiler.c: Extract the image writing functionality into a separate
900         module to reduce the size of this file.
901
902 2009-02-09  Geoff Norton  <gnorton@novell.com>
903
904         * mini-s390.c: Fix the signature of emit_sig_cookie.
905
906 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
907
908         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
909
910         * aot-runtime.c (is_shared_got_patch): Ditto.
911
912         * aot-runtime.c (load_named_code): Cope with the fact that 
913         decode_got_entry () won't decode the patch fully if its corresponding got
914         entry is already filled.
915         
916         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
917         Initialize *ji.
918         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
919
920         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
921         as the moving pointer instead of 'buf' for consistency with the rest of the
922         codebase.
923         (mono_arch_create_monitor_exit_trampoline): Ditto.
924
925         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
926         generic_class_init trampolines.
927         (add_generic_class): Extract some code from add_generic_instances () into a
928         separate function so it can be called from other places too.
929         (compile_method): Call add_generic_class () for the classes of inflated methods
930         referenced by the method.
931         (can_encode_patch): Allow references to generic parameters.
932
933         * aot-runtime.c: Add support the patches required by the new trampolines.
934         
935         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
936         support.
937
938         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
939         full-aot support.
940
941         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
942         this from get_throw_pending_exception, make the signature full aot compatible.
943
944         * Makefile.am (fullaotcheck): New target to run full-aot tests.
945
946         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
947
948         * exceptions.cs: Add a test.
949
950 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
951
952         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
953         use the DWARF_DATA_ALIGN constant instead.
954
955         * exception-<ARCH>.c: Update after the above change.
956
957         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
958         dwarf unwinder.
959
960         * mini-arm.c: Enable the dwarf unwinder.
961
962         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
963         instead of mono_class_setup_vtable ().
964
965 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
966
967         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
968         dwarf unwinder.
969
970         * mini-x86.h: Enable the dwarf unwinder.
971
972 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
973
974         Fix mcs/tests/test-7.cs
975         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
976         2009-02-03.
977
978 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
979
980         * mini.c (print_jit_stats): Remove some unused statistics.
981
982 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
983
984         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
985
986 2009-02-05  Mark Probst  <mark.probst@gmail.com>
987
988         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
989         the method we get from mono_object_get_virtual_method() because
990         that function does it properly, now.
991
992 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
993
994         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
995         opcodes. Fixes #472775.
996
997 2009-02-05  Mark Probst  <mark.probst@gmail.com>
998
999         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1000         fact that mono_find_jit_info() sometimes returns the context
1001         corresponding to the jit info in new_ctx.  Fixes #472600.
1002
1003 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1004
1005         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1006         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1007         klass->enum_basetype directly.
1008
1009         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1010         enum subtypes.
1011
1012         * unwind.c: Avoid 0 sized arrays.
1013
1014 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1017         size on systems with 64k pages. Fixes #471389.
1018
1019 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1020
1021         Contributed under the terms of the MIT/X11 license by Steven
1022         Munroe <munroesj@us.ibm.com>.
1023
1024         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1025         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1026         necessary.
1027
1028 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1029
1030         Contributed under the terms of the MIT/X11 license by Steven
1031         Munroe <munroesj@us.ibm.com>.
1032
1033         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1034         comparison fix.
1035
1036         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1037         The trampoline can be longer on PPC64.
1038
1039 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1040
1041         Contributed under the terms of the MIT/X11 license by Steven
1042         Munroe <munroesj@us.ibm.com>.
1043
1044         * mini-ppc.c: Compiler warning fixes and trivial code
1045         simplifications.
1046
1047 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1050         ins->dreg which could be a hardware register, not a vreg.
1051
1052         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1053         
1054         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1055         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1056
1057         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1058         
1059         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1060         ->dreg, that is not the vreg we are looking for.
1061
1062         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1063
1064         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1065         LIVERANGE_END.
1066
1067         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1068         strange crashes.
1069
1070 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1071
1072         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1073
1074         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1075         the line diff is 0.
1076
1077         * aot-compiler.c: Add xdebug support on x86.
1078
1079         * unwind.c: Add x86 support.
1080         
1081         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1082         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1083
1084         * mini.c (mini_method_compile): Ditto.
1085         
1086         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1087         the variable index.
1088
1089         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1090         which mimic .push_section/.pop_section in GAS.
1091         
1092         * aot-compiler.c: Emit precise live range information for variables.
1093
1094         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1095
1096         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1097         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1098         them.
1099
1100         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1101         the live ranges of variables.
1102
1103         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1104         of the variable in terms of native offsets.
1105
1106 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1107
1108         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1109         
1110 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1111
1112         Contributed under the terms of the MIT/X11 license by Steven
1113         Munroe <munroesj@us.ibm.com>.
1114
1115         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1116         order (offset then base reg) for ppc_load_multiple_regs.
1117         (emit_save_saved_regs) Correct operand order for
1118         ppc_store_multiple_regs.
1119         (mono_arch_get_call_filter): Correct operand order for
1120         ppc_load_multiple_regs.
1121
1122         * mini-ppc.c (emit_memcpy): Fix operand order for
1123         ppc_load_reg_update and ppc_store_reg_update.
1124         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1125         (mono_arch_emit_epilog): Correct operand order for
1126         ppc_load_multiple_regs.
1127
1128         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1129         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1130
1131 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1132
1133         * cpu-ppc64.md: Fixed storer4_memindex length.
1134
1135 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1138         line number info.
1139         
1140         * aot-compiler.c (emit_line_number_info): Optimize this.
1141
1142 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1145         
1146         * aot-compiler.c: Add debug info for methods without debug info by
1147         emitting an IL file and having the line number info referencing that file.
1148
1149         * aot-compiler.c: Optimize the size of the generated line number info.
1150
1151         * aot-compiler.c: Emit line number info in xdebug mode.
1152
1153         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1154         million arguments.
1155
1156 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1159
1160         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1161         is used.
1162
1163 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1164
1165         * basic-calls.cs: Test for the weird crash found on arm.
1166         
1167 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1168
1169         * cpu-arm.md: Increase the size of storer8_membase_reg and
1170         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1171
1172         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1173         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1174         reg to LR otherwise we'll be loading/storing from just the offset.
1175
1176 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1177
1178         Question: if we are storing gint32's inside the "*native_offset",
1179         should we change the signature to "gint32 *native_offset" to
1180         ensure that we do not have type definition problems?
1181         
1182         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1183         an int * as this is what the other function expects, causes
1184         problems with Freescale's compiler that defined int32_t to be a
1185         long and makes int incompatible 
1186
1187 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1188
1189         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1190         filename conflict with bjam.
1191
1192 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1193
1194         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1195         as it might use decomposed ops.
1196
1197 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1198
1199         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1200
1201         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1202         is defined.
1203
1204         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1205
1206         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1207         offsets.
1208
1209         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1210         way registers are stored in MonoContext on arm.
1211
1212         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1213         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1214
1215         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1216
1217         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1218
1219         * mini.c (mini_init): Register mono_isfinite.
1220
1221         * jit-icalls.c (mono_isfinite): New jit icall.
1222
1223         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1224         
1225         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1226         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1227         the parent frame.
1228
1229 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1230
1231         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1232         separate frame and stack pointers, so we must use FP to find the register
1233         spill area.
1234         The FP reg is retrieved from the MonoContext::regs array.
1235
1236 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1239         as FPA requires it.
1240
1241 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1242
1243         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1244         return R4 and R8 when not running under softfloat.
1245
1246         Fixes basic-calls.exe
1247
1248 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * mini-arm.c: Implement some overflow opcodes.
1251
1252 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1253
1254         * ssa.c: handle another alloca.h
1255
1256         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1257         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1258         MONO_ARCH_USE_SIGACTION. 
1259
1260         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1261         capability defines.
1262
1263         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1264
1265         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1266         PPC targets as sigaction does not exist on all platforms, define
1267         this on a per-platform basis.
1268
1269         Instead of erroring out if the platform is not defined, include
1270         mini-ppc-os.h, and expect that the OS specific setting provides
1271         the required information.   
1272
1273 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * aot-compiler.c: Fix --enable-minimal=aot.
1276
1277 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1280         previous change.
1281
1282 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1283
1284         * exceptions-arm.c: Fix warnings.
1285
1286         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1287         ARM.
1288
1289         * mini-x86.c: Fix --enable-minimal=jit build.
1290
1291         * mini.c: Really fix --enable-minimal=jit build.
1292         
1293         * mini.c (construct_object_context_for_method): Move this outside
1294         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1295
1296         "Backported" of r124984 from 2.0 branch.
1297         
1298         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1299
1300         "Backport" of r124977 + r124978 from 2.0 branch.
1301         
1302         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1303         to avoid calling mono_exception_from_token () from the throw trampoline.
1304         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1305         for throwing corlib exceptions, this fixes full-aot support for corlib
1306         exceptions.
1307
1308         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1309
1310 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1311
1312         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1313         part of the changes to split the code in mini into operating
1314         system specific files.
1315
1316         This patch was done by copying mini.c to the respective files to
1317         preserve SVN history.
1318
1319 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1322
1323 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1324
1325         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1326         remoting-invoke-with-check wrappers of shared methods.
1327
1328         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1329
1330 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1331
1332         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1333         optimization if the top of stack is the last instruction in the
1334         bblock.  Otherwise it might have been used after its definition.
1335         Fixes #469742.
1336
1337 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1340         method as well when get_vcall_slot () fails to match a code sequence.
1341
1342         * mini-arm.c: Fix the android build, which doesn't have
1343         __aeabi_read_tp.
1344
1345 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1346
1347         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1348         the s390x build.
1349
1350 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1351
1352         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1353
1354 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1357         and put its id into jinfo->used_regs. This is only used on amd64,
1358         which is currently the only platform generating unwind info.
1359
1360         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1361         the dwarf unwinder. This is required to correctly handle async exceptions
1362         like thread abort and stack overflows, which can happen while a method
1363         is in the middle of its prolog or epilog.
1364         
1365         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1366         the unwind info belonging to an AOTed method.
1367
1368         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1369         into cfg->unwind_ops.
1370         
1371         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1372
1373         * mini.c (mini_init): Call mono_unwind_init ().
1374         (mini_cleanup): Call mono_unwind_cleanup ().
1375
1376         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1377         unwind info to be shared between methods.
1378
1379         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1380         saved in the LMF.
1381
1382         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1383         get_throw_pending_exception () to avoid initialization races.
1384
1385         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1386         mono_arch_exceptions_init () function.
1387
1388         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1389
1390 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * mini.c (mono_get_domain_intrinsic): New helper function.
1393         (mono_get_thread_intrinsic): Ditto.
1394
1395         * mini-arm.c mini-ia64.c: Use the new helper functions.
1396         
1397         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1398         the last constrained_call change, since it is needed in the non-AOT
1399         case as well.
1400
1401         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1402         
1403         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1404         mono_get_lmf_addr () on arm eabi linux.
1405
1406 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1409         code sequence which matches a non-virtual call.
1410
1411 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1412
1413         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1414         stack pointer (r1).
1415
1416 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1419         runtime-invoke wrappers, since they are also shared based on signature.
1420
1421 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1422
1423         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1424         info from the (correct) context.
1425
1426 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1429         
1430         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1431         using dwarf unwinding info. Not yet used.
1432
1433         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1434
1435 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1436
1437         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1438         descriptors.
1439
1440         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1441         special case and handle mono_arch_delegate_invoke_impl() returning
1442         function descriptors.
1443
1444         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1445         trampolines return function descriptors, too.
1446
1447 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1450         out_of_line optimization.
1451
1452 2009-01-21  Martin Baulig  <martin@ximian.com>
1453
1454         * mini.h
1455         (MonoCompile): Added `disable_deadce_vars' to disable removing
1456         unused variables.
1457
1458         * mini.c
1459         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1460         inside the debugger.
1461
1462         * liveness.c (mono_analyze_liveness): Don't remove any unused
1463         variables if `cfg->disable_deadce_vars' is set.
1464
1465 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1466
1467         * method-to-ir.c: Only apply exception constructor optimization if
1468         the the method actually belongs to an exception class.  Fixes
1469         #467456.
1470
1471 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1474         change inside a #ifdef __mono_ppc64__.
1475
1476         * aot-compiler.c (compile_method): Remove the previous limitation.
1477
1478         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1479         on type variables in AOTed code.
1480         
1481         * aot-compiler.c (compile_method): Skip generic methods having type 
1482         constraints on their generic parameters.
1483
1484         * aot-compiler.c (compile_method): Check for methods which cannot be
1485         encoded inside RGCTX_FETCH patches as well.
1486
1487         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1488         build.
1489
1490 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1491
1492         * method-to-ir.c: Force the vtable variable in shared generic code
1493         for the case that they might show up on a stack trace where they
1494         are needed.
1495
1496         * mini-exceptions.c: Save and use generic sharing info as well as
1497         IP in stack traces to resolve shared generic instantiations.
1498
1499 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1502         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1503
1504 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1505
1506         * method-to-ir.c: Do generic sharing for array constructors.
1507
1508 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1509
1510         * mini-exceptions.c (mono_print_thread_dump): Add information
1511         about the thread state using wapi_current_thread_desc.
1512
1513 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1514
1515         * basic-simd.cs: Tests for the new constructors. 
1516
1517 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1518
1519         * mini-ops.h: Added OP_EXPAND_*
1520
1521         * cpu-x86.md: Same.
1522
1523         * mini-x86.c (mono_arch_output_basic_block): Same.
1524         
1525         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1526
1527 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * iltests.il.in: Add a test for #467385.
1530
1531 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1532
1533         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1534         thread been cleaned up is not the same currently in execution.
1535
1536         Fixes appdomain-unload crashes on windows, osx and linux variants
1537         without the __thread keyword.
1538
1539 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1540
1541         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1542         (koush@koushikdutta.com). Implement this for android.
1543
1544         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1545         begins with a digit.
1546
1547         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1548         mono_marshal_get_write_barrier ().
1549
1550 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1551
1552         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1553         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1554         that pass them on a register pair.
1555
1556         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1557         test was crashing due to that.
1558
1559 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1560
1561         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1562         trampoline code. Include ucontext.h only if available.
1563
1564 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1565
1566         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1567         and doesn't check whether it's sharable, like it was before
1568         removing the shared generics hash.  This brings IronPython
1569         performance back to what it was before that change.
1570
1571 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1572
1573         * method-to-ir.c: Handle delegate invocation optimization earlier,
1574         otherwise it would be handled (much more slowly) by the
1575         final/sealed optimization.
1576
1577 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1580         domain is not set. Fixes #465864.
1581
1582 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1583
1584         * method-to-ir.c: Don't stop sharing of generic methods with catch
1585         clauses - we already handle those.
1586
1587 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1588
1589         * mini.c, mini.h: lookup_generic_method() is now
1590         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1591         making the shared_generics_hash obsolete.
1592
1593 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1594
1595         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1596         use the red zone.  Make room on the stack first and then use it,
1597         not the other way around.
1598
1599 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * mini.c (mini_init): Call mono_xdebug_init ().
1602
1603         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1604
1605 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1608
1609         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1610         trampolines.
1611
1612         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1613         debug+unwind info for trampolines.
1614
1615         * mini.c (mono_create_unwind_op): New helper function.
1616
1617         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1618
1619 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * aot-compiler.c: Fix the build.
1622
1623 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * Makefile.am: Update dtrace-prelink.sh location.
1626
1627 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1628
1629         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1630         optimization. Fixes #464520.
1631
1632 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1633
1634         * mini-amd64.c : Adding code to save/restore non-volatile registers
1635            on Winx64.
1636
1637         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1638           registers on Winx64.
1639
1640         Contributed under MIT/X11 license.
1641
1642 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1645         __GNUC_MINOR__ which can break when the major version changes.
1646
1647 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1650
1651 2009-01-07  Geoff Norton  <gnorton@novell.com>
1652
1653         * helpers.c:  Allow mono -v -v -v to work on darwin.
1654
1655 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1656
1657         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1658           pattern. 
1659
1660         Contributed under MIT/X11 license.
1661
1662 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1665         instead of directly accessing type->data.klass. Fixes #462016.
1666         (mono_allocate_stack_slots_full): Ditto.
1667
1668         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1669         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1670
1671         * aot-compiler.c (emit_plt): Fix ARM build.
1672
1673 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1676         
1677         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1678         change.
1679
1680         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1681         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1682         #463357.
1683
1684         * iltests.il.in: Add a regression test.
1685
1686 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1687
1688         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1689
1690 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * basic-simd.cs: Add a regression test for #462457.
1693
1694 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * mini-ops.h: Add a definition of XPHI.
1697
1698         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1699
1700         * ssa.c (op_phi_to_move): Handle XPHI.
1701
1702         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1703
1704         Fixes #462457
1705
1706 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1707
1708         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1709
1710 2008-12-31  Geoff Norton  <gnorton@novell.com>
1711
1712         * mini-ppc.c: The prolog size allocated can be too small for darwin
1713         ppc32 under certain circumstances.  Also fix a small logic bug.
1714
1715 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1716
1717         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1718         while loading AOT methods.
1719
1720         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1721         since only the former is nulled out after a successful cast. This prevents
1722         crashes with rethrown exceptions when using --debug=casts.
1723
1724 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1725
1726         * mini.h: New macro for checking whether a method is final,
1727         i.e. whether the method or its class is marked final.
1728
1729         * method-to-ir.c: Use the new macro for all final-checks
1730         consistently.  Fixes the crash in the System.ServiceModel tests.
1731
1732 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1733
1734         * mini-exceptions.c (get_exception_catch_class): Corrected another
1735         overly strict assertion.
1736
1737 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1738
1739         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1740         Clobbering it is not allowed because the caller might use it as
1741         the vtable register in the interface call.
1742
1743 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1744
1745         * mini-exceptions.c (get_exception_catch_class): Corrected an
1746         overly strict assertion.
1747
1748 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1749         
1750         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1751
1752         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1753
1754         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1755
1756         * cpu-mips.md: correct lengths for certain long_ opcodes.
1757
1758         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1759
1760         * 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().
1761         
1762 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1763
1764         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1765         
1766 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1767         
1768         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1769         
1770 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1773         next basic block.
1774         
1775 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1776
1777         * 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
1778
1779         * 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)
1780         
1781 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1782         
1783         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1784         
1785 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1786
1787         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1788         gshared code. Fixes #458947.
1789
1790         * generics.cs: Add a test.
1791
1792 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1793         
1794         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1795         
1796         * mini-mips.c: first pass n32 code generation.
1797
1798         * mini-mips.h: datatypes and defines for n32 support.
1799
1800         * exceptions-mips.c: first pass n32 code generation.
1801         
1802         * tramp-mips.c: first pass n32 code generation.
1803         
1804         * cpu-mips.md: add long_ opcodes.
1805         
1806 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1807
1808         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1809
1810         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1811         
1812         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1813         
1814         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1815
1816         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1817
1818         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1819
1820         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1821
1822         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1823
1824         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1825
1826 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1827
1828         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1829
1830 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1831
1832         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1833
1834 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1835
1836         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1837         descriptors for helper functions directly in front of the code.
1838
1839 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1840
1841         * method-to-ir.c: Removed an unnecessary assertion.
1842
1843 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * method-to-ir.c: Merge SGEN changes from the old JIT.
1846
1847 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * driver.c (compile_all_methods_thread_main): Handle failure of
1850         mono_get_method ().
1851
1852 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1853
1854         * mini-ppc.c: Merged with mini-ppc64.c.
1855
1856         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1857
1858         * Makefile.am: Use the same sources for PPC and PPC64.
1859
1860         * mini-ppc64.c: Removed.
1861
1862 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1865         code to mono_bb_is_fall_through.
1866         
1867         * branch-opts.c (mono_remove_critical_edges): Same.
1868
1869 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1870
1871         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1872         expect that an OP_BR_REG will be there.
1873
1874 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1877         for the many branch ops. The original check miss OP_BR_REG.
1878
1879         Fixes #457574.
1880         
1881 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1882
1883         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1884
1885 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1888         while holding the aot lock.
1889
1890 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1891
1892         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1893         
1894 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1895
1896         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1897           to release all runtime callable wrappers held by the runtime.
1898
1899         Contributed under MIT/X11 license.
1900
1901 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1902
1903         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1904           for Winx64.
1905
1906         Contributed under MIT/X11 license.
1907
1908 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1911         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1912
1913 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1914
1915         * cpu-mips.md: fix ckfinite length
1916
1917         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
1918         (mono_arch_lowering_pass): cleanup, rearrange for clarity
1919         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
1920         
1921 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1922
1923         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1924         
1925 2008-12-08  Geoff Norton  <gnorton@novell.com>
1926
1927         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1928         size by 8 bytes as well.
1929
1930 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1931
1932         * basic-simd.cs: Fix method names for Vector16b.
1933         
1934 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1935
1936         * basic-simd.cs: Fix method names for Vector16sb.
1937
1938 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1939
1940         * basic-simd.cs: Fix method names for Vector8us.
1941         
1942 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1943
1944         * basic-simd.cs: Fix method names for Vector8s.
1945         
1946 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * basic-simd.cs: Fix method names for Vector4ui.
1949
1950 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1951
1952         * basic-simd.cs: Fix method names for Vector2l.
1953
1954 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1955
1956         * basic-simd.cs: Fix method names for Vector2d.
1957
1958 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
1961         that are extension methods.
1962
1963 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1964
1965         * basic-simd.cs: Fix method names for Vector4f.
1966
1967 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
1970         as such. Fixes #456669.
1971
1972 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1973
1974         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
1975         
1976 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
1977
1978         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
1979         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
1980         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
1981         (mips_adjust_stackframe): handle FP spills
1982                 
1983         * mini-ops.h: add mips_mtc1_s2
1984         
1985         * cpu-mips.md: add mips_mtc1_s2
1986         
1987 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * unwind.c: New file, move the unwind info encoding functions here from
1990         aot-compiler.c, so they could be used at runtime too.
1991
1992 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1993
1994         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
1995         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
1996         
1997 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
1998
1999         * mini-mips.c: cleanup warnings
2000         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2001         (mips_adjust_stackframe): handle case of taking the address of stack locals
2002         
2003 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * aot-compiler.c: Implement a few functions missing from the asm writer.
2006         (emit_method_code): Only write symbols for methods when using the bin
2007         writer, since the assembler can't deal with the characters in our method
2008         names.
2009
2010         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2011
2012         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2013         call.
2014
2015         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2016         a bit to also restore %rax.
2017
2018 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2019
2020         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2021
2022 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2025         arguments.
2026
2027 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2028
2029         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2030
2031         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2032         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2033
2034         * exceptions-ppc64.c: Removed.
2035
2036         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2037
2038 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2039
2040         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2041         tramp-ppc64.c.
2042
2043         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2044
2045         * tramp-ppc64.c: Removed.
2046
2047 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2050         the TYPESPEC table.
2051
2052 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2053
2054         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2055
2056         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2057         mini-ppc.h instead of mini-ppc64.h.
2058
2059         * mini-ppc64.h: Removed.
2060
2061 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2062
2063         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2064         
2065         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2066         
2067 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2068
2069         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2070         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2071         code easier.
2072
2073 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2074
2075         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2076
2077 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2078
2079         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2080
2081 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2082
2083         * basic-simd.cs: Tests for operator == and != on Vector4f.
2084
2085 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2086
2087         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2088
2089         * simd-intrinsics.c: Kill useless enum.
2090
2091 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2092
2093         * cpu-mips.md: add long_conv_to_ovf_i4_2
2094         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2095
2096 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2097
2098         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2099         
2100         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2101
2102 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2103
2104         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2105         
2106 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2107
2108         * basic-simd.cs: Add tests for new methods.
2109
2110 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2111
2112         * simd-intrinsics.c: Add support for operator == and !=
2113         on Vector4(u)i.
2114
2115         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2116
2117 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2118
2119         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2120
2121 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2122
2123         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2124
2125         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2126         MONO_PATCH_INFO_ICALL_ADDR.
2127
2128         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2129
2130         * aot-compiler.c: Resurrect full-aot support.
2131
2132 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2133
2134         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2135         
2136 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2137
2138         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2139         
2140 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * basic-simd.cs: Fix tests to work under ppc.
2143         Remove tests for methods that will be removed.
2144
2145 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2146
2147         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2148         generic type (via a typedef or typeref) correctly.
2149
2150 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2153         diagnose an assertion failure.
2154
2155 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2156
2157         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2158         Fix trampoline size.
2159
2160         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2161         conversion opcodes are implemented natively instead via emulation.
2162
2163 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2164
2165         * cpu-mips.md: remove mips_xori
2166
2167         * mini-ops.h:  remove mips_xori
2168
2169         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2170
2171         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2172         
2173         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2174         
2175 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2176
2177         * cpu-mips.md: fix instruction lengths.
2178
2179         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2180
2181         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2182
2183         * mini-ops.h: fix slti / sltiu op profiles.
2184         
2185 2008-12-02  Martin Baulig  <martin@ximian.com>
2186
2187         * method-to-ir.c (mono_method_to_ir): Disable debugging
2188         information for the init locals block to make the debugger stop
2189         after all locals have been initalized.
2190
2191 2008-12-02  Martin Baulig  <martin@ximian.com>
2192
2193         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2194         running inside the debugger.
2195
2196 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2197
2198         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2199         is enabled.
2200
2201         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2202         alu->alu imm optimization which only shows if deadce is disabled.
2203
2204         * aot-compiler.c: Rename the function names for the binary and asm writers
2205         so they can coexist in the same process. Rework the xdebug code to use the
2206         asm writer. This avoids the need to call into the runtime to dump the
2207         debugging info. Add more debugging info for types.
2208
2209         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2210
2211         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2212         cpu description tables, they can't occur in cpu-<ARCH>.md.
2213
2214         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2215         the stack in CEE_LDFLDA. Fixes #450542.
2216
2217         * generics.cs: Add a new test.
2218
2219 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2220
2221         * mini-ops.h: updated MIPS opcodes
2222         * mini-mips.c: decompose long opts
2223         * mini-mips.h: decompose long opts
2224         
2225 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2226
2227         * cpu-mips.md: fix length on int_rem_un
2228         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2229         
2230 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2231
2232         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2233
2234         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2235
2236 2008-11-29  Martin Baulig  <martin@ximian.com>
2237
2238         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2239         mono_debug_using_mono_debugger() in addition to the
2240         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2241
2242 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2243
2244         * mini-ops.h: updated more MIPS opcodes
2245         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2246         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2247         
2248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2249
2250         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2251
2252 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2253
2254         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2255         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2256         * mini-ops.h: correct selected mips opcode entries
2257         
2258 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2259
2260         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2261         make them work.
2262
2263 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2264
2265         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2266
2267 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2268
2269         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2270         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2271         * mini-mips.h: disable IMT
2272         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2273         
2274 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2275
2276         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2277
2278 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2279
2280         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2281
2282 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2285         consistency.
2286
2287 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2288
2289         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2290         for Set/GetVector aligned versions.
2291
2292 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2293
2294         * basic-simd.cs: Add tests for Get/SetVector.
2295
2296 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2297
2298         * mini.c: Removed g_slist_append_mempool().  Now in
2299         metadata/mempool.c.
2300
2301 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2302
2303         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2304         size properly and make the bounds check optional.
2305
2306         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2307         for SetVector and IsAligned.
2308
2309 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2310
2311         * mini.c: Remove unused mono_normalize_opcodes () function.
2312
2313 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2314
2315         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2316         using the new atomic add ops now.
2317
2318         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2319         add.
2320
2321 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2322
2323         * mini-ppc64.c: Several fixes.
2324
2325 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2326
2327         * cpu-mips.md: added jump_table
2328         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2329
2330 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2331
2332         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2333
2334 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2335
2336         * mini-ops.h: corrected a handful of MIPS opcodes.
2337
2338 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2339
2340         * aot-compiler.c: MIPS to use ELF writer
2341
2342 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2343
2344         * mini-codegen.c: remove MIPS specific assert.
2345
2346 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2347
2348         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2349         fixes.  PPC64 now passes most of the runtime regressions.
2350
2351 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2352
2353         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2354         volatile intervals a bit.
2355
2356 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2357
2358         * basic-long.cs: New test case.
2359
2360 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2361
2362         * mini.c (mini_method_compile): Disable globalra for large methods for 
2363         now.
2364
2365         * regalloc2.c (order_moves): Add fp support.
2366
2367         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2368         source bblock ends with an OP_BR_REG.
2369
2370         * ratests.cs: Add a new test.
2371
2372 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2373
2374         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2375         sharing.  PPC64 now passes generics.exe.
2376
2377 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2378
2379         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2380
2381 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2384         memory when mono_jit_info_table_find () can't find the method in the
2385         LMF case.
2386
2387         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2388         AOTed code too.
2389         
2390         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2391         writer too.
2392
2393 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2394
2395         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2396         Several fixes.  PPC64 now runs exceptions.exe and
2397         devirtualization.exe.
2398
2399 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2400
2401         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2402         arrays.exe and basic-math.exe.
2403
2404 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2405
2406         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2407         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2408
2409 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2410
2411         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2412
2413 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2414
2415         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2416
2417         * ir-emit.h: Move macros from method-to-ir.c to here.
2418
2419 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * mini-ops.h: Correct the long simd ops to use LREG.
2422
2423 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2424
2425         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2426         
2427         * mini-ops.h: Correct the dreg type of a few long opcodes.
2428
2429         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2430         Add netbsd support.
2431
2432 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2433
2434         * mini-ppc.c: remove negative stack references in epilog
2435         for platforms that don't support the red zone.
2436
2437 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2438
2439         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2440         point regs.  Now PPC64 passes basic-calls.exe.
2441
2442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2443
2444         * basic-simd.cs: Add tests for accessors of Vector2l.
2445
2446 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2447
2448         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2449
2450         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2451         
2452         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2453
2454 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2455
2456         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2457         PPC64 passes basic-long.exe.
2458
2459 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2460
2461         * decompose.c: Decompose carry and overflow add on PPC64 like on
2462         other 64 bit archs.  Don't decompose sub at all on PPC64.
2463
2464         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2465         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2466         basic-long.exe.
2467
2468 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2469
2470         * basic-simd.cs: Add tests for accessors of Vector2d.
2471
2472 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2473
2474         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2475
2476         * cpu-x86.md: Same.
2477
2478         * mini-x86.c (mono_arch_output_basic_block): Same.
2479         
2480         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2481
2482 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2483
2484         * basic-simd.cs: Add tests for accessors of Vector4f.
2485
2486 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2487
2488         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2489
2490         * cpu-x86.md: Same.
2491
2492         * mini-x86.c (mono_arch_output_basic_block): Same.
2493         
2494         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2495
2496 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2497
2498         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2499
2500 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2501
2502         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2503
2504         * cpu-x86.md: Same.
2505
2506         * mini-x86.c (mono_arch_output_basic_block): Same.
2507         
2508         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2509
2510 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2511
2512         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2513
2514 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * simd-intrinsics.c: Enable setters for Vector16sb.
2517
2518 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2521
2522         * cpu-x86.md: Same.
2523
2524         * mini-x86.c (mono_arch_output_basic_block): Same.
2525         
2526         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2527
2528 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * simd-intrinsics.c: Implement setter for Vector8us.
2531
2532 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2535         for dead variables.
2536
2537 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2538
2539         * mini-ppc.c: remove references to the red zone in the prolog
2540         (for systems that don't support it).
2541
2542 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2543
2544         * cpu-ppc64.md: Fixed a few instruction lengths.
2545
2546         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2547         now.
2548
2549 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2550
2551         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2552         basic.exe now.
2553
2554 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2555
2556         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2557
2558 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * mini-ops.h: Added OP_INSERT_I2.
2561
2562         * cpu-x86.md: Same.
2563
2564         * mini-x86.c (mono_arch_output_basic_block): Same.
2565         
2566         * simd-intrinsics.c: Implement setter for Vector8s.
2567
2568         * simd-methods.h: Add the names of get setters of Vector8s.
2569
2570 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2573         
2574         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2575         parameters.
2576
2577         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2578
2579 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2580
2581         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2582         for PPC64.  An empty program runs now.
2583
2584 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2587
2588         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2589         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2590         info for JITted code is emitted into a shared library, loadable into gdb.
2591
2592 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2593
2594         * Makefile.am: Changes to build PPC64.
2595
2596         * mini-arch.h: Include mini-ppc64.h on PPC64.
2597
2598 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2599
2600         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2601         in PPC code up to r119147.
2602
2603 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2604
2605         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2606         cpu-ppc64.md: Changes for PPC64.
2607
2608         Based on code submitted by andreas.faerber@web.de at
2609         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2610         X11/MIT license.
2611
2612 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2613
2614         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2615         cpu-ppc64.md: Copied from the corresponding PPC files from
2616         r118846.
2617
2618 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2619
2620         * mini-ops.h: Added OP_ROUND.
2621
2622         * cpu-x86.md: Added round.
2623
2624         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2625
2626         * basic-math.cs: Added test_0_round to test rounding.
2627
2628         Contributed under MIT/X11 license.
2629
2630 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2631
2632         * aot-compiler.c : Fix the Winx64 build.
2633
2634         Contributed under MIT/X11 license.
2635
2636 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2637
2638         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2639         in OP_EXTRACT_R8 to avoid possible stack corruption.
2640
2641 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2642
2643         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2644
2645         * cpu-x86.md: Added extract_r8.
2646
2647         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2648         
2649         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2650         a couple of OP_EXTRACT_I4.
2651
2652         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2653
2654         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2655
2656 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2657
2658         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2659         and not 4.1. 
2660
2661 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2664         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2665
2666         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2667         are not needed any more.
2668
2669         * mini.h: Remove the unused INS_LIST macros.
2670
2671         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2672         longer needed.
2673
2674         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2675         ir-emit.h.
2676
2677         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2678         mono_alloc_ireg () instead.
2679
2680         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2681         macros.
2682
2683         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2684         on amd64.
2685
2686         * aot-runtime.c (load_aot_module): Disable AOT when running under
2687         CAS.
2688
2689         * mini-amd64.h: Change the monitor fastpath defines to check for
2690         !PLATFORM_WIN32 so they work on *bsd too.
2691
2692         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2693
2694         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2695
2696         * mini.h (MonoCompile): Remove new_ir flag.
2697
2698         * regalloc.h regalloc.c: Remove unused code.
2699
2700         * cpu-*.md: Remove more unused opcodes.
2701
2702         * simple-cee-ops.h simple-mini-ops.h: Removed.
2703
2704         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2705         
2706 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * aliasing.h: Removed.
2709
2710         * *.c: Remove references to aliasing.h and inssel.h.
2711
2712         * mini.c: Remove additional unused functions.
2713
2714         * mini-ops.h cpu-*.md: Remove unused opcodes.
2715
2716 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2717
2718         Remove the old JIT code.
2719
2720         * inssel*.brg: Removed.
2721
2722         * ssa.c abcremoval.c aliasing.c: Removed.
2723
2724         * ssa2.c: Renamed to ssa.c.
2725
2726         * abcremoval2.c: Renamed to abcremoval.c.
2727
2728         * *.c: Removed all !cfg->new_ir code.
2729
2730         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2731         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2732
2733         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2734         
2735 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2738         to simplify the code and cut back on the number of global symbols in the AOT
2739         file.
2740         
2741         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2742
2743 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2746         with the got/got_info tables.
2747
2748         * mini.h: Bump AOT file format version.
2749         
2750         * unwind.h: New file, contains definitions for stack unwinding.
2751
2752         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2753         to cfg->unwind_ops.
2754         
2755         * aot-compiler.c: Generalize the emitting of unwind information to use the
2756         information in cfg->unwind_ops.
2757
2758         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2759
2760         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2761         AOT method frames. Enable writing symbols for methods by default.
2762
2763 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2764
2765         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2766         and make it work with vectors of element sizes 1, 2 and 4.
2767
2768         * simd-intrinsics.c: Enable getter for all vectors with element size
2769         1, 2 or 4.
2770
2771         * simd-methods.h: Add the names of other getters.
2772
2773         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2774
2775         * cpu-x86.md: Same.
2776
2777         * mini-x86.c: Same.
2778
2779 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2780
2781         * mini-ppc.h: portability fix.
2782
2783 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2784
2785         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2786         buggy and will overwrite it.
2787
2788 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2791         Use it to emit local symbols for all methods so AOTed methods show up with
2792         their full name in gdb/valgrind output.
2793
2794 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2795
2796         * mini-ppc.c: portability fixes.
2797
2798 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2801         entries out of the if (!generic_shared...) code so it is always done.
2802         (mono_class_init_trampoline): Do the patching when running under valgrind
2803         too, newer versions of valgrind have no problems with it.
2804
2805 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2808         further sections.
2809
2810 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2811
2812         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2813         filters.
2814
2815 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2816
2817         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2818
2819 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2820
2821         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2822
2823         * cpu-x86.md: Same.
2824
2825         * mini-x86.c: Same.
2826
2827         * simd-intrinsics.c: Same.
2828
2829 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2830
2831         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2832
2833 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2836         to work with more Vector types.
2837
2838 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2839
2840         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2841         store the elemens directly instead of using and intermediate.
2842
2843 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2846
2847         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2848         to preserve %eax for aot plt trampolines.
2849
2850         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2851         (encode_method_ref): Flag synchronized methods so they won't go through
2852         the AOT trampoline.
2853
2854         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2855         wrappers.
2856
2857         * cpu-ia64.md (jmp): Increase max length.
2858
2859 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2862         open generic classes.
2863
2864         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2865
2866         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2867         box+brtrue optimization since it causes test failures on x86.
2868
2869 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2870
2871         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2872
2873         * cpu-x86.md: Same.
2874
2875         * mini-x86.c: Same.
2876
2877         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2878         for simd ctor values. 
2879
2880         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2881         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2882
2883 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2884
2885         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2886         LogicalRightShift.
2887
2888         * simd-instrincs.c: Same.
2889
2890         * basic-simd.cs: Same.
2891
2892 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * ratests.cs: Add more tests.
2895
2896         * regalloc2.c (add_spill_code): Handle more corner cases.
2897
2898 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2901         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2902         both the source an destination of an instruction.
2903
2904 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2905
2906         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2907         wapihandles.c: more portability changes.
2908
2909 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2910
2911         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2912         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2913         safe to execute in a signal handler and the kernel provides better
2914         the info in /proc/self/smaps. Avoid the assert on sigaction during
2915         cleanup.
2916
2917 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
2920         do the bblock linking hack if it is actually needed.
2921
2922         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2923         up linking.
2924
2925         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2926         crash problem is fixed.
2927
2928         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2929         bblocks.
2930
2931         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2932         for catch clauses.
2933         (mini_method_compile): Set the starting value of next_vreg to 
2934         MAX_IREGS + MAX_FREGS when using globalra.
2935
2936         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2937         filter clauses with BB_EXCEPTION_HANDLER.
2938
2939         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2940
2941 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2942
2943         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2944         space for stdcall.  Fixes regressions on Win32.
2945
2946 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2949         bblocks.
2950         (linear_scan): Remove an assert which doesn't seem to be needed.
2951
2952         * local-propagation.c (mono_local_deadce): Avoid a call to
2953         MONO_DELETE_INS which would screw up the instruction linking.
2954
2955         * mini.c (mono_decompose_op_imm): Make this work with globalra.
2956
2957         * regalloc2.c: Upgrade to work the current JIT code.
2958
2959 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
2960
2961         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
2962         case.
2963
2964         * aot-runtime.c: Remove some dead code.
2965
2966         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
2967         consistency.
2968         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
2969
2970         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
2971         trampolines using sscanf since atoi doesn't work on large unsigned values.
2972
2973         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
2974         Initialize code_size.
2975
2976 2008-11-08  Mark Probst  <mark.probst@gmail.com>
2977
2978         * method-to-ir.c (mini_emit_inst_for_method): Make
2979         Interlocked.CompareExchange work for Int arguments on 32 bit
2980         archs, as well.
2981
2982 2008-11-07  Mark Probst  <mark.probst@gmail.com>
2983
2984         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
2985
2986 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
2987
2988         * main.c Fix MSVC build.
2989
2990         Contributed under MIT/X11 license.
2991
2992 2008-11-06  Mark Probst  <mark.probst@gmail.com>
2993
2994         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
2995         alignment larger than 8 bytes are aligned correctly, too.
2996
2997         * mini.c: Honor the min_align field of MonoClass when laying out
2998         the stack.
2999
3000 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3003
3004         * aot-compiler.c (emit_plt): Fix a warning.
3005         
3006         * aot-compiler.c: Implement ARM support in the binary writer.
3007
3008 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3009
3010         * basic-simd.cs: Add test for getter with byref arg.
3011         Fix the naming of a few tests.
3012         Add missing checks to a test.
3013
3014 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3017
3018         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3019         most of the full-aot support for monitor enter/exit trampolines.
3020
3021         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3022         enter/exit trampoline creation functions.
3023
3024         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3025         make dist.
3026
3027 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3028
3029         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3030         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3031         implement the needed functionality without adding crap to the runtime.
3032
3033 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3036         non-x86 builds.
3037
3038         * mini.c (mono_build_date): New global version holding the build date in
3039         string format.
3040         
3041         * Makefile.am (buildver.c): Generate a file containing the build date.
3042
3043         * main.c: Set the build date from the generated file.
3044
3045         * mini.c (mono_get_runtime_build_info): New helper function returning build
3046         information in a string format.
3047         
3048         * driver.c (mono_main): Print the build date in --version.
3049
3050         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3051         file when the bind-to-runtime-version option is used.
3052
3053 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3054
3055         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3056
3057 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3058
3059         * simd-methods.h: Rename prefetch methods.
3060
3061         * simd-intrinsics.c: Same.      
3062
3063 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3064
3065         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3066         sizes.
3067
3068 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3069
3070         * aot-compiler.c: Use the bundled elf header files instead of depending on
3071         the system one.
3072         
3073         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3074         mempool.
3075
3076         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3077         on every call.
3078
3079 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3080
3081         * cpu-x86.md: Add store nta ops.
3082
3083         * mini-ops.h: Same.
3084
3085         * mini-x86.c: Same.
3086
3087         * mini.h: Add an enum for simd prefetch modes.
3088
3089         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3090         of store. Use the changed code to support store nta.
3091
3092         * simd-intrinsics.c: Add prefetch ops for all vector types.
3093
3094 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3097         threads.
3098         
3099         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3100         names.
3101
3102         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3103         trampolines.
3104
3105 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3106
3107         * mini-x86.c: Fixed commit.
3108
3109 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3112
3113 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3114
3115         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3116         and MONITOR_EXIT, for the ASM fastpaths.
3117
3118         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3119         available.
3120
3121         * mini.c, patch-info.h: Signature and patch infos for
3122         Monitor.Enter/Exit trampolines.
3123
3124         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3125
3126         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3127         Monitor.Enter/Exit ASM fastpath for Linux.
3128
3129 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3130
3131         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3132
3133         * objects.cs: Add a new test.
3134         
3135         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3136
3137         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3138         if MONO_LOG_LEVEL is set.
3139
3140         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3141
3142         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3143
3144         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3145         
3146         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3147         of file offsets. Align the sections belonging to the data segment to 
3148         PAGESIZE.
3149
3150 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3153         elf.h. Port it to amd64.
3154
3155 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3156
3157         * driver.c: Enable SIMD by default.
3158
3159 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3160
3161         * cpu-x86.md: Add prefetch op.
3162
3163         * mini-ops.h: Same.
3164
3165         * mini-x86.c: Same.
3166
3167         * mini.h: Add an enum for simd prefetch modes.
3168
3169         * simd-methods.h: Add prefetch function names.
3170
3171         * simd-intrinsics.c: Add prefetch ops for all vector types.
3172
3173 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3174
3175         * aot-compiler.c (emit_bytes): Speed this up a little.
3176
3177 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3178
3179         * aot-compiler.c: Add JIT time etc. statistics.
3180         
3181         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3182
3183         * mini.h (MonoCompile): Add 'got_offset' field.
3184
3185         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3186         method_got_offsets array.
3187
3188         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3189         wrappers.
3190
3191         * aot-compiler.c (compile_method): Add generic method instances referenced
3192         by the method to the list of methods to be compiled, this is required so if
3193         A<T> references B<T>, and another assembly references A<int>, then it will
3194         also get a copy of B<int>.
3195
3196         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3197         when checking for monitor enter/exit.
3198
3199 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3200
3201         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3202         for Monitor.Enter and Monitor.Exit if enabled.
3203
3204         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3205         Solaris.
3206
3207 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3210         of an OP_MOVE. Fixes #440046.
3211
3212         * basic-long.cs: Add a new test.
3213
3214 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3215
3216         * mini.h: Add synchronization note for the managed counter-part.
3217
3218         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3219         returns the simd caps of the current cpu.
3220
3221 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3222
3223         * basic-simd.cs: Remove Console.WriteLine.
3224
3225 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * basic-simd.cs: New tests for Vector2ul.
3228
3229 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3230
3231         * simd-intrinsics.c: Add new vector type Vector2ul.
3232
3233 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3234
3235         * basic-simd.cs: New tests for Vector2l.
3236
3237 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3238
3239         * cpu-x86.md: Add long version of most packed int ops.
3240
3241         * mini-ops.h: Same.
3242
3243         * mini-x86.h: Same.
3244
3245         * simd-intrinsics.c: Add new vector type Vector2l.
3246
3247 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3248
3249         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3250
3251         * simd-methods.h: Remove SN_op_BitwiseXor.
3252
3253 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3256         alignment.
3257
3258 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3259
3260         * basic-simd.cs: Test for Vector2d.
3261
3262         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3263         value.
3264
3265 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3266
3267         * cpu-x86.md: Add double version of all packed float ops.
3268
3269         * mini-ops.h: Same.
3270
3271         * mini-x86.h: Same.
3272
3273         * simd-intrinsics.c: Add new vector type Vector2d.
3274
3275         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3276
3277         * simd-methods.h: Add Duplicate.
3278
3279 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3280
3281         * basic-simd.cs: Test for packing with signed saturation.
3282
3283 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3286         found in the TYPESPEC table.
3287
3288 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3291         too.
3292
3293         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3294
3295         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3296         instead of the RVA, since the RVA can be changed by tools like the cil 
3297         stripper.
3298
3299         * method-to-ir.c (mono_method_to_ir2): Ditto.
3300
3301         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3302         (deserialize_variable): Ditto.
3303
3304 2008-10-25  Martin Baulig  <martin@ximian.com>
3305
3306         * debug-mini.c (write_variable): Use
3307         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3308
3309 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * cpu-x86.md: Add unsigned variants of packd and packw.
3312
3313         * mini-ops.h: Same.
3314
3315         * mini-x86.h: Emit the right instruction for packd and packw.
3316         Add unsigned variants of packd and packw.
3317
3318         * simd-intrinsics.c: Packd and packw were used in place of their
3319         unsigned variants. Change that.
3320         Add intrinsics for (Signed)PackWithSignedSaturation.
3321
3322         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3323
3324 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3325
3326         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3327
3328 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3329
3330         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3331
3332         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3333
3334         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3335         sse instructions.
3336
3337         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3338
3339 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3340
3341         * method-to-ir.c, mini.c: Special casing for the synchronized
3342         wrapper for the ldtoken+GetTypeFromHandle case.
3343
3344 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3345
3346         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3347
3348         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3349         created/split bblocks.
3350
3351 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * mini-ops.h: Add packed signed mul high.
3354         
3355         * cpu-x86.md: Same.
3356
3357         * mini-x86.c (mono_arch_output_basic_block): Same.
3358
3359         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3360
3361         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3362
3363 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3364
3365         * basic-simd.cs: Tests for Vector16sb.
3366
3367 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3370
3371 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3372
3373         * mini-ops.h: Add packed signed min, max and compare greater.
3374         
3375         * cpu-x86.md: Same.
3376
3377         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3378         saturation.
3379
3380         * simd-methods.h: Add CompareGreaterThan.
3381
3382         * simd-methods.h: Remove CompareEquals.
3383
3384         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3385
3386         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3387
3388         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3389         CompareEqual.
3390
3391 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3392
3393         * basic-simd.cs: Fix tests due to change in the API.
3394
3395 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3398
3399 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3400
3401         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3402
3403         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3404         inst_offset as this has invalid values for LDADDR.
3405
3406 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3407
3408         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3409
3410         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3411
3412 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3415         for accessing field->data.
3416
3417 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3418
3419         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3420
3421 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3422
3423         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3424
3425         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3426
3427 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3430         from the cfg mempool.
3431
3432 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * basic-simd.cs: Tests for new methods in Vector8us.
3435
3436 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3437
3438         * mini-ops.h: Add multiply and store high.
3439         
3440         * cpu-x86.md: Same.
3441
3442         * mini-x86.c (mono_arch_output_basic_block): Same.
3443
3444         * simd-methods.h: Same.
3445
3446         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3447         and CompareEqual.
3448
3449 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3452         mono_class_setup_vtable ().
3453
3454         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3455         mono_class_get_vtable_entry () for accessing klass->vtable.
3456
3457         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3458
3459         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3460         found.
3461
3462         * method-to-ir.c (mono_save_token_info): Don't save references made from
3463         wrappers.
3464
3465         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3466         of generic instances.
3467
3468         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3469
3470 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3471
3472         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3473         OP_JMP depends on the method signature.  Calculate it properly.
3474
3475 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3476         
3477         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3478         called directly.
3479
3480         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3481         instances.
3482         (emit_extra_methods): Add another table mapping method indexes to 
3483         offsets in the extra_method_info table.
3484
3485         * mini.h: Bump AOT file format version.
3486         
3487         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3488         and mono_aot_get_method_from_token () into one function.
3489
3490 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3491
3492         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3493         separate counter.
3494
3495 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3498         methods.
3499
3500         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3501         disable_aot.
3502
3503         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3504
3505         * mini.h: Bump aot file format version.
3506
3507         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3508         AOT file can contain native code for methods which are not in the METHOD
3509         table. Generate code for non-sharable generic instances of generic methods
3510         found in the METHODSPEC table.
3511         
3512         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3513         encoding generic type handles.
3514
3515         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3516         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3517
3518         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3519         macros + MONO_ADD_INS.
3520
3521         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3522         context as well.
3523
3524         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3525
3526         * mini.h: Bump aot file format version.
3527
3528         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3529
3530 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3531
3532         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3533         platforms, with definable stack alignment value.  Set to 16 now
3534         for all platforms.
3535
3536         * mini.c, mini.h, driver.c: Command line option for disabling
3537         stack alignment.
3538
3539 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3540
3541         * basic-simd.cs: Tests for new methods in Vector4ui.
3542
3543 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3544
3545         * mini-ops.h: Add packed int shuffle.
3546         
3547         * cpu-x86.md: Same.
3548
3549         * mini-x86.c (mono_arch_output_basic_block): Same.
3550
3551         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3552         extract mask, max, min, shuffle.
3553
3554         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3555
3556 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * basic-simd.cs: Tests for new methods in Vector8us.
3559
3560 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3561
3562         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3563         RuntimeTypeHandle, not a TypedReference.
3564
3565 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3566
3567         * simd-intrinsics.c: remove relocations.
3568
3569 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3572         optimizations from the x86 backend.
3573
3574 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3575
3576         * simd-methods.h, simd-intrinsics.c: debloat method names and
3577         prepare for no relocations.
3578
3579 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3580
3581         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3582         
3583         * cpu-x86.md: Same.
3584
3585         * mini-x86.c (mono_arch_output_basic_block): Same.
3586
3587         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3588         extract mask, max, min and sum of absolute differences.
3589
3590         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3591         method name.
3592
3593 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3594
3595         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3596         Renamed one test for consistency.
3597
3598 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3599
3600         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3601         fix to the code that deal with other blocks.
3602
3603 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3604
3605         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3606
3607 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3608
3609         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3610         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3611         able to process the source reg.
3612
3613 2008-10-16  Martin Baulig  <martin@ximian.com>
3614
3615         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3616
3617         * inssel.brg: Add `OP_HARD_NOP'.
3618
3619         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3620
3621         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3622         `OP_HARD_NOP' instruction when running inside the debugger.
3623
3624         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3625         `OP_HARD_NOP' instruction when running inside the debugger.
3626
3627 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3628
3629         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3630         now works. The issue with the regalloc tripping up no longer
3631         happens.
3632
3633         * simd-intrinsics.c (load_simd_vreg): Same.
3634
3635 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3636         
3637         * basic-simd.cs: Tests for new Vector8ui methods.
3638
3639 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3640
3641         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3642         only for type. This fixes crashes where MonoInst::klass is checked
3643         for ops of type != VTYPE or OBJ.
3644
3645         * simd-intrinsics.c (load_simd_vreg): Same.
3646
3647 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3648
3649         * mini-ops.h: Add ops for packed shuffle/max/avg and
3650         extract mask.
3651         
3652         * cpu-x86.md: Same.
3653
3654         * mini-x86.c (mono_arch_output_basic_block): Same.
3655
3656         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3657         extract mask.
3658
3659         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3660         to emit extract mask op.
3661
3662         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3663         to emit word shuffles.
3664
3665 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3666
3667         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3668         the largest alignment needed by a variable, but at least
3669         sizeof(gpointer).
3670
3671 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3672
3673         * basic-simd.cs: Tests for the fixes in the last commit.
3674
3675 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3676
3677         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3678         no longer handles STACK_PTR input.
3679
3680         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3681
3682         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3683         get_simd_vreg   but handles STACK_PTR input.
3684
3685         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3686         as the input can be an arbitrary pointer.
3687
3688         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3689         LDADDR local optimization directly otherwise use a store op.
3690
3691 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3692
3693         * basic-simd.cs: Tests for dup low and dup high.
3694
3695 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3696
3697         * mini-ops.h: Add dup low and dup high ops.
3698         
3699         * cpu-x86.md: Same.
3700
3701         * mini-x86.c (mono_arch_output_basic_block): Same.
3702
3703         * simd-intrinsics.c (vector4f_intrinsics): Same.
3704
3705 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3706
3707         * basic-simd.cs: Tests for recently added functionality.
3708
3709 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * mini-ops.h: Add remaining sse1 fp ops.
3712         
3713         * cpu-x86.md: Add remaining sse1 fp ops.
3714
3715         * mini-x86.c (mono_arch_output_basic_block): Same.
3716
3717         * mini.h: Add enum for simd FP compare conditions.
3718
3719         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3720
3721         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3722         so the backed can generate the appropriate op.
3723
3724 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3725         This patch squeese one more byte from the SimdIntrinsc struct.
3726
3727         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3728         a a shift amount intead of simply or'ing it.
3729
3730         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3731
3732         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3733         byte so we can have an aditional flags field without increasing struct size.
3734
3735         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3736         against the simd_supported_versions bitmask.
3737
3738         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3739
3740 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3741
3742         * mini.c: remove rawbuffer code (the only use here is unsafe because
3743         it takes locks during signal handling and the kernel now provides much
3744         better info in proc/pid/smaps these days).
3745
3746 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3749         OP_X86_PUSH_OBJ. Fixes #434620.
3750
3751         * objects.cs: Add a test.
3752         
3753 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3754
3755         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3756         that the packuswb/packusdw don't work with unsigned numbers for what
3757         would be negative numbers in signed format.
3758
3759         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3760         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3761
3762         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3763
3764         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3765
3766         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3767
3768         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3769
3770         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3771         add more ops.
3772
3773         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3774         version as the enum in mini.h.
3775
3776         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3777         for sse3 ops, check the simd_version field if present. This way the code
3778         works with all versions of sse.
3779
3780 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3781
3782         * simd-intrinsics.c: Fixed intrinsic name typo.
3783
3784         * mini.h: Added missing simd exported function.
3785
3786         * basic-simd.cs: Added tests for Vector4ui.
3787         Fixed broken test for Vector16b.
3788
3789 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3790
3791         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3792         the max length to 64.
3793
3794 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3795
3796         * method-to-ir.c: Only do the fast virtual generic method call for
3797         non-wrapper methods.
3798
3799         * mini.h, mini-trampolines.c: The new generic virtual remoting
3800         trampoline handles virtual method calls via the vtable (as done by
3801         the fast virtual generic method calls) to remoting proxies.
3802
3803         * mini.c (mono_jit_create_remoting_trampoline): For generic
3804         methods reate a generic virtual remoting trampoline.
3805
3806         * mini-amd64.h: Enable fast virtual generic method calls again.
3807
3808 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3809
3810         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3811         restore registers when doing tail calls.
3812
3813 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3814
3815         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3816         Vector4ui.
3817
3818 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3821
3822 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3823
3824         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3825
3826 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3827
3828         * basic-simd.cs: Retrofit for API changes.
3829
3830 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3831
3832         * mini-ppc.c: Handle integer stack arguments for tail calls.
3833
3834 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3835
3836         * optflags-def.h: Removed sse3 optimization.
3837
3838         * driver.c: Same.
3839
3840         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3841         sse3.
3842
3843         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3844
3845         * mini.h: Added enumeration with simd versions.
3846
3847         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3848         for detecting SSE3.
3849
3850         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3851
3852         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3853
3854 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3855
3856         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3857
3858         * basic-simd.cs: Fixed test naming.
3859
3860 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3861
3862         * mini-ops.h: Added ops for packed and saturated math, shifts
3863         and packing/unpacking.
3864
3865         * cpu-x86.md: Added descriptors for the above ops.
3866
3867         * mini-x86.c: Added code to emmit the above ops.
3868
3869         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3870
3871 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3872
3873         * aot-compiler.c (compile_method): Enable AOT for generic code.
3874
3875         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3876
3877 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3878
3879         * mini.c: add a workaround for a common screwup that ends up blamed
3880         to mono (other processes blocking signal delivery).
3881
3882 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3885         in the LDFLD/STFLD opcodes. Fixes #432673.
3886
3887         * iltests.il.in: Add a new test.
3888
3889 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3890
3891         * mini-arm.c: attach the thread in unmanaged->managed transitions
3892         using delegates (bug #433148).
3893
3894 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3895
3896        * basic-simd.cs: Use new ShuffleSel constants.
3897
3898 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3899
3900         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3901
3902         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3903         only disable simd intrinsics if no sse2 is detected.
3904
3905         * optflags-def.h: Added sse3.
3906
3907         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3908         is disabled.
3909
3910 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3913         when adding delegate-invoke wrappers.
3914
3915 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * Makefile.am: Reenable the simd tests.
3918
3919 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3920
3921         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3922           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3923           other vreg is allocated to that hreg.
3924
3925         Contributed under MIT/X11 license.
3926
3927 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3928
3929         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3930         yet checked in.
3931
3932 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3933
3934         * basic-simd.cs: New test suite for SIMD intrinsics.
3935
3936         * Makefile.am: Added new tests.
3937
3938 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3939
3940         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3941
3942         * mini-ops.h: Same.
3943
3944         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3945
3946         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3947         using SSE2 aware opcodes.
3948
3949         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3950         is enabled, this code path is only reachable if conversion ops are emmited after
3951         mono_method_to_ir.
3952
3953         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
3954
3955         This optimization saves 6 bytes per conversion against the old version.
3956
3957 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * aot-compiler.c (compile_method): Don't skip methods referencing 
3960         generic methods without a corresponding entry in token_info_hash, since
3961         encode_method_ref () can handle all generic methods now.
3962
3963         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
3964         generic context is set.
3965         
3966         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
3967         generic sharing of LDTOKEN.
3968
3969 2008-10-06  Mark Probst  <mark.probst@gmail.com>
3970
3971         * mini-amd64.h: Temporarily disabled fast virtual generic method
3972         calls because it breaks the System.Runtime.Remoting tests.
3973
3974 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3975
3976         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
3977
3978         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
3979         so inlining actually works.
3980         (check_inline_caller_method_name_limit): Ditto.
3981
3982 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
3983
3984         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
3985         64 bit safety (from Olaf Hering and Andreas Färber).
3986
3987 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3988         
3989         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
3990         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
3991         unused virtual call support code.
3992
3993         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
3994         
3995         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
3996         which can't use aot trampolines.
3997         (decode_patch): Don't create aot trampolines for methods which can't use
3998         them.
3999
4000         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4001         use aot trampolines.
4002
4003         * mini.h: Bump AOT image format version.
4004         
4005 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4008         to save_token_info () since cmethod is inflated for constrained calls.
4009
4010         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4011
4012 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4013
4014         * Makefile.am: Add build rules for ppc64.
4015         This avoids the build failing at pedump with unresolved symbols
4016         due to lack of arch_sources. Instead it will now fail earlier
4017         due to lack of cpu-ppc64.md.
4018
4019         Contributed under MIT/X11 license.
4020
4021 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4022
4023         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4024         tail calls.
4025
4026         * iltests.il.in: Add test case for tail call with many arguments.
4027
4028 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4031         to the fast virtual generic method code until the aot case is fixed.
4032
4033 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4034
4035         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4036
4037 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4038
4039         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4040         thunks.
4041
4042 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4043         
4044         * simd-intrinsics.c: Forgot to add this one.
4045
4046         * mini-codegen.c: Fix macro in case SIMD is not supported.
4047
4048 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4049         
4050         This patch land initial JIT support for simd intrinsics.
4051
4052         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4053
4054         * Makefile.am: Added simd-intrinsics.c
4055
4056         * simd-intrinsics.c: New file with simd instrinsic related
4057         code.
4058
4059         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4060
4061         * cpu-x86.md: Add simd related instructions.
4062
4063         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4064
4065         * driver.c: Added two new --regression variants.
4066
4067         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4068
4069         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4070
4071         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4072         extract some complicated logic to helper functions.
4073
4074         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4075
4076         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4077
4078         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4079         the specialized simplification pass.
4080
4081         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4082
4083         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4084
4085         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4086         table.
4087
4088         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4089         if MONO_ARCH_NEED_SIMD_BANK is defined.
4090
4091         * mini-ops.h: Added the new simd ops.
4092
4093         * mini-x86.c: Added mono_arch_xregname.
4094
4095         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4096
4097         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4098
4099         * mini-x86.h: Define simd related MONO_ARCH macros.
4100
4101         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4102
4103         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4104
4105         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4106         MONO_CLASS_IS_SIMD to deal with simd related IR.
4107
4108         * mini.h (MonoInst): Added spill_var to the backend union.
4109
4110         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4111
4112         * mini.h: Added forward declarations of the new simd fuctions.
4113
4114         * optflags-def.h: Added new optimization names SIMD.
4115
4116         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4117
4118         * regalloc.h: Added support for working with 3 register banks.
4119
4120         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4121
4122         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4123
4124 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4125
4126         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4127
4128 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4131         instead of one on 64 bit systems.
4132
4133         * method-to-ir.c: Remove unused includes.
4134
4135 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4138         cfg->used_int_regs, since the two are different on arm.
4139
4140 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4141
4142         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4143         mono_method_get_vtable_index() to get the vtable index.
4144
4145 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4146
4147         * method-to-ir.c (mono_method_to_ir2): Don't create native
4148         wrappers for array methods, because they're never called (and if
4149         they were called they wouldn't work).
4150
4151 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4152
4153         * method-to-ir.c (mono_method_to_ir2): Array methods are
4154         special-cased and must not be invoked indirectly via the (M)RGCTX
4155         when generic sharing is turned on.  Fixes #431413.
4156
4157 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4158
4159         * method-to-ir.c: When generic sharing is active, call
4160         non-interface virtual generic methods via the standard trampoline.
4161
4162         * mini-trampolines.c: Handle virtual generic shared methods.
4163
4164         * mini.h, mini-x86.c, mini-x86.h: New argument for
4165         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4166         method thunks and which is the trampoline to call if the lookup
4167         fails.  Enable the virtual generic method thunk for x86.
4168
4169         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4170         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4171         argument but assert that it's NULL, because these archs don't yet
4172         implement the virtual generic method thunk.  Changes in the IMT
4173         thunk data structures.
4174
4175 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4176
4177         * aot-compiler.c (emit_globals): Avoid invalid characters in
4178         the static linking symbol.
4179
4180         * objects.cs: Add a test for the range check optimization. Fix warnings.
4181
4182         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4183         optimization from the current JIT.
4184
4185         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4186         later in decompose_array_access_opts () to allow more optimizations.
4187
4188         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4189         mono_decompose_soft_float () for consistency.
4190
4191         * mini-ops.h: Fix arguments of OP_STRLEN.
4192
4193         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4194         into a separate function.
4195         (reset_cast_details): Ditto.
4196         (handle_unbox): Save cast details. Fixes #431254.
4197
4198         * method-to-ir.c: Remove some obsolete FIXMEs.
4199
4200 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4201
4202         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4203
4204 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4205
4206         * mini-codegen.c: More work on macros to make them
4207         ready for multiple regbanks.
4208
4209 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4210
4211         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4212
4213         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4214
4215 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4216
4217         * mini-codegen.c (mono_spillvar_offset): Proper support for
4218         multiple regbanks.
4219
4220 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4223         the stack overflow changes.
4224
4225 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4226
4227         * mini-codegen.c: Make all bank macros depend on reg_bank.
4228
4229         * mini-codegen.c (mono_local_regalloc): Make free mask
4230         initialization regbank aware.
4231
4232 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4233
4234         * mini-codegen.c (mono_local_regalloc): Extract callee
4235         mask selection to a function and make it regbank aware.
4236
4237 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4238
4239         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4240         code to deal with many regbanks.
4241
4242 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * mini-codegen.c: More fp->regbank changes.
4245
4246 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4247
4248         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4249         of a hardcoded constant.
4250
4251 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4252
4253         * method-to-ir.c (type_from_stack_type): Fix typo.
4254
4255 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * mini-ia64.c (emit_move_return_value): Convert float return values to
4258         double.
4259
4260         * objects.cs: Add a new test.
4261         
4262         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4263         VARARG methods to fix an assert later.
4264
4265         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4266         end so it at least compiles.
4267
4268 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4271
4272 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4273
4274         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4275         optimization to a new function (emit_optimized_ldloca_ir) and enable
4276         it for both ldloca and ldloca_s.
4277
4278 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4281         gshared CASTCLASS code.
4282
4283         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4284         amd64, where the libc stack unwinder encounters stack frames referring to
4285         native code in unmapped memory.
4286
4287         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4288         sharing.
4289
4290         * generics.cs: Add new test.
4291
4292 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4293
4294         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4295         add a check that one of the ARM_FPU_ constants is defined.
4296
4297         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4298         
4299         * mini-exceptions.c: Fix build on non-altstack platforms.
4300
4301         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4302         sharing of vtypes.
4303
4304         * ir-emit.h: Add a comment to NEW_PCONST.
4305
4306         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4307
4308         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4309
4310         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4311         after the changes to MonoJitDomainInfo.
4312
4313 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4314
4315         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4316
4317 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4318
4319         * mini-ppc.c: Compiler warning fixes.
4320
4321 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4322
4323         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4324         for pinvokes.
4325
4326 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4327
4328         * exceptions-ppc.c, mini-ppc.h: Compile
4329         mono_arch_handle_altstack_exception() on Darwin, too.
4330
4331 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4332
4333         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4334         work on archs which don't have generic sharing implemented, only
4335         without the vtable_arg.
4336
4337 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4338
4339         * mini.c: Added comment explaining why delegate ctor icall
4340         wrappers are compiled.
4341
4342 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4343
4344         * mini.c: Don't produce trampolines to delegate ctor icall
4345         wrappers but compile them upfront.
4346
4347 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4348
4349         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4350         runtime-set function when going back to managed code. Currently this
4351         is used to set back the protection on the soft ovf pages and/or to
4352         throw the stack overflow exception that happened in unmanaged code.
4353
4354 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4355
4356         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4357         runtime-set function when going back to managed code. Currently this
4358         is used to set back the protection on the soft ovf pages and/or to
4359         throw the stack overflow exception that happened in unmanaged code.
4360
4361 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4362
4363         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4364         the support code for restoring stack protection after stack overflows
4365         that happen in unmanaged code. Don't set the exec permission on the
4366         soft overflow area.
4367
4368 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4371         delegate->method_ptr is set. Fixes #428054.
4372
4373 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * tests.cs: Rename to ratests.cs.
4376
4377         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4378         emit_get_rgctx_... functions.
4379
4380 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4381
4382         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4383
4384 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4385
4386         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4387         before asserting that method is sharable.
4388
4389 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4390
4391         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4392         whether method needs a static RGCTX wrapper used instead of
4393         complex conditions.
4394
4395         * generic-sharing.c, mini.h: A few functions moved to
4396         metadata/generic-sharing.c.
4397
4398 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4399
4400         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4401         Generic code sharing for value types, which essentially means
4402         treating value type methods like static methods.  The RGCTX is
4403         passed in the same way.
4404
4405 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4408         opcode when creating multi-dimensional arrays of open types.
4409
4410         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4411         open generic types.
4412
4413         * generics.cs: Add a test.
4414
4415         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4416
4417 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4418
4419         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4420
4421         * mini.c (mini_method_compile): Set it when running under the debugger. 
4422
4423         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4424         vreg optimization if the flag is set.
4425
4426         * driver.c (mono_main): Add --attach= option to pass options to
4427         the attach agent.
4428
4429         * mini.c (sigquit_signal_handler): Start the attach agent.
4430
4431         * ssapre.c: Disable this to save space since it is not yet ported to
4432         linear IR.
4433
4434         * regalloc2.c: Disable this to save space.
4435
4436         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4437
4438 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4439
4440         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4441         the -v option useful again.
4442
4443 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4444
4445         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4446         --break-at-bb.
4447
4448         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4449         arrays of arrays. Fixes #428406.
4450
4451         * method-to-ir.c (mini_emit_castclass): Ditto.
4452
4453         * objects.cs: Add new test.
4454         
4455 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4456
4457         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4458         was wrong at it choked against target_type_is_incompatible for byref types.
4459
4460 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4461
4462         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4463         places.
4464
4465 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4466
4467         * mini-exceptions.c: update a few more exceptions-related counters.
4468
4469 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4470
4471         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4472         new functions to allocate from persistent mempools.
4473
4474 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4477         multiple register banks in the future.
4478
4479         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4480
4481 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4482
4483         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4484
4485         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4486
4487         * mini.h: Export type_to_eval_stack_type.
4488
4489         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4490         is only ins->klass of byref types.
4491
4492 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4495         (mini_emit_memcpy2): Ditto.
4496
4497         * mini-amd64.c: Fix a warning.
4498
4499 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4500
4501         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4502         linking.
4503
4504 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4505
4506         * method-to-ir.c: Extract stloc micro-optimization to a
4507         function and apply it to all cases.
4508
4509 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4510
4511         * method-to-ir.c: Don't fail generic code sharing in cases we
4512         already support.
4513
4514 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4515
4516         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4517
4518 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4519
4520         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4521         implementation.
4522
4523 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4524
4525         * trace.c: make tracing more useful and correct, with per-thread
4526         id and indent info.
4527
4528 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4529
4530         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4531         doing a method call and the argument is an R4.
4532
4533 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4536         generic methods.
4537
4538 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4539
4540         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4541
4542 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4545         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4546
4547 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4548
4549         * driver.c: Add a --agent argument (not supported yet) to load managed
4550         agent assemblies before loading the main assembly, similarly to how the
4551         Java VM handles agents.
4552
4553 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4554
4555         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4556         function to do stack layout of local variables.
4557
4558 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4559
4560         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4561         calculation.
4562
4563 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4564
4565         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4566         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4567         JIT if DISABLE_JIT is defined.
4568
4569         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4570         defined.
4571
4572 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4573
4574         * iltests.il.in: Disable the fconv test on PPC (the result is
4575         undefined according to ECMA).
4576
4577 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4578
4579         * iltests.il.in: Enable tail call tests for PPC.
4580
4581         * mini.h: Add variable for storing incoming valuetype argument
4582         addresses for tail calls.
4583
4584         * mini-ppc.c: Implement valuetype arguments and return values for
4585         tailcalls on Linux.
4586
4587 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4588
4589         * mini-ppc.c: Partially implement tail calls (struct arguments and
4590         return values not supported).
4591
4592         * method-to-ir.c: Enable tail calls on PPC.
4593
4594 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4597         runtime-invoke wrappers to work around the problem of them getting
4598         assigned to a random class.
4599
4600         * aot-runtime.c (mono_aot_get_method): Ditto.
4601         
4602 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4603
4604         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4605         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4606
4607 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4608
4609         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4610         until they're implemented properly.
4611
4612         * exceptions-ppc.c: Use arch-independent exception-handling code
4613         instead of custom one.
4614
4615         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4616         for Linear IR.
4617
4618         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4619
4620         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4621         applies when __powerpc__ is defined.
4622
4623 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4624
4625         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4626         methods to their code to avoid computing the full name of wrappers and
4627         doing a lookup in a string hash table.
4628
4629 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4632         we identify bblocks before method_to_ir () is ran.
4633
4634         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4635         Also avoid optimizing branches pointing to themselves.
4636
4637         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4638
4639 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4640
4641         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4642
4643 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4644
4645         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4646         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4647         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4648         'buf'.
4649
4650         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4651         jumped to the same entry in plt_jump_table.
4652
4653 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4656         dynamic images.
4657
4658 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4659
4660         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4661         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4662         #421807.
4663
4664 2008-08-29  Geoff Norton  <gnorton@novell.com>
4665
4666         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4667         segment, and doesn't properly handle .space as .text.  Fixes
4668         AOT Mach/ARM
4669
4670 2008-08-29  Geoff Norton  <gnorton@novell.com>
4671
4672         * mini.c: Disable the mach exception handler when running on 
4673         ARM
4674
4675 2008-08-29  Geoff Norton  <gnorton@novell.com>
4676
4677         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4678         globals on Darwin/ARM
4679
4680 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4681
4682         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4683         since too many things depend on it. Instead, call 
4684         mono_runtime_set_no_exec ().
4685         
4686         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4687         the new JIT.
4688
4689         * aot-compiler.c: Add an 'asm-only' AOT option.
4690
4691         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4692                 
4693         * aot-compiler.c (compile_method): Disable gshared support for now as it
4694         doesn't yet work.
4695
4696 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4697
4698         * mini-amd64.h : Fix a compiler warning.
4699
4700         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4701           Changed to use a callback function to retrieve the unwind info.
4702           This avoids problems observed when code blocks were removed by
4703           unloading an app domain.
4704
4705         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4706           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4707           to work properly.
4708
4709         Contributed under MIT/X11 license.
4710
4711 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4712
4713         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4714           case to keep the stack aligned to 8.
4715
4716         Contributed under MIT/X11 license.
4717
4718 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4721         avoid repeated linear searches.
4722
4723 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4724
4725         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4726         methods it can't handle.
4727         
4728         * aot-compiler.c (add_method): Avoid adding a method twice.
4729         (add_wrappers): Add runtime invoke wrappers for all methods.
4730
4731         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4732         function to create an aot-compatible version of this trampoline.
4733
4734         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4735
4736 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4739
4740         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4741         with a generic sharing failure.
4742
4743         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4744
4745         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4746         CEE_RETHROW. Fixes #419634.
4747
4748         * mini.c (mono_method_to_ir): Ditto.
4749
4750         * exceptions.cs: Add a new test.
4751         
4752         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4753         to mono_type_stack_size_internal () since some callers might not pass in
4754         an rgctx.
4755
4756         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4757         instrument_prolog. Fixes #419878.
4758
4759         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4760         doubles in soft float mode volatile.
4761
4762 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4765
4766         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4767         to handle soft float correctly.
4768
4769         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4770         the fast path.
4771
4772         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4773
4774         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4775         to sp, since the generics catch code requires it.
4776
4777         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4778         copying.
4779
4780         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4781         mono_arch_emit_imt_argument ().
4782
4783         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4784
4785         * mini-arm.c tramp-arm.c: Generic sharing updates.
4786
4787 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * mini-arm.c: Fix the arm build.
4790
4791         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4792         handling enums, generic instances and generic sharing.
4793         (mini_type_stack_size_full): Ditto.
4794
4795         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4796         
4797         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4798
4799         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4800
4801         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4802         trampolines.
4803
4804         * mini-arm.c: Various small generic sharing changes.
4805
4806         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4807         this for x86.
4808         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4809         custom code.
4810
4811         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4812         helper function to return a generic class init trampoline.
4813
4814         * method-to-ir.c mini.c: Use it.
4815         
4816         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4817         arch-specfic function to return a generic class init trampoline.
4818
4819         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4820         the GENERIC_CLASS_INIT custom code.
4821
4822         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4823         a fatal error, not a sharing failure.
4824
4825         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4826         needed.
4827
4828         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4829         trampoline argument from MONO_ARCH_VTABLE_REG.
4830
4831         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4832         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4833         argument, and pass the vtable in VTABLE_REG.
4834
4835         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4836         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4837         argument, and pass the vtable in VTABLE_REG.
4838         (mono_arch_create_trampoline_code_full): Remove some special casing for
4839         the rgctx fetch trampoline.
4840
4841         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4842         Fixes #419273.
4843
4844         * iltests.il: Add a test for it.
4845
4846 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4847
4848         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4849
4850         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4851         no longer needed.
4852
4853         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4854         use mono_jit_info_table_find () to avoid recursion.
4855         (mono_delegate_trampoline): Add a sync wrapper here.
4856
4857         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4858         here.
4859
4860         * mini.c (mono_method_to_ir): Ditto.
4861         
4862         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4863         add_sync_wrapper argument. Don't add a sync wrapper here.
4864         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4865
4866         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4867         
4868 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4869
4870         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4871           of nonvolatile registers back from MonoContext to CONTEXT.
4872
4873         Contributed under MIT/X11 license.
4874
4875 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4876
4877         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4878           arguments on Winx64 there are only 4 argument registers.  For this
4879           logic to work the last argument must be pulled from the stack.  
4880
4881         Contributed under MIT/X11 license.
4882
4883 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4886
4887         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4888         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4889         encode/decode_method_ref ().
4890
4891         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4892
4893         * aot-runtime.c (decode_patch): Ditto.  
4894
4895         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4896         MONO_PATCH_INFO_METHOD.
4897
4898         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4899         MonoGenericJitInfo.
4900
4901         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4902         MonoGenericJitInfo.
4903
4904         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4905
4906         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4907         one from the caller.
4908
4909         * aot-runtime.c (decode_generic_inst): New function to decode and
4910         return a interned generic inst.
4911         (decode_klass_ref): Use it.
4912         (decode_method_ref): Ditto.
4913
4914         * aot-compiler.c (emit_exception_debug_info): Save 
4915         jinfo->has_generic_jit_info too.
4916
4917 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
4920
4921         * iltests.il.in: Add a test for fconv_to_i.
4922
4923         * liveness.c: Disable the liveness2 pass for now to save space.
4924
4925         * regalloc2.c: Include mempool-internals.h to fix warnings.
4926
4927         * aot-compiler.c (encode_method_ref): Encode the context of generic
4928         instance methods.
4929
4930         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4931         the context saved in the aot file.
4932
4933         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4934
4935         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4936
4937         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4938         volatile so they won't be optimized away.
4939
4940 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4941
4942         * ssa.c:
4943         * ssa2.c:
4944         * mini.c:
4945         * regalloc2.c:
4946         * dominators.c: Remove duplicated functions that now are in
4947         mempool-internals.h.
4948
4949 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * aot-compiler.c: Fix warnings.
4952
4953         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
4954
4955         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
4956
4957         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
4958         as the patch type.
4959
4960         * mini.c (mono_resolve_patch_target): Ditto.
4961         
4962         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
4963         (encode_klass_ref): Add support for encoding VARs/MVARs.
4964
4965         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
4966
4967         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
4968         the handling of the got entries into a separate 'decode_got_entry' function.
4969         Add support for RGCTX_FETCH.
4970
4971         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
4972         clobbered by the trampoline code.
4973
4974         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
4975         not clobbered by the indirect calling code.
4976
4977 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
4980         to fix the build.
4981
4982 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
4983
4984         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
4985         signature using the compilation mempool otherwise we would leak it.
4986
4987 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
4990         mono_emit_abs_call ().
4991
4992         * patch-info.h: Add GENERIC_CLASS_INIT.
4993
4994         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
4995
4996         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
4997         as their target as a near call.
4998
4999         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5000         ABS handling code.
5001         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5002
5003         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5004         call to a runtime function described by a patch.
5005
5006         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5007         mono_emit_abs_call, this has the advantage that the ABS handling code in
5008         mono_codegen () can handle them both, and can handle other stuff in the
5009         future without additional code.
5010
5011         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5012         entry.
5013         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5014         abs addresses.
5015
5016         * mini.h: Add missing bblock related prototypes.
5017
5018         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5019         reverse_inst_list_len fields.
5020
5021         * mini.c: Refactor this file a bit by moving branch optimizations to 
5022         branch-opts.c.
5023
5024         * method-to-ir.c: Merge generic sharing changes missed earlier.
5025
5026         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5027
5028         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5029         shared patches. Process METHODCONST as a shared patch.
5030
5031         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5032         as it crashes on the 2.0 mscorlib.
5033
5034         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5035         to cause crashes.
5036         
5037         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5038         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5039         by IMT.
5040
5041         * aot-compiler.c: Reorganize the got handling code to be a bit more
5042         understandable.
5043
5044 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5047         mono_patch_info_equals/hash, and use it to massively simplify
5048         get_plt_index ().
5049
5050         * mini.c (mono_patch_info_hash): Simplify this and add support for
5051         more patch types.
5052
5053         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5054
5055         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5056         handling code, since an offset is not enough to identify a trampoline.
5057
5058         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5059
5060 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5061
5062         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5063
5064         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5065
5066         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5067
5068         * decompose.c: PPC decompositions for various ops.
5069
5070         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5071
5072 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5073
5074         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5075         call the generic trampoline code using a call, instead of a jump, to
5076         remove some special casing from the generic trampoline code.
5077
5078         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5079         (mono_codegen): Ditto.
5080
5081         * aot-compiler.c aot-runtime.c: Ditto.
5082
5083         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5084
5085         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5086         helper function to find the offset corresponding to a lazy fetch trampoline.
5087
5088         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5089         when doing generic sharing.
5090
5091         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5092         places.
5093         
5094         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5095         mini-trampolines.c to be with the other trampoline creation functions.
5096
5097         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5098         as it is equal to method->signature in most cases, add a 
5099         mono_emit_method_call_full variant which takes a signature and an imt
5100         argument as well.
5101
5102 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5103
5104         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5105         to this function, since it could be computed easily from the method 
5106         argument.
5107         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5108         more.
5109
5110         * method-to-ir.c mini.c: Remove references to 
5111         compile_generic_method_wo_context.
5112
5113         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5114         generic method calls.
5115         
5116         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5117         dimensional non-szarrays.
5118
5119         * mini.c (mini_init): Register mono_array_new_1.
5120
5121         * jit-icalls.c (mono_array_new_1): New jit icall.
5122
5123         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5124         pointing to the method.
5125
5126         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5127         method addresses belonging to METHOD_JUMP patches in the 
5128         jump_target_got_slot_hash.
5129         (mono_aot_load_method): Ditto.
5130
5131         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5132         METHOD_JUMP patches.
5133
5134         * mini.c (mini_create_jit_domain_info): New helper function which 
5135         initializes/frees domain->runtime_info.
5136         (mini_free_jit_domain_info): Ditto.
5137         (mini_init): Install the domain hook functions with the runtime.
5138
5139         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5140         information maintained by the JIT.
5141
5142         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5143         insertion into jump_table_hash into mono_codegen (), also implement proper
5144         locking.
5145
5146         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5147         tail calls, it is already done by the aot code.
5148         
5149         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5150         mechanism on amd64.
5151
5152         * iltests.il.in: Make the jmp test a bit more complex.
5153
5154         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5155         generic instances which doesn't have a token.
5156
5157         * aot-runtime.c (decode_method_ref): Ditto.
5158         
5159         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5160         can handle this case now.
5161         (handle_box): Ditto.
5162
5163 2008-08-15  Geoff Norton  <gnorton@novell.com>
5164
5165         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5166         debugging check.
5167
5168 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5171         calling generic methods.
5172
5173         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5174
5175         * aot-runtime.c (decode_patch_info): Ditto.
5176
5177         * mini.c (mono_resolve_patch_target): Ditto.
5178         
5179         * patch-info.h: Add METHOD_RGCTX.
5180
5181         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5182
5183 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5186         arguments in registers.
5187
5188         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5189         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5190
5191         * mini.c (mini_method_compile): Abort aot compilation for generic
5192         methods if generic sharing is disabled.
5193         
5194         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5195         an mrgctx.
5196
5197         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5198         requiring an mrgctx.
5199
5200         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5201         store instructions when converting a vcall to a normal call.
5202
5203         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5204         mono_arch_find_jit_info.
5205
5206 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5207
5208         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5209         avoid calling mono_method_full_name () for every method even if the
5210         env var is not set.
5211         (check_inline_caller_method_name_limit): Ditto.
5212
5213 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5214
5215         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5216         assemblies in one run.
5217
5218         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5219         skipped methods if it is not 0.
5220
5221         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5222
5223 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5224
5225         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5226           MONO_ARCH_HAVE_UNWIND_TABLE.
5227
5228         Contributed under MIT/X11 license.
5229
5230 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5231
5232         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5233           from default optimizaton list on Winx64.
5234
5235         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5236
5237         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5238           the LMF from the MonoJitTlsData structure.
5239
5240         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5241
5242         Contributed under MIT/X11 license.
5243
5244 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5245
5246         * mini.c (sigsegv_signal_handler): Fix the build.
5247
5248         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5249         assembly->aot_module.
5250
5251         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5252         hash table. This simplifies and speeds up a lot of code, and fixes support
5253         for .netmodules.
5254
5255         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5256         with the runtime.
5257
5258         * mini-exceptions.c: Ditto.
5259         
5260         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5261         'native_offset' argument, since these are computed in the 
5262         mono_find_jit_info () function.
5263
5264         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5265         is used by exceptions-ppc.c.
5266
5267         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5268         mono_arch_find_jit_info ().
5269         
5270         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5271         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5272         generic code in mini-exceptions.c.
5273
5274 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5275
5276         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5277
5278         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5279         
5280         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5281         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5282         called while holding the loader lock. Fixes #415608.
5283         (mono_aot_get_method_from_token_inner): Ditto.
5284
5285 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5288         to reduce differences between this and the generic implementation in
5289         mini-exceptions.c.
5290         (ves_icall_get_frame_info): Ditto.
5291
5292         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5293
5294         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5295         longer neccesarry.
5296
5297         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5298         mono_arch_get_call_filter () and make it non-static, for consistency with the
5299         other architectures.
5300
5301 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5302
5303         * mini.c:
5304         * local-propagation.c:
5305         * mini-x86.c: Correct the name of arch defines.
5306
5307 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5308
5309         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5310         NO_EMULATE_LONG_SHIFT_OPS define.
5311
5312 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5313
5314         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5315         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5316
5317         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5318         MACH fixes. Merged from the 2.0 branch.
5319
5320         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5321
5322         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5323         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5324
5325         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5326
5327         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5328         mono_marshal_get_native_wrapper () signature changes.
5329
5330 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5331
5332         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5333         conversion bug under arm.
5334
5335 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5338
5339         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5340         with overflow checking.
5341
5342 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5343
5344         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5345         to the genmdesc.pl file
5346
5347 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5350         arg_array in the soft-float versions of the LOAD/STORE macros.
5351
5352         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5353         implementation.
5354
5355         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5356
5357 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5358
5359         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5360         a float HFA. Fixes #413621.
5361
5362 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5363
5364         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5365         frame_size to args_size. Fixes build.
5366
5367 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5370         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5371
5372         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5373         the stack are not unaligned. Fixes #413247.
5374         
5375 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5376
5377         * mini.c: update jitted methods performance counters.
5378
5379 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5380
5381         * mini-exceptions.c: increase the exceptions thrown performance
5382         counter in mono_handle_exception ().
5383
5384 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5385
5386         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5387         can work with netmodules.
5388
5389 2008-07-28  Geoff Norton  <gnorton@novell.com>
5390
5391         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5392         regression tests.
5393
5394 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5397         correct place.
5398
5399 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5400
5401         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5402           The float param registers and other param registers must be the 
5403           same index on Windows x64.
5404
5405         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5406           ArgValuetypeAddrInIReg argument case.  Setting the argument
5407           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5408
5409         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5410           variable computed above as the copy length for arguments of storage
5411           type ArgValuetypeAddrInIReg.
5412
5413         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5414           ArgValuetypeAddrInIReg argument case.  This case will rely on
5415           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5416
5417         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5418           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5419           jump and tail call instructoins as they do not follow the typical call behavior.
5420
5421         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5422           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5423           local variable and pass the local variable by reference to the called method.
5424
5425         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5426           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5427           of a struct is passed in a register it must be saved with the other
5428           volatile argument on the stack.
5429
5430         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5431           frame pointer the stack adjustment value must be saved to the unwind 
5432           info structure.
5433
5434         Contributed under MIT/X11 license.
5435
5436 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5439         which got lost in the merge.
5440
5441 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5444         build.
5445
5446         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5447         
5448         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5449         icalls, since they won't be patched.
5450
5451         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5452         different code sequence when running under valgrind to prevent some valgrind
5453         errors.
5454
5455         * iltests.il.in: Add new regression test.
5456
5457         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5458         end with a throw.
5459
5460         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5461         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5462
5463         * iltests.il.in: Add new test.
5464
5465         * aot-compiler.c: Fix some warnings.
5466
5467         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5468         Fixes #412494.
5469
5470 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5473         (mini_usage_jitdeveloper): Add a missing --wapi option.
5474
5475 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * mini-codegen.c: Simplify the is_fp macros.
5478         (free_up_ireg): Remove, use free_up_reg instead.
5479         (free_up_reg): Fix the fp case.
5480
5481 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5484         lowered earlier.
5485
5486         * exceptions-x86.c: Merge some changes which seemed to have got lost
5487         in the linear-ir merge.
5488
5489         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5490
5491         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5492         long vreg volatile even if the variable was already created.
5493
5494         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5495         volatile variables.
5496
5497 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5498
5499         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5500
5501         * mini.c (mono_jit_compile_method_inner): Add support for 
5502         MONO_EXCEPTION_BAD_IMAGE.
5503
5504         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5505         mini_method_get_context () returns NULL. Fixes #356531.
5506
5507         * mini.c (mono_method_to_ir): Ditto.
5508         
5509         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5510         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5511
5512 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5515         in the LDFTN implementation.
5516
5517 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5518
5519         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5520         code, patch calls to icalls, too, even if they're not in the
5521         shared generic code hash.  Fixes #411962.
5522
5523 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * cpu-x86.md: Increase the length of the fcall opcodes.
5526
5527         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5528         calls returning floats.
5529
5530         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5531         on NEWARR.
5532         
5533         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5534         missed earlier.
5535
5536         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5537         into the domain->method_code_hash.
5538
5539         * aot-compiler.c: Fix win32 build.
5540
5541         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5542         
5543         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5544         gshared NEWARR implementation.
5545
5546         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5547
5548         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5549         can be used outside of method_to_ir.
5550
5551         * mini.h (MonoCompile): Add arg_types field.
5552
5553         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5554         
5555         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5556         the values of the local arg_array and param_types array.
5557
5558 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5561         got accesses might only get generated later when NEWOBJ is decomposed.
5562         
5563         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5564         looking up the native code of the target method when a delegate is called
5565         for the first time.
5566
5567         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5568         optimization.
5569
5570         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5571
5572         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5573         AOT work on platforms without a working dlsym implementation.
5574
5575         * mini.h: Bump AOT image format version.
5576         
5577 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5578
5579         * mini-exceptions.c: Free a MonoType with
5580         mono_metadata_free_type() instead of g_free().
5581
5582         * aot-runtime.c: Free a MonoType.
5583
5584 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5587         optimization.
5588
5589         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5590         fp stack on x86.
5591
5592 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5593         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5594         profiler hook.
5595
5596 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5597
5598         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5599         NEWOBJ calls on valuetypes.
5600
5601         * iltests.il.in: Add new test.
5602
5603         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5604
5605 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5608         is no longer needed.
5609
5610         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5611         non register sized integer arguments.
5612         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5613         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5614         emit_memcpy2 ().
5615
5616         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5617         CEE_MONO_RETOBJ.
5618         
5619         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5620         two a binop with different sized arguments is emitted.
5621
5622         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5623         instruction in the ins==NULL case.
5624
5625 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5626
5627         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5628
5629         * mini-x86.c: Fix osx build.
5630
5631         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5632         opcodes as well.
5633
5634         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5635         instruction for non int sized variables.
5636
5637         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5638         implementation.
5639
5640 2008-07-23  Robert Jordan  <robertj@gmx.net>
5641
5642         * method-to-ir.c: Fix MSVC build.
5643
5644 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5647         a non int sized type, widen it to an int since newer versions of gcc seem to
5648         generate code which needs this.
5649
5650         * ssa2.c abcremoval2.c: Fix warnings.
5651
5652         * *: Merge the Linear IR branch.
5653
5654         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5655         the ChangeLog file there describes all the changes done over the years. 
5656         Further documentation can be found at www.mono-project.com/Linear_IL.
5657
5658 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5659
5660         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5661           The float param registers and other param registers must be the 
5662           same index on Windows x64.
5663
5664         Contributed under MIT/X11 license.
5665
5666 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5667
5668         * mini.c: Make the previous fix GC safe.
5669
5670 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5671
5672         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5673
5674 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5675
5676         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5677           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5678           ArgValuetypeAddrInIReg instead.
5679
5680         Contributed under MIT/X11 license.
5681
5682 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * mini-codegen.c (get_register_spilling): Fix a warning.
5685
5686 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5687
5688         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5689         for types which the initialization fails. Raises the provided exception
5690         at the right stop after cleanup.
5691
5692 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * aot-compiler.c: Free most of the memory allocated during compilation.
5695
5696         * mini.c (mini_parse_debug_options): Fix a leak.
5697         
5698         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5699         during aot compilation.
5700
5701 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5702
5703         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5704         it has too much register pressure.
5705
5706 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5707
5708         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5709
5710 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5713         on x86.
5714
5715         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5716         on amd64 similar to the way it is done on arm.
5717
5718         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5719
5720         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5721         consistency, normalize error messages, avoid loading aot-only modules in
5722         normal mode.
5723
5724         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5725         for consistency.
5726
5727         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5728
5729 2008-07-11  Martin Baulig  <martin@ximian.com>
5730
5731         * debug-debugger.h
5732         (MonoDebuggerInfo): Add `interruption_request'.
5733
5734 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5735
5736         * aot-compiler.c (emit_plt): Remove some dead code.
5737
5738         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5739
5740         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5741         return the plt info offset belonging to a given plt entry.
5742
5743         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5744         mono_aot_get_plt_info_offset.
5745         
5746         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5747         similar to the amd64 code by makeing jumps through a separate jump table 
5748         instead of embedding the jump addresses into the code.
5749
5750 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5753         method.
5754
5755 2008-07-10  Martin Baulig  <martin@ximian.com>
5756
5757         * mini.c (mini_method_compile): Disable generics sharing when
5758         running in the debugger.
5759
5760 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5761
5762         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5763
5764         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5765         the local register allocator from running out of registers on x86 when 
5766         using aot.
5767
5768 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5769
5770         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5771         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5772         C4146.
5773
5774         Contributed under MIT/X11 license.
5775
5776 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5779         speed up the assembler.
5780
5781 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5782
5783         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5784         support.
5785
5786         * mini.c: Move the soft float handling macros a bit earlier, add 
5787         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5788         place.
5789
5790         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5791
5792         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5793         read-only to help catch code allocation requests.
5794         
5795         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5796         and turn it off when using --aot-only or when compiling with --aot=full.
5797
5798         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5799         jump table for switches from the normal domain mempool, not the code
5800         manager.
5801
5802         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5803         unbox trampoline which handles aot-only mode too.
5804
5805         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5806         an AOTed unbox trampoline.
5807
5808         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5809
5810 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5811
5812         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5813         ""
5814
5815         Contributed under MIT/X11 license.
5816
5817 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5818
5819         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5820           the unwind information for the method at the end of the allocated block.
5821           
5822         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5823           MonoCompileArch to hold the unwind info for SEH on Winx64
5824         
5825         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5826           frame pointer info for the method being compiled.
5827           
5828         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5829           the call to mono_exception_from_token.
5830           
5831         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5832           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5833           information is stored a the end of the method block because it is all 32-bit offset based.
5834
5835         Contributed under MIT/X11 license.
5836
5837 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5838
5839         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5840
5841         * wapihandles.c: Fix warnings.
5842
5843         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5844         mode.
5845
5846         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5847         mono_jit_compile_method in aot-only mode since that calls the type 
5848         initializer.
5849         
5850         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5851         get_delegate_invoke_impl in aot-only mode.
5852
5853         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5854
5855 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5858
5859         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5860         is on by default.
5861
5862         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5863
5864         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5865         init trampoline from the AOT file as well.
5866
5867         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5868         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5869         code.
5870
5871         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5872         mono_init.
5873
5874         * exceptions-amd64.c: Add _full variants for the remaining exception code
5875         creation functions as well, allow emission of relocatable code, remove
5876         caching since that is now done by the caller.
5877
5878         * mini-exceptions.c: Add _full variants for the remaining exception code
5879         creation functions as well, add aot-only support.
5880
5881         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5882         if we can determine a proper token for them.
5883         (add_wrappers): Add a few more wrappers.
5884         (emit_method_code): Remove some dead code.
5885         (emit_trampolines): Emit exception code too.
5886
5887         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5888
5889         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5890         mono_array_new_va which avoids varargs.
5891
5892         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5893
5894         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5895         mono_arch_create_specific_trampoline () in all places.
5896
5897         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5898         a bit so it can be used for other things as well.
5899         
5900         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5901         on demand as well.
5902
5903         * exceptions-amd64.c: Rename the caching from the exception code creation
5904         functions, it is done by the caller instead.
5905         
5906         * exceptions-amd64.c: Change the signature of the exception code creation 
5907         functions to allow the creation of relocatable code later.
5908
5909         * mini-exceptions.c: Add a set of functions to query the various 
5910         runtime-generated exception functions.
5911
5912         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5913         mono_arch_.. () functions.
5914         
5915 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5916
5917         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
5918
5919         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
5920
5921         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5922         (mini_get_vtable_trampoline): Ditto.
5923
5924         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5925         code in the AOT case by returning the code size and a list of relocations to
5926         the caller.
5927
5928         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5929
5930 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5931
5932         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5933           clean the stack.
5934
5935         Contributed under MIT/X11 license.
5936
5937 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5940         so the buffer size can be computed correctly. Fixes #404735.
5941
5942         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5943         normally as cfg->debug_info is already freed.
5944
5945 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * mini-amd64.c: For calls returning vtypes in registers, don't store
5948         the return address on the stack, instead allocate a separate local for
5949         it. Fixes #404729.
5950
5951 2008-07-05  Mark Probst  <mark.probst@gmail.com>
5952
5953         * mini-trampolines.c, mini.h: Add an argument to
5954         mono_create_jit_trampoline_in_domain() for turning off the adding
5955         of the sync wrapper.
5956
5957         * mini.c: Use the JIT trampoline without sync instead of
5958         ldftn_nosync in static RGCTX invoke wrappers so that the call can
5959         be patched.
5960
5961 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5962
5963         * driver.c: Turn on GSHARED optimization by default.
5964
5965 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
5968         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
5969
5970         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
5971         create a variant of the generic trampoline code callable from AOTed trampolines.
5972
5973         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
5974         trampoline code callable from AOTed trampolines.
5975
5976         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
5977
5978 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5979
5980         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
5981         pass-through manner.
5982
5983         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
5984         and don't fail sharing for them anymore.
5985
5986         * mini-exceptions.c: Handle exceptions in shared generic methods.
5987
5988         * generic-sharing.c: When checking the context of a generic
5989         method, also check its class's context.  Don't treat wrappers as
5990         sharable.
5991
5992         * mini-trampolines.c: Some code factored out to
5993         metadata/generic-sharing.c.  Handle the MRGCTX case.
5994
5995         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
5996         we must deal with the method being of another instantiation of the
5997         class.  Add static rgctx invoke wrappers to generic methods.
5998
5999 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6000
6001         * mini.c: Provide all jit infos of generic shared methods with a
6002         generic jit info.
6003
6004         * mini-exceptions.c: Handle the new situation that a generic info
6005         might be available, but not info about the this/vtable/mrgctx
6006         variable.
6007
6008 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6009
6010         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6011         generic methods.
6012
6013 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * dominators.c (check_dominance_frontier): Fix a warning.
6016
6017         * mini.h: Add some missing prototypes.
6018
6019         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6020
6021         * driver.c (mono_jit_init_version): Correct the comments since the first
6022         argument should be the name of the root domain, not a filename.
6023
6024         * aot-runtime.c (make_writable): Error out if this is called while running
6025         with --aot-only.
6026         (load_aot_module): Ditto.
6027
6028         * aot-compiler.c: Really fix the computation of method indexes.
6029
6030         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6031         optimizations as this is no longer called frequently.
6032
6033         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6034         method and the invoke impl code and pass it to the delegate trampoline instead of
6035         just the delegate class.
6036
6037 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * aot-compiler.c: Fixup the computation of method indexes.
6040         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6041         the method builder infrastructure.
6042
6043         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6044         has no header.
6045
6046         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6047         mode, load the method right away instead of creating a trampoline.
6048
6049         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6050
6051         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6052         some checks a bit.
6053
6054 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6057         (mono_aot_load_method): Use method_index instead of method->token.
6058
6059         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6060         can handle icalls etc. properly.
6061
6062         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6063
6064         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6065
6066         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6067         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6068         JIT_ICALL_ADDR patch type.
6069
6070         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6071
6072         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6073         request flag.
6074         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6075
6076         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6077
6078 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6079
6080         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6081         domain->jit_code_hash.
6082
6083 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6084
6085         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6086
6087 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6088
6089         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6090         get_this_arg_from_call, let it compute it when needed.
6091
6092         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6093         gsctx from code only when needed.
6094
6095         * mini-trampolines.c (get_generic_context): Rename this to 
6096         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6097         it can be called by the arch backends.
6098
6099         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6100
6101 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * driver.c (mono_main): Add experimental --aot-only command line option.
6104
6105         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6106         set.
6107
6108 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6109
6110         * driver.c (DllMain): Remove mono_module_handle.
6111
6112         Contributed under MIT/X11 license.
6113
6114 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6117         for emitting methods which are not in the source assembly. Detect and report
6118         failure of assembling+linking.
6119         
6120         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6121
6122         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6123
6124 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6127
6128 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * mini.h: Remove some obsolete prototypes.
6131
6132         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6133
6134 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6135
6136         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6137         supported by Visual Studio, so use alloca().
6138
6139 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6140
6141         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6142         Fixes #402585.
6143
6144 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6145
6146         * mini.c: Fail sharing of a generic method if it contains an open
6147         catch clause (because we don't pass MRGCTXs yet).
6148
6149 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6150
6151         * mini.c: When compiling a method with generic sharing, insert the
6152         method instantiated with an all-Object generic context into the
6153         jit info table, instead of the context of the first instantiation
6154         of the method we happen to compile.
6155
6156 2008-06-18  Martin Baulig  <martin@ximian.com>
6157
6158         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6159         `major_version' and `minor_version'.
6160
6161 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6162
6163         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6164         mono_method_is_generic_sharable_impl() takes an additional
6165         argument specifying whether to treat type variables as reference
6166         types.
6167
6168 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6169
6170         * mini.h: Removed obsolete prototypes.
6171
6172 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6173
6174         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6175         already handle them.
6176
6177 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6178
6179         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6180         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6181         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6182         tramp-x86.c: Added a MonoGenericContext* argument to
6183         mono_arch_get_unbox_trampoline() so that it can call other
6184         functions which require it.
6185
6186 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6187
6188         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6189         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6190         mono_arch_get_this_arg_from_call() takes a
6191         MonoGenericSharingContext* as well.
6192
6193 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6194
6195         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6196         implement generic sharing of unbox.
6197
6198 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6199
6200         * mini.c: Don't compute the vtable to determine whether a field is
6201         special static, because it might not work for open types.
6202
6203 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6204
6205         * mini.c: Removed the unused token_type and token_source arguments
6206         from get_runtime_generic_context_ptr().
6207
6208 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6209
6210         * mini.c (ADD_BINOP): fix the build
6211
6212 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6215         a widening op.
6216
6217 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6218
6219         * mini.h: Removed class relations enum that's not used anymore.
6220
6221 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6222
6223         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6224
6225         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6226         the lazy fetch trampoline access code.
6227
6228 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6229
6230         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6231
6232 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6233
6234         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6235
6236         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6237
6238         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6239
6240 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6241
6242         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6243         intrinsics.
6244
6245         * mini-ops.h: Add MIN/MAX_UN opcodes.
6246
6247         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6248         intrinsics.
6249
6250         * basic-math.cs: Add more min/max tests.
6251
6252         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6253
6254 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6255
6256         * mini.c: Small fix in the prologue of emit_castclass.
6257
6258 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6259
6260         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6261
6262         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6263         do not work even for unsigned types. Fixes #400014.
6264
6265         * basic-math.cs: Add regression tests for unsigned Min/Max.
6266
6267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6268
6269         * mini.c: Added additional context_used argument to several
6270         functions, which will be needed for sharing generic methods.  Use
6271         GET_RGCTX macro wherever appropriate.  Declare only one
6272         context_used in mono_method_to_ir().
6273
6274 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6275
6276         * mini.c, generic-sharing.c: Removed generic class relations.
6277
6278         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6279         functions due to MRGCTX changes.
6280
6281 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6282
6283         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6284         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6285         with calculated IMT.
6286
6287         * mini.c: Generic sharing of calls via generic interfaces.
6288
6289         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6290         generic method with non-constant MonoGenericContext*.  Instead,
6291         the context is taken out of the method itself.
6292
6293 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6294
6295         * mini.c: Generic sharing of ldvirtftn.
6296
6297 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6298
6299         * mini.c: Generic sharing of ldftn.
6300
6301 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6302
6303         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6304
6305 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6306
6307         * mini.c: Generic sharing of the special case of ldtoken followed
6308         by a call to GetTypeFromHandle.
6309
6310 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6311
6312         * mini.c: Generic sharing of box for nullable types.
6313
6314 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6317         are passed on the stack. Fixes #324807.
6318
6319 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6320
6321         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6322         for the ArgValuetypeAddrInIReg case.
6323
6324         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6325         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6326
6327         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6328         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6329         local variable and pass the local variable by reference to the called method.
6330           
6331         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6332         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6333
6334         Contributed under MIT/X11 license.
6335
6336 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6337
6338         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6339
6340         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6341         everything.
6342
6343 2008-06-10  Martin Baulig  <martin@ximian.com>
6344
6345         * debug-mini.c
6346         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6347
6348 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6349
6350         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6351         possible error when no arguments are passed.
6352
6353         Contributed under MIT/X11 license.
6354
6355 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6356
6357         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6358         where the file name is NULL.
6359
6360 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * mini.c: Fix s390 build.
6363
6364 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * trace.c (mono_trace_parse_options): Fix warnings.
6367
6368         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6369
6370 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6371
6372         * mini.c (remove_block_if_useless): Avoid printing the method name.
6373         
6374         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6375         MONO_INST_NEW.
6376
6377         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6378         LMF. Not yet used.
6379
6380         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6381         translated code after it has been patched.
6382
6383 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6386         avoid problems during code patching on SMP systems.
6387         (emit_call): Avoid adding a patch info which is already added by 
6388         emit_call_body.
6389         (mono_arch_emit_exceptions): Ditto.
6390
6391 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6392
6393         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6394         MONO_TYPE_ISSTRUCT already checks for it.
6395
6396 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6397
6398         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6399           structs with floats on Winx64 the float registers are not used.  
6400           The integer registers are always used..
6401         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6402           only one register will be used and only if the size of the struct 
6403           is 1,2,4, or 8 bytes.
6404
6405         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6406           to work for Winx64.
6407
6408         Contributed under MIT/X11 license.
6409
6410 2008-06-05  Martin Baulig  <martin@ximian.com>
6411
6412         * debug-debugger.c (debugger_lookup_class): Also call
6413         mono_class_setup_methods() here; we're only called from RTI.
6414
6415 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6416
6417         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6418         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6419         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6420         Post-process object files and add dtrace-generated object, if necessary.
6421
6422         Contributed under MIT/X11 license.
6423
6424 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6425
6426         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6427         element class.
6428
6429         * mini.c: Generic sharing for unbox.any and castclass.
6430
6431 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6432
6433         * mini.c: Ignore tailcall prefix in shared generic code and when
6434         doing calls which require a vtable/rgctx argument.
6435
6436 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6437
6438         * mini.c: Don't free the JIT info.
6439
6440         * driver.c: Changes in the JIT info table testing code.
6441
6442 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6445         interruption. Fix some warnings.
6446
6447         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6448         interruption_checkpoint.
6449
6450 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6451
6452         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6453         from embedding applications.
6454
6455 2008-06-02  William Holmes  <billholmes54@gmail.com>
6456
6457         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6458           reserving 32 bytes on the stack when making calls. 
6459
6460         Contributed under MIT/X11 license.
6461
6462 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6463
6464         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6465         the linear IL branch.
6466
6467         * driver.c: Print out more information for --version on arm.
6468
6469 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6472         bb_exit instead, since out of line bblocks might not actually be emitted
6473         out-of-line.
6474         
6475         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6476         maximum epilog size for out of line bblocks if tracing is enabled.
6477
6478         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6479
6480 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6481
6482         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6483
6484 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6487         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6488         opcodes.
6489
6490 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6493         the 'value' to store is a constant.
6494
6495         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6496
6497         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6498         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6499
6500 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6503         for accessing method->generic_container.
6504
6505 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6508         
6509         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6510
6511         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6512
6513         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6514         fails.
6515
6516 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6517
6518         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6519
6520         * mini.c: Handle the case when mono_class_vtable () fails.
6521
6522 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6523         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6524         the stat profiler.
6525
6526 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6527
6528         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6529         together with domain sharing.
6530
6531 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6532
6533         * mini.c: Treat callvirts to final methods like non-virtual calls
6534         when doing generic sharing, i.e. look them up in the runtime
6535         generic context.
6536
6537 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6538
6539         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6540         with computed types (for generic sharing).
6541
6542         * mini.c: Generic sharing for mkrefany and refanyval.
6543
6544 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6545
6546         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6547         possible.
6548
6549         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6550         the generic sharing code.
6551         
6552         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6553         when needed.
6554
6555 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6556
6557         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6558
6559 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6560
6561         * driver.c: updated copyright date
6562
6563 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6566         needed.
6567
6568 2008-05-19  Martin Baulig  <martin@ximian.com>
6569
6570         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6571         pointing to the new `_mono_debug_using_mono_debugger' variable.
6572
6573         * driver.c
6574         (mono_main): Check mono_debug_using_mono_debugger() rather than
6575         the `MONO_INSIDE_MDB' environment variable to check whether we're
6576         inside the debugger.
6577
6578 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6581         argument.
6582
6583 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6584
6585         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6586
6587         * mini.c: Added mini_assembly_can_skip_verification. This
6588         function checks if the assembly requested to skip verification. 
6589         Fixes part of #387274.
6590
6591 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * mini.c (mini_get_method): Disable the check for open generic classes when
6594         using generic sharing.
6595
6596         * generics.cs: Add a test for #387034.
6597
6598         * mini.c (mini_get_method): Check whenever the method class is an open generic
6599         type, and return NULL in that case, causing a verification error. Fixes
6600         #384123.
6601
6602 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6603
6604         * driver.c (mono_main): Revert r102623. The right
6605         thing to do is to enable the verifier under verifiable
6606         unless a --security flag was passed.
6607
6608         We need this non-trivial behavior for --verify-all otherwise
6609         mcs-compileall won't be able to use it. As it needs everything to
6610         be verified under validil.
6611
6612 2008-05-06  Martin Baulig  <martin@ximian.com>
6613
6614         Fix #383749.
6615
6616         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6617         (mono_debugger_thread_cleanup): Likewise.
6618         (mono_debugger_extended_notification): Likewise.
6619
6620 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6621
6622         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6623         against both inflated and non-inflated methods. We need to check against the
6624         generic definition for cases where the instantiated method is not visible.
6625         We need to check against the inflated types for cases where the instantiation
6626         changes any super type. This fixes #382986.
6627
6628         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6629         that check for visibiliy as generic params only appears as the type subject
6630         of tokens on call opcodes. Field manipulation and ldftn must always
6631         target an exact type.
6632
6633 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6634
6635         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6636         if no related --security flag is passed.
6637
6638 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6639
6640         * mini-arch.h: Prepare support for ppc64.
6641
6642         Contributed under MIT/X11 license.
6643
6644 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6645
6646         * aot-runtime.c: Prepare support for ppc64.
6647
6648         Contributed under MIT/X11 license.
6649
6650 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6651
6652         * mini-ops.h: Prepare support for ppc64.
6653
6654         Contributed under MIT/X11 license.
6655
6656 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6657
6658         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6659
6660         Contributed under MIT/X11 license.
6661
6662 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6663
6664         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6665         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6666         assemblies on windows.
6667
6668 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6669
6670         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6671         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6672         * main.c: Use UTF-8 encoded command line instead of Windows default code
6673         page on Windows to support Unicode.
6674         * driver.c (DllMain): New function for mixed-mode assembly support.
6675         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6676         export __stdcall functions without decoration.
6677
6678         Contributed under MIT/X11 license.
6679
6680 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6681
6682         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6683         saving it very early.
6684
6685 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6686
6687         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6688         deleted.  The only way to access the new RGCTX is via the
6689         trampline.
6690
6691         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6692         vtable instead of the RGCTX to static methods.
6693
6694         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6695         accessing the new RGCTX.
6696
6697         * generic-sharing.c: There is no separation between self, type
6698         arguments and other types in the RGCTX anymore.
6699
6700 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6701
6702         * mini-amd64.c (add_general): Remove previous stack adjustment.
6703         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6704         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6705         for 32 bytes of stack space reserved for all calls.
6706         
6707         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6708         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6709         adjustment.
6710         
6711         Code contributed under MIT/X11 license.
6712
6713 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6714
6715         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6716         against the root definition, peeling out method and type instantiations.
6717         Cache verify success results, code that fails verification is still
6718         checked multiple times.
6719
6720 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6723
6724 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6725
6726         * mini-amd64.c (add_general): Always increment stack on Win64.
6727         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6728         on Win64.
6729         
6730         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6731         stack based argument handling on Win64.
6732         
6733         Code contributed under MIT/X11 license.
6734
6735 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6736
6737         * Makefile.am (version.h): Add support for git-svn.
6738
6739 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6742         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6743         avoiding allocations and libc functions which might deadlock.
6744         
6745         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6746         'no-gdb-backtrace' option is set.
6747
6748         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6749
6750         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6751
6752 2008-04-21  Martin Baulig  <martin@ximian.com>
6753
6754         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6755         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6756
6757 2008-04-21  Martin Baulig  <martin@ximian.com>
6758
6759         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6760         `thread_vtable', `event_handler_ptr' and `event_handler'.
6761
6762 2008-04-21  Martin Baulig  <martin@ximian.com>
6763
6764         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6765         allows delayed initialization of the `executable_code_buffer' when
6766         attaching.
6767
6768 2008-04-21  Martin Baulig  <martin@ximian.com>
6769
6770         * mini.h (mono_debugger_create_notification_function): Removed.
6771         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6772
6773         * mdb-debug-info64.s
6774         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6775
6776         * mdb-debug-info32.s
6777         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6778
6779         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6780         currently only works on x86 and x86_64, so don't create it on ppc.
6781
6782 2008-04-21  Martin Baulig  <martin@ximian.com>
6783
6784         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6785
6786         * mini.c
6787         (mini_method_compile): In the fp elimination check, check
6788         `debug_options.mdb_optimizations' in addition to
6789         mono_debug_using_mono_debugger().       
6790
6791         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6792         disable some JIT optimizations which are only disabled when
6793         running inside the debugger.
6794         Added `--help-debug' option to describe the debugging options.
6795         (parse_debug_options): New static function to parse the `--debug'
6796         options, so we can easily add more stuff in future.
6797
6798 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6799
6800         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6801         the method has no body.
6802
6803 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6804
6805         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6806         assembly is not allowed in MSVC 64-bit compiler. 
6807         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6808         as we get floating point exceptions everywhere.
6809         
6810         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6811         correctly align arguments for call to throw_exception.
6812         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6813         
6814         Code contributed under MIT/X11 license.
6815
6816 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6817
6818         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6819
6820 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6823
6824         * mini-amd64.c (NEW_INS): Set cil_code.
6825
6826         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6827         from mini-amd64.c so all debugger related logic is in one place.
6828
6829         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6830         later won't have a random ip assigned to them.
6831
6832 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6833
6834         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6835         the arch specific function initializes code_size.
6836         (mono_create_delegate_trampoline): Ditto.
6837
6838         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6839         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6840         platforms.
6841
6842         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6843         running under the debugger.
6844
6845         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6846         debugger.
6847
6848         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6849         debugger. Also move the disabling of optimizations here from driver.c.
6850         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6851         debugger.
6852
6853         * mini.h (MonoCompile): Add a few new flags.
6854
6855 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6856
6857         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6858         so the cil_code field of created MonoInst's is properly set.
6859         (mini_select_instructions): Ditto.
6860
6861         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6862         (MONO_INST_NEW_CALL): Ditto.
6863
6864         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6865         in many places so the ins->cil_code field is properly initialized.
6866
6867         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6868         place.
6869
6870 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6871
6872         * mini.c (mini_method_compile): Print a different message when compiling a 
6873         shared method.
6874         
6875         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6876         > 1.
6877
6878 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6879
6880         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6881         SSE2 instructions.
6882
6883         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6884         
6885 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6886
6887         * mini.c (handle_stack_args): Make this return void since its return value was
6888         never used. Also set cfg->unverifiable for invalid IL instead of calling
6889         G_BREAKPOINT ().
6890
6891 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6892
6893         * mini.c: Make sure "this" is live in catch clauses with type
6894         variables in shared generic code.
6895
6896 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6897
6898         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6899         generic_class_is_reference_type() to ensure the proper behaviour
6900         when sharing generic code and the type in question is a type
6901         argument.
6902
6903 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6904
6905         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6906         race conditions when printing thread dumps. Fixes #377738.
6907
6908 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6909         
6910         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6911         shows up when both MonoInst arguments can cause aliasig.
6912         There is likely no way in the current JIT to trigger this problem, but
6913         it showed up in the development of generics sharing, when in a new
6914         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6915         When the generics sharing code will be committed, its tests will be
6916         valid also for this bug.
6917
6918 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
6921         PATCH_INFO_METHOD.
6922
6923         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6924         NULL.
6925
6926 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6929         use a more detailed exception message for InvalidCastException.
6930
6931         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6932
6933         * driver.c (mono_main): Add --debug=casts option to turn on better 
6934         InvalidCastException message details.
6935
6936         * mini.c (mini_get_debug_options): New helper function to return the address of
6937         the debug_options variable.
6938
6939         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6940         the jit_tls TLS variable.
6941
6942         * mini.c (mono_jit_tls): New TLS variable.
6943
6944         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6945         option is used.
6946
6947 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6948
6949         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6950
6951         * mini.c: Removed verifer related stuff, code moved to verify.c.
6952
6953         * driver.c: Using code from verify.c instead of mini.c.
6954
6955 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
6956
6957         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
6958         longer valid.
6959
6960 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
6961
6962         * mini.c (check_for_method_verify): Enabling verification of
6963         corlib if mono_verify_all is set. Bugs in the verifier preventing that
6964         have been fixed.
6965
6966 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
6967
6968         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
6969         caller saved registers as well.
6970         
6971         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
6972         saved registers as well.
6973
6974 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
6977
6978         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
6979         code.
6980
6981 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
6982
6983         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
6984         to get_call_info.
6985         (get_call_info): Take a gsctx argument instead of 'cfg'.
6986
6987 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6988
6989         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
6990         mono_verify_all is set.
6991
6992         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
6993
6994         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
6995
6996 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
6999         an exception.
7000
7001         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7002         verifier and the code generated by the compiler.
7003
7004 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7005
7006         * mini.c: Generic sharing of the non-nullable case of the box
7007         instruction.
7008
7009 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7010
7011         * inssel.brg: Fix the build.
7012
7013         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7014
7015 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7016
7017         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7018         Array:Address. Fixes #372410.
7019
7020         * iltests.il.in: New tests for readonly prefix.
7021
7022 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7023
7024         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7025         mini-trampolines.c.
7026
7027         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7028         mini-exceptions.c.
7029
7030         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7031         
7032         * mini.c (mono_decompose_op_imm): New helper function.
7033
7034         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
7035         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7036         return value.
7037
7038         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7039         mono_arch_output_basic_block. Fix warnings.
7040
7041         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7042         for now.
7043
7044 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7047         since the extra frame is now detected automatically inside the loop.
7048
7049         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7050         opts which are now in mono_peephole_ins ().
7051         
7052         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7053
7054         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7055         frames and skip duplicate managed-to-native frames. Fixes #367665.
7056
7057         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7058         opts which are now in mono_peephole_ins ().
7059         (mono_arch_peephole_pass_2): Ditto.
7060
7061         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7062
7063         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7064         arch independent peephole optimizations.
7065
7066         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7067         opts which are now in mono_peephole_ins ().
7068
7069         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7070         
7071         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7072
7073         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7074         pattern.
7075
7076         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7077         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7078         opcode. 
7079
7080 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7083         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7084         return value.
7085
7086         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7087         mono_arch_output_basic_block. Fix warnings.
7088
7089 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7090
7091         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7092         conv.ovf.u.un.
7093
7094 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7097         conv.ovf.u.un.
7098
7099         * iltests.il: Add new tests.
7100
7101 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7102
7103         * mini.c: Removed Windows version macros.
7104
7105 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7106
7107         * generic-sharing.c: Put reflection types in the extensible part
7108         of the runtime generic context.
7109
7110         * mini.c: Generic sharing of the GetTypeHandle special case of the
7111         ldtoken instruction.
7112
7113 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7116
7117         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7118         
7119         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7120         consistency with the other version on the linear IR branch.
7121
7122         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7123
7124         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7125
7126         * iltests.il.in: Add new tests.
7127
7128 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7131
7132         * iltests.il.in: Add new tests.
7133
7134 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7135
7136         * mini.c: Two variables with the same name were declared in
7137         nesting contexts and one wasn't initialized.  Fixed.
7138
7139 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7140
7141         * mini.c: Generic sharing of the initobj instruction.
7142
7143 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7144
7145         * mini.c: make the test to optimize ldtoken from typeof() more
7146         precise.
7147
7148 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7149
7150         * mini.c: Generic sharing of the initobj instruction for reference
7151         types.
7152
7153 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7154
7155         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7156         the mono_breakpoint_clean_code() code to perform bound checks.
7157
7158 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7159
7160         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7161         mono_arch_patch_callsite() to include the start of the managed method
7162         to be able to perform bound checks.
7163
7164 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7165
7166         * mini.c: Generic sharing for the isinst instruction.
7167
7168 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7169
7170         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7171         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7172         with the runtime generic context argument.
7173
7174         * mini.c: Share calls to several types of unsharable methods by
7175         putting the address of the method code in the runtime generic
7176         context and doing an indirect call.
7177
7178         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7179         to switches.
7180
7181 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7182
7183         * generic-sharing.c: Change due to a change in the runtime genric
7184         context API.
7185
7186 2008-03-15  Martin Baulig  <martin@ximian.com>
7187
7188         * tramp-x86.c
7189         (mono_arch_nullify_class_init_trampoline): Add call to
7190         mono_breakpoint_clean_code() to make things work when running
7191         inside the debugger.
7192
7193         * tramp-amd64.c
7194         (mono_arch_nullify_class_init_trampoline): Add call to
7195         mono_breakpoint_clean_code() to make things work when running
7196         inside the debugger.
7197
7198 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * inssel-long.brg (reg): Fix 64 bit build.
7201
7202 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7203
7204         * mini.c, mini.h: Share static generic code by passing it an
7205         implicit argument pointing to the runtime generic context.
7206
7207         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7208         inssel-long32-mips.brg: New opcodes for calling shared static,
7209         which need to be passed the runtime generic context.
7210
7211         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7212         argument on the stack in the prologue if needed.  New function for
7213         finding the runtime generic context argument from the registers
7214         saved by the trampoline.
7215
7216         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7217         runtime generic context argument.
7218
7219         * tramp-amd64.c: Also restore the register used for the runtime
7220         generic context argument.
7221
7222         * mini-trampoline.c: Resolve shared static calls by consulting the
7223         runtime generic context via the new argument.
7224
7225         * generic-sharing.c: Add an argument to sharability-checking
7226         functions that specifies whether type variables should be treated
7227         as sharable type arguments.
7228
7229         * inssel-x86.brg: Removed a superfluous, buggy rule.
7230
7231         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7232         to switches.
7233
7234 2008-03-14  Martin Baulig  <martin@ximian.com>
7235
7236         * debug-debugger.c (main_thread_handler): Call
7237         mono_runtime_run_main() without sending any notifications.
7238
7239         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7240
7241 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7244
7245 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7246
7247         * tramp-x86.c: Fixed register restore offsets in the trampoline
7248         code for ECX and EDX.
7249
7250 2008-03-12  Geoff Norton  <gnorton@novell.com>
7251
7252         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7253         different ucontext_t implementations.
7254         * exceptions-arm.c: Use the above defines to get exceptions working on 
7255         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7256         * mini-arm.c: Implement iPhone icache support (based on a patch by
7257         Luke Howard lukeh@padl.com)
7258
7259 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7260
7261         * mini.c: Enable generic sharing of calls to non-static
7262         non-interface non-generic non-value-type methods.
7263
7264         * mini-trampolines.c: Resolve calls from shared generic code.
7265
7266 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7269
7270         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7271
7272 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7273
7274         * mini.c: some fixes for the AOT compiler.
7275
7276 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7277
7278         * cpu-amd64.md: Add clob:1 to some float opcodes.
7279
7280 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7281
7282         * mini.h: Added MiniVerifierMode enumeration.
7283
7284         * mini.c: Added mini_verifier_set_mode to control
7285         the usage of the new verifier.
7286
7287         * mini.c (mono_method): Integrated the new verifier.
7288
7289         * driver.c: Extended --security option with validil and
7290         verifiable options to activate the new verifier.
7291
7292 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7295         optimization to ctors taking 0 or 2 arguments too.
7296
7297         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7298         a bit.
7299
7300         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7301
7302         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7303
7304 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7307         non-aot case as well.
7308
7309         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7310
7311         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7312         changes.
7313
7314         * aot-compiler.c (encode_patch): Ditto.
7315
7316         * mini.h (G_MININT32): Fix the definition of this.
7317
7318 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7321
7322         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7323
7324 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7327         methods returning vtypes in registers.
7328         (mono_arch_allocate_vars): Ditto.
7329
7330         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7331
7332         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7333
7334         * generics.cs: Add a test from the linear IR branch.
7335
7336         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7337
7338         * mini.c (inline_method): Cache failed inline attempts.
7339
7340 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7341
7342         * mini.c: For shared methods of generic classes put the location
7343         of "this" into the MonoGenericJitInfo.
7344
7345         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7346         register out of a MonoContext by register number.  Add the generic
7347         sharing context as an argument to mono_arch_find_this_argument().
7348
7349         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7350         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7351         for new arch function.
7352
7353         * mini-exception.c: Handle open exception clauses in shared
7354         generic code.
7355
7356         * mini-trampolines.c: Supply additional argument to
7357         mono_arch_find_this_argument().
7358
7359 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7360
7361         * Makefile.am (regtests): Run the bench.exe tests last.
7362
7363 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7364
7365         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7366         a bit.
7367
7368 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7371         with MS.
7372
7373         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7374         
7375         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7376
7377         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7378         whose class has no cctor.
7379
7380         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7381
7382 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7385         unverified.
7386
7387 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7388
7389         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7390         to be in sync with the code on the linear IR branch.
7391
7392         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7393
7394         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7395
7396 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7399
7400         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7401
7402         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7403
7404         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7405
7406         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7407         
7408         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7409         body.
7410
7411 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7412
7413         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7414         OP_LOADR4_MEMBASE emission.
7415
7416         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7417         (mono_spillvar_offset_float): Ditto.
7418
7419         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7420
7421         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7422         emission.
7423
7424         * basic-long.cs: Add regression tests for them.
7425
7426         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7427         use.
7428         (mono_arch_allocate_vars): Fix representation of single-precision float
7429         argument.
7430         (mono_arch_output_basic_block): Ditto.
7431
7432         * inssel-mips.brg: Ditto, remove duplicate items.
7433
7434         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7435         arguments of tail calls as on other platforms.
7436         (mono_arch_output_basic_block): Handle tail calls.
7437
7438         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7439         register.
7440
7441         * objects.cs (test_5_pass_static_struct): Add test for it.
7442
7443         Contributed under MIT/X11 license.
7444
7445 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7446
7447         * Makefile.am: Use gmcs for compiling the regression tests.
7448
7449         * *.2.cs *.2.il: Rename to *.cs and *.il.
7450
7451 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7452
7453         * regalloc.h: Make the vassign array smaller.
7454
7455         * mini.c (mini_method_compile): Remove an unused field in cfg.
7456
7457         * mini-codegen.c: Add a bunch of micro optimizations.
7458
7459 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * regalloc.h: Remove some unused fields.
7462
7463 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7466
7467         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7468
7469 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7470
7471         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7472
7473         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7474         trampoline: Fetch an entry from the runtime generic context.  If
7475         it's NULL, jump to the actual trampoline to fill the runtime
7476         generic context.  Otherwise, return it.
7477
7478         * mini.c: Call the lazy fetch trampoline to get entries out of the
7479         runtime generic context.
7480
7481         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7482         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7483         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7484
7485 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7486
7487         * mini.c: Fetch data out of the extensible part of the runtime
7488         generic context instead of calling a helper function.
7489
7490         * generic-sharing.c: Some functions moved into
7491         metadata/generic-sharing.c.  Helper function for fetching other
7492         types now checks and asserts against extensible rgctx (just for
7493         debugging purposes - the helper function isn't called anymore
7494         unless for debugging).
7495
7496 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7499         for tail calls up to the point that the tests in iltests.exe run. Also add a
7500         dummy CKFINITE implementation.
7501         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7502         needed for trampoline LMF frames.
7503
7504         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7505         trampoline LMF frames.
7506
7507 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7508
7509         * mini.c (inline_method): clean any pending loader error when inlining fail.
7510         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7511
7512 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7513
7514         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7515
7516         * aot-runtime.c (decode_patch_info): Ditto.
7517
7518         * mini.c (mono_resolve_patch_target): Ditto.
7519         
7520         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7521         icall wrappers.
7522
7523         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7524         
7525         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7526         if it references an icall address.
7527
7528 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7529
7530         * cpu-s390x.md: Remove some more unused opcodes.
7531         
7532         * cpu-s390x.md: Remove some unused opcodes.
7533
7534         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7535         mono_op_imm_to_op ().
7536
7537         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7538         instead of a switch statement.
7539         
7540         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7541         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7542
7543         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7544         
7545         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7546
7547         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7548         -1.
7549
7550 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7553         opened. Fixes #362607.
7554
7555         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7556
7557         * iltests.il.in: Add a test for static methods in interfaces.
7558
7559 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * genmdesc.c (build_table): Fix a crash on older glib versions.
7562
7563         * cpu-sparc.md: Remove some unused opcodes.
7564         
7565         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7566         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7567
7568         * cpu-amd64.md: Remove some unused opcodes.
7569
7570         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7571         like the other opcodes.
7572
7573 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7576
7577         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7578
7579         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7580         variables 'cfg' instead of 'm' for consistency.
7581
7582         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7583
7584         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7585         argument holding the vtype return address, to avoid the ambigious use of
7586         cfg->ret for this purpose.
7587
7588         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7589
7590         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7591         
7592         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7593         new mono_print_ins () function which only takes one argument.
7594
7595 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7598         macro arguments.
7599
7600 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7601
7602         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7603
7604         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7605
7606         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7607         opcodes and other small changes.
7608
7609         * mini-ops.h: Add some new opcodes from the linear IR branch.
7610
7611         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7612
7613         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7614         opcodes, use the REG_MEMBASE opcodes instead.
7615         
7616         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7617         opcodes, use the REG_MEMBASE opcodes instead.
7618         
7619         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7620         linear IR branch.
7621
7622         * mini.c (mono_op_imm_to_op): New helper function.
7623
7624         * mini-ops.h: Add some opcodes from linear IR branch.
7625
7626 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7627
7628         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7629         <tsv@solvo.ru>.
7630
7631 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7634         OP_ICONV_TO_R4/R8.
7635
7636         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7637
7638 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7639
7640         * aot-compiler.c (emit_method_code): Add an assert.
7641
7642         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7643         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7644         methods.
7645
7646 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7649         some load/store opcodes so they are consistent. 
7650         (mono_arch_emit_prolog): Simplify some code.
7651
7652         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7653
7654         * objects.cs: Add tests for large argument offsets on ARM.
7655
7656         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7657         stack offsets. Fixes #359651.
7658
7659         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7660
7661         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7662
7663         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7664
7665         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7666
7667         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7668
7669         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7670         rid of CEE_CONV_R_UN.
7671
7672         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7673
7674 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7675
7676         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7677
7678         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7679
7680         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7681
7682         * cpu-amd64.md: Remove some unused opcodes.
7683
7684         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7685
7686         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7687
7688         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7689         arch specific functions for its parts. Call the peephole pass after local
7690         regalloc so the prolog can compute a more accurate max_offset.
7691         
7692         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7693         the corresponding OP_I/OP_L opcodes.
7694
7695         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7696
7697         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7698
7699 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7702         as they are handled in mini.c.
7703
7704         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7705         
7706         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7707         case since it is handled in mini.c.
7708
7709         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7710
7711         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7712
7713         * *.c: Use the new opcodes in the IR and back end code.
7714
7715         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7716
7717         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7718
7719 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7720
7721         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7722         an assert because it has a race condition.
7723
7724 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7725
7726         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7727
7728         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7729
7730         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7731
7732         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7733         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7734
7735 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7736
7737         * cpu-amd64.md (move): Correct the maximum size of move.
7738
7739 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7740
7741         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7742         the generic class init trampoline to return quickly if the class
7743         is already inited.
7744
7745 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7748         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7749
7750 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7751
7752         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7753         branch.
7754
7755 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * objects.cs: Add some soft-float tests.
7758
7759         * mini.c: Fix a couple more soft-float issues.
7760
7761         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7762
7763         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7764         avoid a REX prefix.
7765
7766 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7767
7768         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7769         exception happens while compiling a virtual method.
7770
7771 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7772
7773         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7774         
7775         * mini-sparc.c: Fix build.
7776
7777         * mini-sparc.c (get_call_info): Add support for generic sharing.
7778
7779         * mini-exceptions.c: Add a FIXME.
7780
7781 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7782
7783         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7784         altstack handling code.
7785
7786         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7787         
7788         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7789
7790         * mini-s390.c: Add support for generic sharing.
7791
7792         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7793         Fix CAS on s390.
7794         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7795
7796         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7797
7798         * mini-s390x.c: Add support for generic sharing.
7799         
7800         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7801         Fix CAS on ia64.
7802         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7803
7804         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7805         can be used since it takes a 16 bit signed immediate.
7806
7807         * inssel-s390x.brg: Fix OP_SETRET.
7808
7809         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7810
7811         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7812
7813         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7814
7815         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7816
7817         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7818         in one place.
7819
7820         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7821         stuff.
7822
7823         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7824         of the unused mono_arch_patch_delegate_trampoline stuff.
7825
7826 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * basic-long.cs: Move the fp related tests to basic-float.cs.
7829
7830         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7831
7832         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7833
7834         * basic-calls.cs: Add a test for proper float argument passing.
7835
7836         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7837         if the context corresponds to an exception received through a signal.
7838
7839         * exceptions.cs: Add a test for nullref handling at the start of a try
7840         clause.
7841
7842         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7843
7844         * jit-icalls.c (mono_break): New JIT icall.
7845
7846         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7847
7848         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7849
7850 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7851
7852         * cpu-*.md: Get rid of unused opcodes.
7853
7854         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7855
7856         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7857         by all platforms.
7858
7859         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7860         define.
7861
7862         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7863         the arch independent trampoline code in mini-trampolines.c.
7864
7865         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7866
7867         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7868
7869         * mini-s390.h: Remove an unused define.
7870         
7871         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7872         the arch independent trampoline code in mini-trampolines.c.
7873
7874         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7875
7876 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7877
7878         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7879
7880         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7881
7882         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7883
7884         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7885
7886         * cpu-amd64.md: Use smaller sizes for int opcodes.
7887
7888         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7889
7890         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7891         objects.cs.
7892
7893         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7894         debugging.
7895
7896         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7897         instead of though a pointer to save an indirection when accessing elements of
7898         the array.
7899
7900         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7901         some typos.
7902         (NOT_IMPLEMENTED): New helper macro.
7903         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7904         of a bb.
7905
7906         * *.c: Use the new helper macro.
7907
7908 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7911
7912 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7915         stack slots.
7916
7917 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
7920         profiling is enabled.
7921         
7922         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7923         the end.
7924         (mono_arch_emit_prolog): Add more first bblock optimizations.
7925
7926         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7927         in order if possible.
7928         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7929         bblock, since the arguments are still in their original registers.
7930
7931         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7932
7933 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7936         as well.
7937
7938         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7939         offset 0.
7940
7941         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7942
7943         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7944         process async exceptions received while in unmanaged code.
7945
7946         * mini.c (mini_init): Install a callback with the runtime which will be called
7947         when a thread receives an async exception while in unmanaged code.
7948
7949         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7950
7951         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
7952
7953 2008-01-16  Wade Berrier  <wberrier@novell.com>
7954
7955         * cpu-g4.md:
7956         * cpu-arm.md:
7957         * cpu-s390x.md:
7958         fix build
7959
7960 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
7963         compilation with sun cc.
7964
7965         * cpu-*.md: Fix the build.
7966
7967         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
7968
7969         * mini-amd64.h: Add some comments to the MonoLMF structure.
7970
7971         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
7972         
7973         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
7974         in the LMF structure if possible. This saves two instructions in the
7975         managed->native wrappers.
7976
7977         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
7978
7979 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7980
7981         * generic-sharing.c: New type argument lookup code which uses the
7982         runtime generic context template.
7983
7984 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
7987
7988         * mini-arm.c (add_general): Fix arm eabi parameter passing.
7989         (mono_arch_output_basic_block): Fix localloc implementation.
7990
7991         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
7992
7993         * mini-ia64.c (peephole_pass): Fix ia64 build.
7994
7995         * mini-amd64.c (peephole_pass): Fix a warning.
7996         
7997         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
7998         at a constant offset from sp/fp.
7999
8000         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8001         instead of obtaining it from *lmf in the managed method case.
8002
8003 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8004
8005         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8006
8007 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8008
8009         * mini.h (MonoInstList): New type.
8010         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8011         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8012         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8013         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8014         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8015         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8016         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8017         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8018         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8019         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8020         MONO_INST_LIST_FOR_EACH_ENTRY,
8021         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8022         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8023         mono_inst_list_first, mono_inst_list_last,
8024         mono_inst_list_next, mono_inst_list_prev): New instruction
8025         list handling interfaces.
8026         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8027         list head 'ins_list'.
8028         (MonoInst): Replace next pointer with list head 'node'.
8029         (MonoCallInst): Make 'out_args' a MonoInstList.
8030         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8031         (MonoCompile): Delete reverse_inst_list and
8032         reverse_inst_list_len.
8033         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8034         mono_arch_lowering_pass, mono_arch_local_regalloc,
8035         mono_arch_output_basic_block, mono_arch_emit_prolog):
8036         Convert to new instruction lists.
8037         (insert_after_ins): Delete.
8038         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8039         instruction lists.
8040         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8041         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8042         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8043         mono_emulate_opcode, mono_emit_load_got_addr,
8044         inline_method, mono_method_to_ir, mono_print_bb_code,
8045         print_dfn, decompose_pass, nullify_basic_block,
8046         replace_out_block_in_code, remove_block_if_useless,
8047         merge_basic_blocks, move_basic_block_to_end,
8048         try_unsigned_compare, optimize_branches, mono_print_code,
8049         mini_select_instructions, remove_critical_edges): Likewise.
8050         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8051         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8052         mono_arch_output_basic_block, mono_arch_emit_prolog):
8053         Likewise.
8054         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8055         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8056         mono_arch_output_basic_block): Likewise.
8057         (inst_list_prepend, insert_after_ins): Delete.
8058         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8059         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8060         instruction lists.
8061         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8062         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8063         mono_arch_emit_prolog): Likewise.
8064         * cfold.c (mono_constant_fold): Likewise.
8065         * liveness.c (visit_bb, mono_analyze_liveness,
8066         optimize_initlocals): Likewise.
8067         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8068         * graph.c (mono_draw_code_cfg): Likewise.
8069         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8070         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8071         mono_ssa_cprop): Likewise.
8072         * abcremoval (get_relations_from_previous_bb, process_block):
8073         Likewise.
8074         * local-propagation (mono_cprop_invalidate_values,
8075         mono_local_cprop_bb): Likewise.
8076         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8077         peephole_pass, mono_arch_output_basic_block,
8078         mono_arch_emit_prolog): Likewise.
8079         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8080         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8081         mono_arch_emit_prolog): Likewise.
8082         (insert_after_ins): Delete.
8083         * aliasing.c (print_code_with_aliasing_information,
8084         mono_build_aliasing_information, mono_aliasing_deadce):
8085         Convert to new instruction lists.
8086         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8087         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8088         mono_arch_local_regalloc, mono_arch_output_basic_block):
8089         Likewise.
8090         (insert_after_ins): Delete.
8091         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8092         peephole_pass, mono_arch_output_basic_block): Convert to
8093         new instruction lists.
8094         * mini-codegen (InstList, inst_list_prepend,
8095         insert_after_ins): Delete.
8096         (insert_before_ins, get_register_force_spilling,
8097         get_register_spilling, free_up_ireg, free_up_reg,
8098         create_copy_ins, create_spilled_store, alloc_int_reg,
8099         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8100         to new instruction lists.
8101         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8102         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8103         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8104         (insert_after_ins): Delete.
8105         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8106         mono_arch_local_regalloc, mono_arch_output_basic_block,
8107         mono_arch_call_opcode): Convert to new instruction lists.
8108         (insert_after_ins): Delete.
8109         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8110         peephole_pass, mono_arch_output_basic_block,
8111         mono_arch_emit_prolog): Convert to new instruction lists.
8112
8113 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8116
8117         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8118         Fixes #353182.
8119
8120         * Makefile.am (version.h): Make this work with non-bash shells.
8121
8122 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8123
8124         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8125
8126 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8129         the InitializeArray optimization.
8130
8131 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * mini.c driver.c: Don't include os/gc_wrapper.h.
8134
8135 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8136
8137         * mini.c (print_jit_stats): Print GC statistics if available.
8138
8139 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8140
8141         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8142
8143 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8146
8147 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8148
8149         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8150         
8151         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8152
8153         * driver.c (mono_main): Ditto.
8154
8155 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8156
8157         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8158
8159         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8160         in the vtable can't be encoded.
8161         (compile_method): Ditto.
8162
8163 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8164
8165         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8166         defined.
8167
8168         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8169         lmf->rbp.
8170
8171         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8172         the top LMF entry belongs to the current method.
8173
8174         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8175
8176 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8179         
8180         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8181
8182         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8183
8184         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8185
8186         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8187
8188         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8189         implementation.
8190
8191         * basic-float.cs: Add an ulong->double cast test.
8192
8193 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * mini.c (mono_method_to_ir): Fix a warning.
8196
8197 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8198
8199         * mini-ops.h: Add OP_SWITCH.
8200
8201         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8202         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8203
8204 2007-12-11  Geoff Norton  <gnorton@novell.com>
8205
8206         * mini-s390x.c: Minor change to the MAX() define to allow
8207         it to compile with other gcc versions.
8208
8209 2007-12-11  Geoff Norton  <gnorton@novell.com>
8210
8211         * cpu-s390x.md:
8212         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8213
8214 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8215
8216         exceptions-arm.c (mono_arch_get_restore_context): Restore
8217         the frame pointer.
8218
8219         exceptions-arm.c (throw_exception): Save the frame pointer.
8220         This is a partial fix for #323747. Only the client side is
8221         fixed.
8222
8223 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8224
8225         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8226         was using an unrelated variable to log the class which
8227         needed the cctor to be called. This was crashing on arm.
8228
8229 2007-12-09  Robert Jordan  <robertj@gmx.net>
8230
8231         * mini-x86.c (mono_arch_emit_epilog):
8232         Consider all kinds of 64-bit types. Fixes #323114.
8233
8234 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8235
8236         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8237
8238 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8241
8242 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8243
8244         * mini.c: run type ctor before allocating an object, not only
8245         when running it's constructor method (fixes at least part of bug #342507).
8246
8247 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8248         
8249         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8250         
8251         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8252         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8253         function.
8254
8255         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8256         mono_generic_class_init_trampoline () the same as it is done with the other
8257         trampolines.
8258
8259         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8260         aot-runtime.c aot-compiler.c: Implement AOT support.    
8261
8262 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8263
8264         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8265         build for archs which don't have the vtable trampoline defined
8266         yet.
8267
8268 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8271
8272         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8273
8274         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8275
8276         * tramp-<ARCH>.c: Use the new helper function.
8277
8278 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8279
8280         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8281         trampoline call, which takes a vtable argument.
8282
8283         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8284         OP_TRAMPCALL_VTABLEs like other calls.
8285
8286         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8287         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8288         call.  Implemented a support function which fetches the vtable
8289         from a register set.
8290
8291         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8292         Implemented a generic class init trampoline, using the
8293         OP_TRAMPCALL_VTABLE opcode.
8294
8295         * mini.c: Implemented static field access when sharing generic
8296         code.  This implies initing the class using the new
8297         OP_TRAMPCALL_VTABLE call.
8298
8299 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8300
8301         * mini.c: Don't compile methods with sharing enabled if their
8302         classes are disabled for sharing.
8303
8304 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8305
8306         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8307         opcodes. Fixes #346563.
8308
8309         * objects.cs: Add a new test.
8310
8311         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8312
8313         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8314         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8315
8316 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8317
8318         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8319
8320 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8323         code stream.
8324
8325 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8328
8329         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8330         optimization in the AOT case.
8331         
8332 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8335         
8336         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8337
8338         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8339
8340         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8341
8342         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8343         is created by the inlined delegate ctor.
8344
8345         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8346
8347         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8348
8349 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * cpu-x86.md: Fix the length of ckfinite.
8352
8353 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8354
8355         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8356         
8357         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8358         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8359
8360         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8361
8362         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8363         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8364
8365 2007-11-28  Martin Baulig  <martin@ximian.com>
8366
8367         * mini-x86.c
8368         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8369         after creating the trampoline.
8370
8371 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8372
8373         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8374
8375         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8376         the same version.
8377
8378         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8379         instead of the calling method to help AOT.
8380
8381         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8382
8383 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8386         is defined.
8387
8388 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8389
8390         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8391         
8392         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8393         (encode_method_ref): No need to handle generic method definitions specially.
8394
8395         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8396
8397         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8398         decode_klass_info.
8399
8400         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8401         encode_klass_info.
8402         (compile_method): Enable generic sharing.
8403
8404 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8405
8406         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8407         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8408
8409         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8410         generic code.
8411
8412         * mini-trampolines.c: Fix a warning.
8413
8414         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8415         NEW_PCONST.
8416         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8417         (generic_class_is_reference_type): Remove unused function.
8418
8419         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8420         in the generic vtable trampoline case.
8421
8422         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8423         
8424         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8425         return an AOT method based on a vtable slot.
8426
8427         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8428
8429         * mini.c (mini_get_vtable_trampoline): Export this.
8430
8431 2007-11-22  Martin Baulig  <martin@ximian.com>
8432
8433         * debug-debugger.h
8434         (MonoDebuggerInfo): Move `debugger_version' up.
8435
8436 2007-11-22  Martin Baulig  <martin@ximian.com>
8437
8438         * mini-amd64.c
8439         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8440
8441         * mini-trampolines.c
8442         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8443         after compiling the method.
8444
8445 2007-11-20  Martin Baulig  <martin@ximian.com>
8446
8447         * debug-mini.c
8448         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8449         (mono_debugger_remove_breakpoint): Likewise.
8450         (mono_debugger_check_breakpoints): Likewise.
8451
8452         * debug-debugger.c: Implement the new breakpoint interface here.
8453
8454 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8457         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8458
8459         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8460
8461 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8462
8463         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8464
8465         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8466         mini.c.
8467
8468         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8469         mini.c.
8470
8471         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8472         returning a vtype in a register.
8473
8474         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8475         here from the arch specific code.
8476
8477         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8478         mini.c.
8479
8480         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8481         (mono_arch_emit_prolog): Increment maximum prolog size.
8482
8483         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8484         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8485
8486         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8487         MonoGenericSharingContext.
8488
8489         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8490         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8491
8492 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8493
8494         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8495         which extract fields out of the runtime generic context.  Full
8496         sharing of the NEWARR opcode.
8497
8498 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8499
8500         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8501         --enable-minimal=ssa.
8502
8503 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8504
8505         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8506         mono_marshal_get_delegate_invoke () signature change.
8507
8508 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8509
8510         * mini.c: Removed the shared context in favor of the generic
8511         sharing context.  Allocate the MonoJitInfo structure with room for
8512         the generic sharing context if it's needed.
8513
8514         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8515         domain-internals.h now.
8516
8517         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8518
8519         * generic-sharing.c: Several changes for working without a shared
8520         context and instead operating on open types instead.
8521
8522 2007-11-12  David S. Miller  <davem@davemloft.net>
8523
8524        * inssel-sparc.brg: Fix double instruction emit.
8525
8526 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8529         Get/Set/Address methods.
8530         
8531         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8532         mono_marshal_get_delegate_invoke signature change.
8533
8534 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8537         This can happens with dynamic methods. Fixes the other bug in #322722.
8538
8539 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8542         BX call sequence.
8543
8544         * mini-arm.c (arm_patch): Implement patching of BX call
8545         sequence. Fixes one of the bugs in #322722.
8546
8547 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8548
8549        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8550        under Linux.  We only need to flush every 32-byte cache line.    
8551
8552 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8553
8554         * mini.c:
8555         move_basic_block_to_end: Add branches when needed, eventually creating
8556         a new BB.
8557         optimize_branches: added a parameter that tells if it's ok to create
8558         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8559         and avoid calling move_basic_block_to_end when it's not ok.
8560         Fixes bug 318677.
8561
8562 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8563
8564         * mini.c: Abort inlining call to InitializeArray if something
8565         looks wrong.  Let the icall handle it, which now has proper safety
8566         checks.
8567
8568 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8569
8570         * mini.c (mono_spill_call): add support for soft-float.
8571
8572         * mini.c (mono_method_to_ir): add support for soft-float
8573         to inlined functions that return float.
8574
8575         * mini.c (mono_method_to_ir): add support for soft-float
8576         to cee_stsfld opcode on float fields.
8577
8578 2007-11-05  Geoff Norton  <gnorton@novell.com>
8579
8580         * mini-x86.h: Fix the structure access for X86 Leopard.
8581
8582
8583 2007-11-05  Martin Baulig  <martin@ximian.com>
8584
8585         * mini-trampolines.c
8586         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8587         after compiling the method to notify the debugger.
8588
8589 2007-11-05  Martin Baulig  <martin@ximian.com>
8590
8591         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8592
8593 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8594
8595         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8596         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8597
8598 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8601         native-to-managed wrappers.
8602         
8603 2007-11-01  Geoff Norton  <gnorton@novell.com>
8604
8605         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8606         members.
8607
8608 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8609
8610         * mini.c, mini-x86.c: when getting back from unmanaged code
8611         to managed via a marshaled delegate we also need to set the
8612         right domain.
8613
8614 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8615
8616         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8617         for amd64.
8618
8619 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8620
8621         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8622         let the debugger or other external agents to tell the JIT when
8623         a sw breakpoint has been inserted in the code that the JIT needs
8624         to be able to inspect.
8625
8626 2007-10-31  Martin Baulig  <martin@ximian.com>
8627
8628         * debug-debugger.h
8629         (MonoDebuggerInfo): Remove `runtime_class_init'.
8630
8631 2007-10-30  Martin Baulig  <martin@ximian.com>
8632
8633         * debug-mini.h
8634         (mono_debugger_thread_created): Added `MonoThread *' argument.
8635         (mono_debugger_extended_notification): New public method.
8636         (mono_debugger_trampoline_compiled): New public method.
8637
8638         * debug-mini.c
8639         (MonoDebuggerThreadInfo): Added `thread' and
8640         `extended_notifications' fields.
8641
8642         * debug-debugger.c
8643         (debugger_executable_code_buffer): New static variable.
8644
8645         * debug-debugger.h
8646         (MonoDebuggerInfo): Added `executable_code_buffer',
8647         `executable_code_buffer_size', `breakpoint_info_area',
8648         `breakpoint_table' and `breakpoint_table_size'.
8649
8650 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8651
8652         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8653         that IP  either is an unused value or the vtable pointer. IMT 
8654         calls use vtable + offset now. Reduced by almost half the size
8655         of IMT entries.
8656
8657 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8658
8659         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8660         defines to access param registers. Replace long usage with
8661         gsize as sizeof(long) != sizeof(void*) on Win64.
8662
8663         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8664         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8665         instead of non-existant _GetAddressOfReturnAddress.
8666
8667         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8668         param registers. Save/restore %rdi and %rsi in MonoLMF.
8669
8670         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8671         param registers. Modify (throw_exception) signature to take 
8672         %rdi and %rsi on Win64. 
8673
8674         Code is contributed under MIT/X11 license.
8675
8676 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8677
8678         * helpers.c: unlink debugging output files.
8679
8680 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8681
8682         * mini.c: Move mono_create_ftnptr () to object.c.
8683
8684 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8685
8686         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8687         optional. This function can now be used to disassemble code generated
8688         outside the JIT such as trampolines and IMT thunks.
8689
8690         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8691
8692         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8693         vtable pointer from a ldr instruction.
8694
8695         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8696         new IMT call sequence.
8697
8698         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8699         call sequence for interface invocations.
8700
8701         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8702         for imt support. This function is empty since IMT on ARM requires no
8703         special handling on the IR side.
8704
8705         * mini-arm.c (mono_arch_find_imt_method): added, required for
8706         imt support.
8707
8708         * mini-arm.c (mono_arch_find_this_argument): added, required
8709         for imt support.
8710
8711         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8712         a ldr instruction to load a value stored in the code stream.
8713
8714         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8715         for imt support.
8716
8717
8718 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * mini.c (mini_init): Install the jump trampoline callback.
8721
8722 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8723
8724         * mini-trampolines.c: handle synchronized methods with the common
8725         vtable trampoline (bug #335601).
8726
8727 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8730
8731         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8732         64 bit platforms.
8733
8734         * mini-ia64.h mini-ia64.c: Add support for IMT.
8735
8736         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8737         prolog. Fixes #331958.
8738
8739 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8742
8743 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8744
8745         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8746         trampoline.
8747
8748 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8749
8750         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8751         trampoline.
8752
8753 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8754
8755         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8756         trampoline.
8757
8758 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8759
8760         * mini-trampolines.c: changed the magic rampoline to understand
8761         the common vtable trampoline method: the method to invoke is
8762         determined by the vtable displacement of the call.
8763
8764 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8765
8766         * mini.c, mini.h: register the common vtable trampoline if the
8767         architecture supports it.
8768
8769 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8770
8771         * cpu-amd64.md: use the correct max length for tls_get.
8772
8773 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8774
8775         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8776         CEE_STELEM_ANY. Fixes #333696.
8777
8778 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8779
8780         * exceptions-x86.c: provide more graceful handling of the case where
8781         we followed a bogus function pointer from managed code (bug #332866).
8782
8783 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8784
8785         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8786         replaces the generic_shared flag and will carry more information
8787         in the future.
8788
8789         * generic-sharing.c: Added mini_type_stack_size() which allows
8790         allows open types if given a generic sharing context.
8791         mini_get_basic_type_from_generic() takes a
8792         MonoGenericSharingContext* instead of a MonoCompile* now.
8793
8794         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8795         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8796         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8797         changes above.  Just passing arguments through to the right
8798         places.
8799
8800 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8801
8802         * mini-arm.c: unify the call emission to emit_code_seq().
8803
8804 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8805
8806         * tramp-arm.c: reduced the trampoline size.
8807
8808 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8809
8810         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8811         variable handling out of arch-specific code.
8812
8813 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8814
8815         * mini-arm.c: implemented fast delegate dispatch.
8816
8817 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8820         that fp elimination is turned off if the space required by locals is too
8821         big. Fixes #331958.
8822
8823 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8824
8825         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8826         ARM to the new style trampoline.
8827
8828 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8831
8832         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8833
8834 2007-10-09  Martin Baulig  <martin@ximian.com>
8835
8836         * debug-debugger.h
8837         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8838         `field_info_offset_offset'.     
8839
8840 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8841
8842         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8843         removed more internal usage of the r11 register and made it available
8844         to the register allocator.
8845
8846 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8847
8848         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8849         when sharing generics and treat type variables as references.
8850
8851 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8852
8853         * mini-ppc.c: started removing the internal uses of register r11
8854         to eventually allow the register allocator to manage it as an
8855         additional available register.
8856
8857 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8858
8859         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8860
8861 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8862
8863         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8864         specific trampolines as they are not performance critical as a jump
8865         target (maybe align as before only for AOT code?). This saves about
8866         200 KB of native code on x86 for monodevelop startup.
8867
8868 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8869
8870         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8871         monodevelop startup.
8872
8873 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8876
8877         * mini-sparc.h mini-sparc.c: Implement IMT support.
8878
8879         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8880         its smaller and doesn't clobber sparc_g1.
8881
8882         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8883
8884 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8885
8886         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8887
8888 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8889
8890         * mini-ppc.c: implemented fast delegate invocation.
8891
8892 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8893
8894         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8895
8896 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8897
8898         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8899         code to the new style trampoline in preparation for IMT support.
8900
8901 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8902
8903         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8904         systems already. This also reduces the specific trampiline sizes and
8905         prepares for the use of r12 as the IMT identifier register.
8906
8907 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8908
8909         * mini-mips.h: endianess fix (simplified from a patch by
8910         Thomas Kunze <thommy@tabao.de>, bug #323737).
8911
8912 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8913
8914         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8915         to access ucontext fields and enable netbsd support
8916         (partially from Magnus Henoch <mange@freemail.hu>).
8917
8918 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8919
8920         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
8921         use the preprocessor from the CPP env var if it is set.
8922
8923 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8924
8925         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8926         code, before interface_offset gets used.
8927
8928 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8931         mono_class_setup_vtable () before accessing klass->vtable.
8932
8933 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8934
8935         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8936         hackish.
8937
8938 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8939
8940         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8941         IMT slots (this saves hundreds of KB of memory in programs like
8942         IronPython and Monodevelop).
8943
8944 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8945
8946         * mini.c: print the delegate counter.
8947
8948 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8949
8950         * mini-x86.c: make it easier to enable the debugging code for IMT
8951         slots.
8952
8953 2007-09-28  Martin Baulig  <martin@ximian.com>
8954
8955         * debug-debugger.h
8956         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
8957         `mono_method_klass_offset' and `mono_method_token_offset'.
8958
8959 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8960
8961         * mini.c: First generics sharing implementation.  Can only share
8962         in very simple cases.  If sharing doesn't work it falls back to
8963         dedicated compilation.
8964
8965         * mini.h: Flag in MonoCompile to specify whether generic
8966         compilation is shared.  Flags enum for marking which generic inst
8967         of a context is used.  Prototypes for helper functions.
8968
8969         * generic-sharing.c: Helper functions for generic method sharing.
8970
8971         * optflags-def.h: Optimization flag (gshared) for enabling generic
8972         method sharing added.
8973
8974         * Makefile.am: generic-sharing.c added.
8975
8976 2007-09-19 Daniel Nauck <dna@mono-project.de>
8977
8978         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
8979
8980 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
8981         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
8982         fixes bug 325507.
8983
8984 2007-09-19  Martin Baulig  <martin@ximian.com>
8985
8986         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
8987         mono_debug_cleanup() is now part of mono_cleanup().
8988
8989 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * driver.c (mono_main): Fix a warning.
8992
8993 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8994
8995         * aot-compiler.c: Optimize various parts when processing large assemblies.
8996         Fixes ##325568.
8997
8998         * mini.c (mono_patch_info_hash): Improve hash function.
8999
9000 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9001
9002         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9003         
9004         Code is contributed under MIT/X11 license.
9005
9006 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * mini.c (mini_init): Fix a leak.
9009
9010         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9011
9012 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9013
9014         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9015
9016 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9017
9018         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9019
9020 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9021
9022         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9023         variance tests.
9024
9025         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9026
9027         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9028
9029         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9030
9031         * aot-runtime.c (decode_patch_info): Ditto.
9032
9033 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9034
9035         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9036         static case. Cache delegates in architecture specific code, 
9037         based on number of parameters.
9038         
9039         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9040         in architecture specific code, based on number of parameters.
9041         
9042         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9043         caching happen in architecture specific code now.
9044         
9045         Code is contributed under MIT/X11 license.
9046
9047 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9048
9049         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9050         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9051         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9052
9053         Code is contributed under MIT/X11 license.
9054
9055 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9056         * mini.c: (mono_thread_abort) Fixed bug #82416.
9057
9058 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9059
9060         * mini.: hook the new managed GC allocation feature into the JIT.
9061
9062 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9063
9064         * mini.c: implementation for the new runtime tls opcode.
9065
9066 2007-09-11  Martin Baulig  <martin@ximian.com>
9067
9068         * debug-debugger.h
9069         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9070         `mono_method_inflated_offset'.
9071
9072 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9073
9074         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9075         async exceptions into a method.
9076
9077         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9078         purpose of testing whenever the unwinder works at every instruction.
9079
9080 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9081
9082         * mini.c: check accessibility of method used in ldftn (fixes
9083         bug #82635).
9084
9085 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9086
9087         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9088
9089         * inssel.brg: Fix a warning.
9090
9091 2007-09-03  Martin Baulig  <martin@ximian.com>
9092
9093         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9094         now takes the `main_method' as argument.
9095
9096 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9099
9100 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9101
9102         * driver.c: include the cil-coff.h header on Windows.
9103         
9104         Code is contributed under MIT/X11 license.
9105
9106 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9107
9108         * mini.c, driver.c: don't include the cil-coff.h header.
9109
9110 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9111
9112         * mini.c: flag places that needs fixes fo soft-float support.
9113
9114 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9115
9116         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9117         endian systems (partially from Dean Jenkins, bug #81924).
9118
9119 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9120
9121         * mini.c (check_linkdemand): Remove embedded reference object in
9122         call to LinkDemandSecurityException.
9123         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9124         with an IntPtr instead of a reference object.
9125
9126 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9127
9128         * mini.c (handle_initobj): Handle alignment properly.
9129
9130         * inssel.brg (mini_emit_memset): Ditto. 
9131
9132         * inssel.brg (mini_emit_memcpy): Ditto. 
9133
9134         * inssel-sparc.brg: Ditto.              
9135
9136         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9137
9138 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9141         exceptions raised in unmanaged code. Fixes part of #82594.
9142
9143 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9144
9145         * mini.c (mono_method_to_ir), declsec.c
9146         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9147
9148 2007-08-22  Martin Baulig  <martin@ximian.com>
9149
9150         * debug-mini.h
9151         (MonoDebuggerThreadInfo): New typedef.
9152         (mono_debugger_thread_table): New global variable.
9153         (mono_debugger_thread_created): New public function.
9154         (mono_debugger_thread_cleanup): New public function.
9155
9156         * debug-debugger.h
9157         (MonoDebuggerInfo):
9158         - removed `get_current_thread' and `lookup_assembly'.
9159         - removed `data_table'.
9160         - added `thread_table'.
9161
9162         * mini.c
9163         (mono_thread_start_cb): Call mono_debugger_thread_created().
9164         (mono_thread_attach_cb): Likewise.
9165         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9166         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9167         initial domain.
9168
9169         * driver.c (mono_main): Move mono_debug_init() up, before calling
9170         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9171
9172 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9173
9174         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9175         together when passing several arguments of type double (gives a small
9176         speedup and saves a few bytes of generated code).
9177
9178 2007-08-20  Jb Evain  <jbevain@novell.com>
9179
9180         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9181
9182 2007-08-20  Jb Evain  <jbevain@novell.com>
9183
9184         * mini.c (mono_method_to_ir): throw MethodAccessException
9185         and FieldAccessException instead of InvalidProgramException.
9186
9187 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9188
9189         * mini.c: CoreCLR security checks.
9190
9191         * mini.h: Removed MonoSecurityMode (moved to
9192         metadata/security-manager.h) and mono_security_mode global var
9193         (replaced by set/get functions in security-manager.h).
9194
9195         * driver.c: Added "core-clr-test" security mode for testing.  Used
9196         set-function for setting security mode.
9197
9198 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9199
9200         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9201         the new jit_info_table.
9202
9203         * driver.c: Test code for the new jit_info_table (enabled by the
9204         define MONO_JIT_INFO_TABLE_TEST).
9205
9206 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9207
9208         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9209         detection of call <REG> instruction sequence. Fixes build on freebsd.
9210
9211 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * mini-exceptions.c: Fix a warning.
9214
9215 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9216
9217         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9218         stack overflow handling code on amd64 too.
9219
9220         * mini-exceptions.c (mono_setup_altstack): Make this use 
9221         mono_thread_get_stack_bounds ().
9222
9223         * mini-x86.h: Disable sigaltstack on solaris x86.
9224
9225 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9228
9229 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9230
9231         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9232
9233 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9234
9235         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9236
9237         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9238
9239 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9240
9241         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9242         due to alignment.
9243
9244 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9245
9246         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9247         to be emitted (bug #82281).
9248
9249 2007-08-01  Martin Baulig  <martin@ximian.com>
9250
9251         Merged the `debugger-dublin' branch.
9252
9253         * debug-debugger.h (MonoDebuggerInfo):
9254         Removed the `old_*' compatibility entries.
9255         Added `debugger_version' and `data_table'.
9256         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9257         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9258
9259         * debug-mini.c
9260         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9261         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9262         instead of a `gconstpointer'.
9263         (mono_debugger_insert_method_breakpoint): Return a
9264         `MonoDebugMethodAddressList *'.
9265
9266 2007-06-28  Martin Baulig  <martin@ximian.com>
9267
9268         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9269
9270 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9273         __builtin_frame_address () since it is broken on older gcc versions.
9274
9275 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9276
9277         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9278         on the stack overflow handling and made the managed stack overflows
9279         catchable in most cases using soft guard pages.
9280         * exceptions-x86.c: added code to restore the protection in the soft
9281         guard pages at the end of exception handling.
9282
9283 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9284
9285         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9286
9287 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9288
9289         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9290         exception handling.
9291
9292 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9293
9294         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9295         signal handling support until it has been ported to the new mechanism.
9296         * mini.c: fixed stack overflow detection and use the new
9297         architecture code  to handle signals on the altstack.
9298
9299 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9300
9301         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9302         stack overflows on the alt stack.
9303
9304 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9305
9306         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9307         stack overflows on the alt stack.
9308
9309 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9310
9311         * exceptions-ppc.c: cleanup preparing for altstack support.
9312
9313 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9314
9315         * exceptions-arm.c: cleanup preparing for altstack support.
9316
9317 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9318
9319         * mini.c (print_jit_stats): Output hazard pointer stats.
9320
9321 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9322
9323         * driver.c, mini.c: Replaced security mode flags with a single
9324         enum variable.
9325
9326 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9327
9328         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9329
9330 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9331
9332         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9333         (which doesn't do anything yet) for activating Core CLR
9334         (Silverlight) security.
9335
9336 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9337
9338         * mini-codegen.c: work around a possible gcc bug on arm.
9339
9340 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9341
9342         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9343         message for platforms that don't support AOT compilation.
9344
9345 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9346
9347         * mini.h, mini.c, driver.c: temporary smcs hack.
9348
9349 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9350
9351         * mini-arm.h, mini-arm.c: arm EABI fixes.
9352
9353 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9356         case.
9357
9358         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9359         trampolines taking a method argument.
9360
9361         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9362
9363         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9364         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9365
9366         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9367         JIT compilation throws an exception. Fixes #82050.
9368
9369 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9370
9371         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9372         with the MONO_EXCEPTION_ defines.
9373
9374 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9377         #82117.
9378         
9379         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9380         the cause of an assertion.
9381
9382 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9383
9384         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9385         removed.
9386
9387 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9388
9389         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9390         assert. Should fix #82103.
9391
9392 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9395         here too. Fixes #82095.
9396
9397         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9398         addresses.
9399
9400         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9401
9402         * mini-amd64.h: Enable IMT for amd64.
9403         
9404         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9405
9406 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9409
9410 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9411
9412         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9413         as soon as check_linkdemand sets an exception_type.
9414
9415 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9416
9417         * mini-x86.c: fixed offsets for IMT call sequence.
9418         * mini-x86.h: enable IMT again.
9419
9420 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * trace.c (mono_trace_enter_method): Decode MonoType too.
9423
9424         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9425
9426         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9427
9428         * mini-amd64.c: Add preliminary IMT implementation.
9429         
9430 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9431
9432         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9433         understand the new IMT-base interface invocation (thanks to
9434         Daniel Nauck for the report and the remote debugging session).
9435
9436 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9437
9438         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9439
9440 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9443
9444 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9445
9446         * mini-trampolines.c: implement AOT IMT support.
9447         * mini-x86.h: enable IMT support for wider testing.
9448
9449 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9450
9451         * inssel.brg (emit_imt_argument): Add aot support here.
9452
9453         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9454
9455 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9456
9457         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9458         of the IMT implementation, partially from massi, with my
9459         implementation of the bsearch sequence. Disabled by default until
9460         the AOT code is implemented.
9461
9462 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9463
9464         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9465
9466         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9467
9468 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9469
9470         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9471         arch-independent IMT JIT code from Massimiliano
9472         Mantione (massi@ximian.com) with small cleanups from me.
9473
9474 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9475
9476         * Makefile.am: fix svn invocation to get the svn revision to be
9477         independent of the local language (build fix).
9478
9479 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9480
9481         * mini.c (inline_method): Reset cfg->exception_type if the
9482         inlining is aborted.  Fixes: 82049.
9483
9484 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9485
9486         * mini.c: remove assert from exception handling code when exception_ptr
9487         is not set.
9488
9489 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9490
9491         * mini.c (mono_codegen): Add an assert.
9492
9493         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9494         enter and leave code.
9495         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9496
9497 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9498
9499         * mini-ppc.c: fixed memory corruption for localloc(0)
9500         (bug #81852).
9501
9502 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9503         
9504         * mini.c: Fix warnings.
9505
9506 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9507
9508         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9509         to emit better double->int conversions.
9510
9511 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9512
9513         * mini.c: the provided Min/Max optimizations are valid for unisgned
9514         ints.
9515
9516 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9517
9518         * 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
9519
9520 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9521
9522         * mini.c (mono_running_on_valgrind): Add support for reporting the
9523         method and  its boundaries to valgrind.
9524
9525 2007-06-28  Martin Baulig  <martin@ximian.com>
9526
9527         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9528
9529 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9532
9533         * generic.2.cs: Add new test case.
9534
9535 2007-06-25  Martin Baulig  <martin@ximian.com>
9536
9537         Merged the `debugger-dublin' branch.
9538
9539         * debug-mini.c
9540         (mono_debugger_insert_method_breakpoint): New public method.
9541         (mono_debugger_remove_method_breakpoint): Likewise.
9542         (mono_debugger_check_breakpoints): New static method.
9543         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9544
9545         * debug-debugger.h (MonoDebuggerInfo):
9546         Renamed (to keep backward compatibility in the vtable):
9547         `insert_breakpoint' -> `old_insert_breakpoint'.
9548         `remove_breakpoint' -> `old_remove_breakpoint'.
9549         `create_string' -> `old_create_string'.
9550         `lookup_class' -> `old_lookup_class'.
9551         `lookup_type' -> removed; changed into a dummy field.
9552         `lookup_assembly' -> `old_lookup_assembly'.
9553         Added (same functionality, but different signature):
9554         `create_string', `lookup_class', `lookup_assembly'
9555         Added new:
9556         `get_method_addr_or_bpt', `remove_method_breakpoint',
9557         `runtime_class_init'.
9558
9559         * debug-debugger.c: Merged the `debugger-dublin' branch.
9560
9561 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9564         well.
9565         (peephole_pass): Likewise.
9566
9567 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9568
9569         * driver.c: hopefully make setaffinity work also for ancient
9570         versions of linux.
9571
9572 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9573
9574         * driver.c : win32 build fix.
9575
9576 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9577
9578         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9579         processor if it is set.
9580
9581 2007-06-21  Martin Baulig  <martin@ximian.com>
9582
9583         * debug-mini.h: New file.
9584
9585         * debug-mini.c
9586         (mono_debugger_insert_breakpoint_full): Moved here from
9587         ../metadata/mono-debug-debugger.c.
9588         (mono_debugger_remove_breakpoint): Likewise.
9589         (mono_debugger_breakpoint_callback): Likewise.
9590
9591 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9592
9593         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9594         changes in MonoGenericClass.
9595
9596 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9599
9600 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9601
9602         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9603         removal of MonoGenericMethod.
9604
9605 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9606
9607         * mini-exceptions.c: hooks for the exception events profiling API.
9608
9609 2007-06-14  Randolph Chung  <tausq@debian.org>
9610
9611         * Makefile.ma: Add hppa target.
9612         * mini-arch.h: Include mini-hppa.h
9613         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9614         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9615         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9616
9617 2007-06-14  Randolph Chung  <tausq@debian.org>
9618
9619         * inssel.brg: Add rules for "chained" compare-branch operations so that
9620         a single compare op can affect multiple branches.  Adjust cost for
9621         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9622         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9623         cost for some rules so that they can more easily be overridden by
9624         per-arch rules (with fixes from lupus).
9625         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9626
9627 2007-06-13  Randolph Chung  <tausq@debian.org>
9628
9629         * mini-ops.h: Reorder branch ops so that they match the order of the
9630         corresponding CEE_* ops.  The code expects them this way.
9631         Add new ops for HPPA target.
9632         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9633
9634 2007-06-13  Randolph Chung  <tausq@debian.org>
9635
9636         * mini-exceptions.c: Handle cases where the stack grows towards
9637         larger addresses.
9638         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9639
9640 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9641
9642         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9643         counter.
9644         * driver.c: explain where a non-matching corlib is found.
9645
9646 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9647
9648         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9649
9650 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9651
9652         * mini-exceptions.c: Generate a method profile leave event during
9653         an exception to ensure that the profiler gets notified.
9654
9655 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9658         branch.
9659
9660         * cpu-amd64.md: Add long_and/or/xor opcodes.
9661
9662 2007-06-06  Wade Berrier  <wberrier@novell.com>
9663
9664         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9665         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9666         length of instruction shr_imm (expected 8, got 10)
9667
9668 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9669
9670         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9671
9672 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9673
9674         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9675         MonoInternalHashTable again (fixed bug in the internal hash table
9676         code).
9677
9678 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9679
9680         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9681         Have to figure out what makes it crash the SWF regression.
9682
9683 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9684
9685         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9686
9687 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9688
9689         * mini.c: optimize out the type check when storing null in a
9690         reference array.
9691
9692 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9693
9694         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9695         MonoInternalHashTable.
9696
9697 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9698
9699         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9700         signed integer methods.
9701
9702 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9705         permanently since the current approach doesn't work.
9706
9707 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9710         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9711
9712 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9713
9714         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9715         the sreg2==rdx case.
9716         
9717         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9718         account if it contains a rex prefix.
9719         (peephole_pass): Handle OP_FMOVE as well.
9720
9721 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9724         as it causes regressions.
9725
9726 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9727
9728         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9729         static case as well.
9730
9731         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9732
9733         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9734         (mono_arch_get_this_arg_from_call): Ditto.
9735
9736         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9737
9738         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9739         invoke_impl field.
9740
9741         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9742         (mono_arch_get_this_arg_from_call): Ditto.
9743
9744         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9745         
9746         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9747         try to create optimized invoke code and use that for further invocations. 
9748         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9749
9750         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9751
9752 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9753
9754         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9755         sealed classes or methods.
9756         *devirtualization.cs: tests for the new optimization
9757
9758 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9759
9760         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9761         by the update_volatile () function.
9762
9763 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9764
9765         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9766         require it.
9767
9768         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9769
9770 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9771
9772         * mini.c: Add configure checks for header files.
9773         * mini-x86.c: Add configure checks for header files.
9774         * trace.c: Add configure checks for header files.
9775         * aot-runtime.c: Add configure checks for header files.
9776         * aot-compiler.c: Add configure checks for header files.
9777         * driver.c: Add configure checks for header files.
9778         * mini-codegen.c: Add configure checks for header files.
9779         
9780         Code is contributed under MIT/X11 license.
9781
9782 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9783
9784         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9785         icompare_imm -128 + op_iclt. Fixes #81703.
9786
9787 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9788
9789         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9790
9791 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9792
9793         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9794         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9795         so that all isinst checks now use "interface_bitmap".
9796
9797 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9798
9799         * cpu-amd64.md (jmp): Fix a warning.
9800
9801         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9802
9803         * basic.cs: Add new regression test.
9804
9805         * basic.cs: Remove test which is now in basic-long.cs.
9806
9807         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9808
9809         * basic-long.cs: Add new test.
9810         
9811 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9814
9815 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9818
9819         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9820         places.
9821         
9822         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9823         throwing code a bit.
9824
9825         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9826         the exception throwing code a bit.
9827
9828         * mini-x86.c (get_call_info): Allocate result from a mempool.
9829
9830 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9833
9834         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9835
9836         * mini.h (MonoCompile): Add 'token_info_hash' field.
9837
9838         * mini.c: Save token->method associations during compilation so the AOT 
9839         compiler can use it.
9840         
9841         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9842         which reference generic classes and methods.
9843
9844 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9847
9848         * aot-compiler.c (compile_method): Fix a typo in a comment.
9849
9850         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9851
9852         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9853         everything generic.
9854
9855         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9856
9857 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * mini.h (MonoCompile): Add 'args' field.
9860
9861         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9862         into cfg->args.
9863
9864         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9865
9866 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9869
9870         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9871
9872         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9873         opcodes for some opcodes.
9874
9875         * mini.h *.brg *.c: Use the new opcodes.
9876
9877 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9878
9879         * mini.h: Bumped aot revision.
9880
9881         * inssel.brg: modified code generation of type checks for interfaces
9882         to use the new "MonoClass.interface_bitmap" instead of the old
9883         "MonoClass.interface_offsets".
9884
9885 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9886
9887         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9888
9889 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9890
9891         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9892         64 bit platforms.
9893
9894 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9895
9896         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9897
9898 2007-04-27  Wade Berrier  <wberrier@novell.com>
9899
9900         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9901         mini.h) to fix build.
9902
9903 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9906         
9907         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9908         causes the corlib unit tests to fail.
9909
9910 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9913
9914         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9915
9916         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9917         opcodes to the comparison relations.
9918
9919         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
9920         opcodes to their types.
9921         
9922         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9923
9924         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9925         it in cfg->arch.cinfo.
9926
9927         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9928
9929         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9930         cfg->cil_offset_to_bb.
9931
9932 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9933
9934         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9935         created becase of initlocals.
9936
9937 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9940         Sergey Tikhonov <tsv@solvo.ru>.
9941
9942 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9943
9944         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9945
9946 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9947
9948         * cpu-s390.md (break): Correct the length of break instruction.
9949
9950 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9951
9952         * mini.c: fix a couple of soft-float issues and comments.
9953
9954 2007-04-15  Miguel de Icaza  <miguel@novell.com>
9955
9956         * trace.c (is_filenamechar): - is also a filename char.
9957
9958 2007-04-15  Neale Ferguson <neale@sinenomine.net>
9959
9960         * mini-s390.c: Correct checking for enum type in return value processing.
9961
9962 2007-04-14  Raja R Harinath  <rharinath@novell.com>
9963
9964         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
9965         (version.h): Makefile is in the build directory.
9966
9967 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
9968
9969         * mini-amd64.h: fix for assertion failure on Solaris/amd64
9970
9971 2007-04-11  Martin Baulig  <martin@ximian.com>
9972
9973         * mini.c (can_access_member): Fix handling of generic classes;
9974         fixes #81259.
9975
9976 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
9977
9978         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
9979
9980 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
9981
9982         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
9983
9984 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9985
9986         * mini-codegen.c: make sure the right spill amount is
9987         used for fp or integer registers (fixes the float_sub_spill() on ppc).
9988
9989 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
9990
9991         * mini-ppc.c: fixes for the fp_branch_nan test.
9992
9993 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
9994
9995         * basic.cs: Comment out new test which still fails on ia64.
9996
9997 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9998
9999         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10000
10001 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10002
10003         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10004
10005 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10008         on 64 bit machines. Fixes part of #80738.
10009
10010         * basic.cs: Add regression test.
10011
10012 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10013
10014         * inssel.brg basic.cs: Revert previous change to fix build.
10015
10016         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10017         platforms.
10018         
10019         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10020
10021         * basic.cs: Add new regression test.
10022
10023 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10024
10025         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10026         many arguments.
10027
10028 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10029
10030         * cpu-s390x.md: Correct length of break instruction.
10031
10032 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10033
10034         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10035         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10036
10037 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10038
10039         * *.c: Begin WIN64 port.
10040         * mini.c:  Use correct register in profiler.
10041         * mini-amd64.c: No inline assembly on Win64.
10042         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10043         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10044         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10045         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10046         mono_arch_ip_from_context for Win64.
10047         
10048         Contributed under MIT/X11 license.
10049
10050 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10051
10052         * exceptions-amd64.c (seh_handler): Ditto.
10053
10054         * exceptions-x86.c (seh_handler): Fix a memory leak.
10055
10056 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10057
10058         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10059         mini-s390x.c: fixed peephole optimizations to deal
10060         correctly with 1 and 2 byte reload avoidance.
10061
10062 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10063
10064         * cpu-s390.md, cpu-s390x.md: update localloc length.
10065
10066 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10067
10068         * cpu-g4.md: added missing descriptions.
10069
10070 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10071
10072         *  Makefile.am: Add support so the tail tests are not executed on
10073         PowerPC as that is a known limitation of the PowerPC port.
10074
10075 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10076
10077         * runmdesc.bat:  Move to msvc directory.
10078         
10079 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10080
10081         * runmdesc.bat:  Run executable that was produced by the current
10082         target and sent via an argument.
10083         
10084 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10085
10086         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10087         #81102.
10088
10089         * generics.2.cs: Add regression test.
10090
10091 2007-03-09  Wade berrier  <wberrier@novell.com>
10092
10093         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10094
10095 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10096
10097         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10098         AOT code depends on this.
10099
10100 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10101
10102         * mini.c: more precise tracking of types in the eval stack
10103         (part of fix for bug #81044).
10104
10105 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10108
10109         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10110
10111 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10114
10115         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10116
10117 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10118
10119         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10120         a pointer on 64 bit systems. Fixes #80190.
10121
10122         * iltests.il: Add new regression test.
10123
10124 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10125
10126         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10127
10128 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10129
10130         * trace.c: Remove an erroneous alignemnt check when tracing.
10131           Fixes --trace on OSX86.
10132
10133 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10134
10135         * mini-$(arch).h: initialize SP in context for all the archs.
10136
10137 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10138
10139         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10140         regressions in the thread tests.
10141
10142 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10145         - fixed implementation of LOCALLOC opcode
10146         - implemented non-un compare for floats
10147         - code cleanup
10148         - implementation of FDIV and CKFINITE opcodes
10149         - fixes for latest mono updates
10150         - additional arch opcodes
10151
10152 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10153
10154         * Makefile.am: simplify and merge rules for cross-compilation.
10155
10156 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10157
10158         * local-propagation.c: Actually *apply* the fix for bug 80591...
10159
10160 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10161
10162         * mini-exceptions.c: backuot part of the last change
10163         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10164
10165 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10166         * inssel.brg: Fix bug 59286.
10167
10168
10169 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10170
10171         * mini-exceptions.c: patch from Zoltan to correctly check for
10172         stack boundaries (using the stack register, not the frame register),
10173         fixes bugs #80724, #79717.
10174
10175 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10176
10177         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10178         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10179
10180         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10181         presence of frame pointer elimination.
10182
10183 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10184         
10185         * mini-x86.h: NetBSD UCONTEX_REG defines.
10186
10187 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * inssel-amd64.brg: Fix amd64 build.
10190
10191 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10192
10193         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10194         on amd64.
10195
10196 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10197
10198         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10199         ends.
10200
10201         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10202
10203 2007-01-30 Mark Mason <mason@broadcom.com>
10204
10205            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10206            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10207            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10208            beginning support for CEE_JMP [not quite working yet]
10209            * tramp-mips.c: LMF handling now works
10210         
10211 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10214
10215         * mini.h (NULLIFY_INS): New macro.
10216
10217 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10218
10219         * mini.c: statistical profiler fix for windows, patch
10220         from Tor Lillqvist (tml@novell.com).
10221
10222 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10223         * local-propagation.c: Fix bug 80591.
10224
10225 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10226
10227         * Makefile.am: put back the --export-dynamic option as with
10228         the previous gmodule flags (thanks to Robert Jordan).
10229
10230 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10233
10234         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10235         simplify and speed up the local register allocator. Also rename some fields
10236         like iassign->vassign.
10237         
10238         * regalloc.c: Remove some functions which are no longer used since their
10239         inlined version is in mini-codegen.c.
10240         
10241         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10242
10243         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10244
10245 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10246
10247         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10248         narrowing. Fixes #80622.
10249
10250         * iltests.il: Add new regresssion test. 
10251
10252 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10253
10254         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10255         debug-debugger.c, debug-debugger.h: warning fixes.
10256         * driver.c: updated copyright year and made it fit in one line.
10257
10258 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10259
10260         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10261
10262 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10263
10264         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10265
10266         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10267
10268         * iltests.il: Add new test for bug #80507.
10269
10270 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10271
10272         * mini-arm.h: use soft-float also on vfp for now.
10273
10274 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10275
10276         * mini.c: fix some more soft-float issues.
10277
10278 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10281
10282 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10283         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10284         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10285         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10286
10287 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10288
10289         * mini-arm.c: typo fix.
10290
10291 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10292
10293         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10294
10295 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10298         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10299
10300         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10301
10302         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10303
10304         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10305         
10306         * inssel.brg: Fix a warning.
10307
10308         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10309
10310         * abcremoval.c ssa.c ssapre.c: Update after this change.
10311         
10312         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10313
10314         * dominators.c (df_set): Use mono_bitset_union_fast.    
10315
10316 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10317
10318         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10319         mini-codegen.c: reduce relocations and memory usage for the cpu
10320         description.
10321
10322 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10325
10326         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10327         to reduce their size.
10328
10329 2007-01-19 Mark Mason <mason@broadcom.com>
10330
10331         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10332         * mini-mips.c: more configuration macros, support long conditional branches, additional
10333         asserts, fix epilog instrumentation.
10334         * mini-mips.h: use standard stack walk
10335         * cpu-mips.md: increase size of div, rem and conditional branches
10336         
10337 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10338
10339         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10340         to cpu spec data.
10341
10342 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10343
10344         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10345         (compile_method): Ditto.
10346
10347         * aot-runtime.c (decode_klass_info): Ditto.
10348
10349         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10350         needed by the code generated by inssel.brg. Also fix a warning.
10351
10352 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10353
10354         * mini.c: deal with enums that become genericinsts by
10355         being nested in a generic class (bug #79956).
10356
10357 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10358
10359         * mini.c: match the generic definition to check for
10360         private access with generic types (bug #78431).
10361
10362 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10363
10364         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10365         to make life easier for people cross-compiling that insist on not
10366         using scratchbox.
10367
10368 2007-01-17 Mark Mason <mason@broadcom.com>
10369
10370         * inssel-long.brg: patch to deal with mips missing flags
10371         * inssel-long32-mips.brg: implement overflow checks
10372         * insset-mips.brg: implement overflow checks
10373         * mini-mips.h: implement conditional exception handling
10374         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10375           Remove unused code, minor cleanups.
10376         * exceptions-mips.c: minor cleanups
10377         * mini-ops.h: add mips conditional exception ops
10378         * cpu-mips.md: add mips conditional exception ops
10379
10380         
10381 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10382
10383         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10384         to deal with mips missing of flags.
10385
10386 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10387
10388         * exceptions-ppc.c: execute fault handlers.
10389
10390 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10391
10392         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10393
10394 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10395
10396         * mini.c: handle also floating point values in initialize_array.
10397
10398 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10399
10400         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10401         array initialization and make it conditional on the intrins option.
10402
10403 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10404
10405         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10406         relocations and put the patch info names close to the enum definition.
10407
10408 2007-01-15 Mark Mason <mason@broadcom.com>
10409
10410         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10411
10412 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10413
10414         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10415
10416 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10417
10418         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10419
10420 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10421
10422         * Makefile.am: distribute the mips sources.
10423
10424 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10425
10426         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10427         directly.
10428
10429 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10430
10431         * cpu-x86.md: back out for now as this triggers other regressions.
10432
10433 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10434
10435         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10436         to eax:edx, so ecx can't get allocated to them (bug #80489).
10437
10438 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10439
10440         * mini.c, mini-exceptions.c: enabled running fault handlers
10441         (bug #80469).
10442
10443 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10444
10445         * driver.c: If nothing fail, do not use the string "failed",
10446         because it makes it very annoying to view test result logs on the
10447         web. 
10448
10449 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10450
10451         * debug-debugger.c (mono_debugger_main): Rename "main" to
10452         "main_method" to prevent a warning.
10453
10454         Remove a warning for unused field.
10455
10456 2006-12-28  Martin Baulig  <martin@ximian.com>
10457
10458         * debug-debugger.c
10459         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10460
10461 2006-12-22  Martin Baulig  <martin@ximian.com>
10462
10463         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10464         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10465         seperate `.mdb_debug_info' section, so we can access it from the
10466         debugger even if the binary is stripped.
10467
10468         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10469         from the `.mdb_debug_info' here to prevent the linker from
10470         removing that section.
10471
10472         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10473         mdb-debug-info64.s.
10474
10475 2006-12-19  Robert Jordan  <robertj@gmx.net>
10476
10477         * mini-x86: enable the code to return small structures in
10478         registers for FreeBSD as well. Fixes bug #80278.
10479         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10480
10481 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10482
10483         * mini-x86.c: align the stack when calling the profiler
10484         function instrumenting the prolog (on OSX).
10485
10486 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10487
10488         * mini.c: emit a break opcode where Debugger.Break () is called.
10489
10490 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10491
10492         * mini.c (mono_method_to_ir): Provide useful information on this
10493         assert, to prevent others from debugging like I did.
10494
10495 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10496
10497         * mini.c: enable code which was incorrectly commented
10498         (bug #80235).
10499
10500 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10501
10502         * mini-x86.c: enable on OSX, too, the code to return small
10503         structures in registers.
10504
10505 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10506
10507         * mini-x86.c: remove the use of the dynamic code manager here, too.
10508
10509 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10510
10511         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10512         mono_debugger_create_notification_function() to use
10513         mono_global_codeman_reserve () instead of a dynamic code manager.
10514
10515 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10516
10517         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10518         ves_array_element_address() jit icall and use a generated
10519         managed method instead (which is about 4 times faster for a rank 3
10520         array access).
10521
10522 2006-11-29  Mark Mason  <mason@broadcom.com>
10523
10524         * basic-calls.cs: additional tests for passing
10525         structures as function arguments.
10526
10527 2006-11-29  Mark Mason  <mason@broadcom.com>
10528
10529         * mini-mips.h: disable custom exception handling
10530         * mini-mips.c: throw/rethrow should use jalr to call
10531         exception stubs.  Fixed bug with passing structures
10532         by value. More support for tracing floating point
10533         functions.
10534
10535 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10536
10537         * mini.c: fixed typo in the soft-float ldind.r4 handling
10538         (bug #80086).
10539
10540 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10541
10542         * mini.c, mini.h, driver.c: added --runtime command line
10543         option to select a different runtime than the autodetected one.
10544         * jit.h: added API for embedders to initialize with a specific
10545         runtime version.
10546
10547 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10548
10549         * mini.c: handle also boxing of r4 values (bug #80024).
10550
10551 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10552
10553         * mini-ppc.c: force indirect calls until we reserve
10554         enough address space for all the generated code.
10555
10556 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10557
10558         * exceptions-arm.c: workaround bugs in the libc definition
10559         of struct ucontext.
10560
10561 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10562
10563         * inssel.brg: fixes from me and Mark Mason.
10564
10565 2006-11-23  Dick Porter  <dick@ximian.com>
10566
10567         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10568         semaphore display now we've fixed the initial value
10569
10570 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10571
10572         * inssel.brg: partially revert the last change to fix the build.
10573
10574 2006-11-21  Mark Mason  <mason@broadcom.com>
10575
10576         * inssel.brg: Add and use compare-and-branch macros to support
10577         architectures that do not have condition code registers (ie. MIPS).
10578         * *-mips.{c,brg,md}: Fix copyright statements
10579
10580 2006-11-20  Mark Mason  <mason@broadcom.com>
10581
10582         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10583         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10584         * mini.h: Added declaration for mono_print_ins()
10585         * mini-codegen.c: added ins_spec initializer for MIPS
10586         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10587         vreg to be virtual and hreg to be non-virtual.
10588         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10589         is not yet working/implemented correctly.
10590         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10591         non-static, fixup calls to print_ins() from other parts in the file.
10592
10593 2006-11-20  Mark Mason  <mason@broadcom.com>
10594
10595         * basic-calls.cs: added tests for passing structures as arguments
10596         to calls.
10597
10598 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10599
10600         * inssel-long32.brg: optimize signed division by power of two.
10601
10602 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10603
10604         * mini-arm.c: added support for interworking with thumb code
10605         (mono must be still be built using the ARM instruction encoding).
10606
10607 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10608
10609         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10610         verifier has different rules for it.   Fixes a few verifier issues
10611         in the test suite.
10612
10613         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10614         at the end, so people know what happened.
10615
10616 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10617
10618         * brach-opts.c: in optimize_exception_target() make sure we
10619         are in a catch clause (fixes bug #79871).
10620
10621 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10622
10623         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10624         more soft-float support fixes.
10625
10626 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10627
10628         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10629         that are passed half on the stack and half in registers.
10630
10631 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10632
10633         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10634         more mips integration work from Mark E Mason 
10635         <mark.e.mason@broadcom.com>.
10636
10637 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10638
10639         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10640         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10641         tramp-mips.c: added sources for the mips port, not
10642         integrated in the build yet. Contributed by
10643         Mark E Mason <mark.e.mason@broadcom.com>.
10644
10645 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10646
10647         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10648
10649 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10650
10651         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10652         put the soft-float rules in its own file since it seems to
10653         break s390 compilation.
10654
10655 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10656
10657         * mini-arm.c: fixed wrnings.
10658
10659 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10660
10661         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10662         inssel-arm.brg: ARM support for soft-float.
10663
10664 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10665
10666         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10667         loads and stores of 32 bit fp values.
10668
10669 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10672
10673         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10674         works. Fixes #79852 and #79463.
10675
10676 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10677
10678         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10679         more soft-float support WIP and fixes.
10680
10681 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10682
10683         * mini-arm.c: some VFP updates.
10684
10685 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10686
10687         * mini-exceptions.c: 0 is a valid local var offset in some
10688         architectures, don't assert (bug #78508).
10689
10690 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10691
10692         * exceptions-arm.c: fixed off by one error in stack walk code.
10693
10694 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10695
10696         * mini.h, mini.c: more precise tracking of type load exceptions.
10697
10698 2006-11-03  Robert Jordan  <robertj@gmx.net>
10699
10700         * Makefile.am: [WIN32] Add monow.exe target.
10701         * driver.c: [WIN32] Don't detach the console when debugging.
10702         Fixes bug #79797.
10703         
10704 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10705
10706         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10707
10708 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10709
10710         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10711
10712         * driver.c (mini_regression): Fix --regression with AOT.
10713
10714         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10715
10716 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10717
10718         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10719
10720         * mini-sparc.h: Don't use sigaction on sparc/linux.
10721
10722         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10723
10724         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10725
10726         * mini-exceptions.c: Add proper include files for getpid ().
10727
10728 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10729
10730         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10731         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10732         method.
10733
10734         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10735         name cache to reduce its size.
10736
10737         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10738
10739 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10740
10741         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10742         the mono_lmf TLS variable.
10743
10744         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10745         trampoline lmf frames.  
10746
10747         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10748
10749 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10750
10751         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10752         the mono_lmf TLS variable.
10753
10754         * mini-exceptions.c: Access the LMF structure through accessors.
10755
10756         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10757         variable instead of in jit_tls->lmf.
10758
10759         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10760         
10761         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10762         trampoline lmf frames.
10763
10764         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10765
10766 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10767
10768        * mini.c trace.c mini-x86.c: Revert these too.
10769         
10770        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10771        signature change.
10772
10773 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10774
10775         * genmdesc.c: removed now dead code.
10776
10777 2006-10-09  Robert Jordan <robertj@gmx.net>
10778
10779         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10780
10781 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10782
10783         * mini.h: do not leave gaps in the opcode values.
10784
10785 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10786
10787         * jit-icalls.h: flag functions as internal here, too.
10788
10789 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10790
10791         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10792         functions with the internal attribute.
10793
10794 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10795
10796         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10797
10798 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10799
10800         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10801         for soft-float.
10802
10803 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10806         tail calls as on other platforms.
10807
10808         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10809
10810         * iltests.il: Add a few tailcall tests.
10811
10812 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10813
10814         * driver.c: fix loop for old compilers (bug #79521).
10815
10816 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10819
10820         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10821
10822         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10823         metadata without any code.
10824
10825         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10826         more precise debugging information using gdb.
10827
10828 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10829
10830         * inssel-ia64.brg: Make the helper methods static.
10831
10832 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10833
10834         * inssel-x86.brg: make the helper methods static.
10835
10836 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10837
10838         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10839
10840 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10841
10842         * mini.c: updates for monoburg changes.
10843         * inssel.brg: make a few helper functions static as they should.
10844
10845 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10846
10847         * Makefile.am: Move mini-codegen.c to common_sources.
10848
10849 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10850
10851         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10852         instructions.
10853         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10854         mini-ppc.h: port to use the common local register allocator.
10855
10856 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10857
10858         * mini.h: Remove the comment too then.
10859
10860 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10861
10862         * mini.h: put back backend.data which is to be used shortly and
10863         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10864         pointers on 4 byte boundaries it'd have much bigger issues running
10865         and you can ifdef it out anyway.
10866
10867 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10870         MonoInst size by 4 bytes on 64 bit machines.
10871
10872 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10873
10874         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10875         replacement with more meaningful field names. Arch maintainers, please
10876         check the assigned names are good enough for your arch.
10877
10878 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10881         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10882
10883 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10884
10885         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10886         relocations and memory requirements, put the optimization flags
10887         definitions in their own file.
10888
10889 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10892
10893         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10894
10895 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10898
10899 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10900
10901         * inssel.brg: use the correct function to get the size of an item
10902         in an array, given an element class.
10903         * aot-compiler.c: do not access class->class_size directly.
10904
10905 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10906
10907         * mini.h, debug-mini.c: added a debugging function to print
10908         info about local variables and arguments in a jitted method.
10909
10910 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10913
10914         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10915
10916 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10917
10918         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
10919         inner and outer loops when passing vtypes.
10920
10921 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10922
10923         * mini-ppc.c: take into account the cpu errata for cache flushing
10924         which caused some random errors (bug #79381).
10925
10926 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10929         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10930
10931 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10934         loaded.
10935
10936         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10937         freebsd ports tree.
10938
10939         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10940         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10941
10942         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10943         displacement.
10944
10945 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10946
10947         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10948
10949 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10950
10951         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
10952         macro does not have to be changed during debugging.
10953
10954         * 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>.
10955
10956         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
10957
10958         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
10959         
10960         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
10961         MONO_ARCH_NO_EMULATE_MUL is defined.
10962
10963         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
10964
10965         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
10966
10967         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
10968
10969         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
10970         
10971 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10972
10973         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
10974         stuff to mini-exceptions.c where it is used.
10975
10976         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
10977         setup code, the real one is in mini-exceptions.c.
10978
10979         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
10980         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
10981         some changes from the freebsd ports tree.
10982
10983         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
10984         constants.
10985         
10986         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
10987
10988 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
10989
10990         * mini.c: on Linux, check for /proc to be mounted
10991         (bug# 79351, novell bug#201204).
10992
10993 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10994
10995         * mini.c: handle cases where pthread_attr_getstack() behaves
10996         incorrectly (bug #78096).
10997
10998 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
10999
11000         * mini-arm.c: support larger stack frames (bug #79272).
11001
11002 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11003
11004         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11005
11006         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11007         tokens.
11008
11009         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11010         mono_class_from_name () to find a class from its name.
11011
11012         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11013
11014 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11017
11018 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
11019
11020         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11021
11022 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11025         callinfo->trampoline.
11026
11027         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11028         fixes #79271.
11029         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11030         future.
11031
11032 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11035
11036 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11037
11038         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11039         stats.method_trampolines, it is already done by the generic trampoline code.
11040
11041         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11042         
11043 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11044
11045         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11046
11047         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11048
11049         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11050
11051         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11052         
11053         * mini.c (print_jit_stats): Print new stats.
11054
11055         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11056
11057 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11060         Address on two dimensional arrays. Fixes #78729.
11061
11062         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11063
11064         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11065         a method.
11066
11067         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11068
11069         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11070         #79130.
11071         
11072         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11073         a race condition.
11074         (mini_get_ldelema_ins): Ditto.
11075
11076 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11079         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11080         Fixes #79213.
11081
11082 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11083
11084         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11085         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11086
11087         * exceptions-s390x.c: Cosmetic change.
11088
11089         * tramp-s390.c: Fix warning.
11090
11091         * cpu-s390.md: Correct length of mul_imm.
11092
11093 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11094
11095         * aot-compiler.c: added binary writer with ELF backend
11096         implementation (only on Linux/x86 for now).
11097
11098 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * Makefile.am: Don't run net 2.0 AOT tests.
11101
11102         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11103         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11104
11105         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11106
11107 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11108
11109         * aot-compiler.c: simplified and refactored the asm-writing code
11110         to allow different backends.
11111
11112 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11115
11116         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11117         little. Share patches of type TYPE_FROM_HANDLE as well.
11118
11119         * mini.c (mono_patch_info_equal): New helper function.
11120         (mono_patch_info_hash): Ditto.
11121
11122         * aot-compiler.c (emit_method_code): Fix s390 build.
11123
11124         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11125         is not handled because it is stored as a flag and not as a type ctor. Fixes
11126         #79016.
11127
11128 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11129
11130         * aot-compiler.c: Fix computation of GOT slot statistics.
11131         
11132         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11133         Also remove support for not PIC AOT.
11134
11135         * mini.h: Bump AOT file format version.
11136
11137         * objects.cs: Add a test for #78990.
11138
11139         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11140         (peter.dettman@iinet.net.au). Fixes #79087.
11141
11142         * basic-long.cs: Add a test for the above.
11143
11144 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11145
11146         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11147         
11148         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11149         code somewhat.
11150
11151 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11152
11153         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11154         exceptions.
11155
11156 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11157
11158         * mini.c: Don't verify COM proxy invoke calls
11159         
11160
11161 2006-08-10  Dick Porter  <dick@ximian.com>
11162
11163         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11164         which process is holding semaphores locked.
11165
11166 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11167
11168         * mini-ia64.c mini-amd64.c: Fix #79027.
11169
11170         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11171
11172         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11173
11174         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11175         implicit arguments in a vararg call. Fixes #79027.
11176
11177 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11178
11179         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11180         (mono_get_array_new_va_signature): Ditto.
11181
11182 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * aot-runtime.c: Call init_plt lazily.
11185
11186         * inssel-long.brg: Fix unsigned long->int conversion.
11187
11188         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11189
11190         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11191         that most data is now in the .rss/.data section.
11192
11193 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11196
11197         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11198
11199         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11200
11201         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11202
11203         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11204         virtual call. Fixes #79010.
11205
11206         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11207         and use the result as the this argument in the real call.
11208
11209         * generics.2.cs: Add a new test for #79010.
11210         
11211 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * mini-x86.c: Fix a warning.
11214
11215         * aot-compiler.c: Add a bunch of statistics.
11216
11217         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11218
11219 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11220
11221         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11222
11223 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * 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>.
11226
11227 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11228
11229         * mini.c (mono_method_to_ir): Obtain the original method in the
11230         CIL stream and use this to perform validation.
11231
11232         Fixed: #78816
11233
11234 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11235
11236         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11237         (mono_arch_call_opcode): Ditto.
11238
11239         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11240         #78826.
11241
11242         * mini.c (mono_patch_info_dup_mp): New helper function.
11243         
11244         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11245         compilation. Fixes #78827.
11246
11247 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11248
11249         * declsec.c: Use original security informations for
11250           MONO_WRAPPER_MANAGED_TO_MANAGED.
11251
11252 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11253
11254         * mini.c: Allow Com Interop methods/classes and
11255         don't verify COM wrapper calls
11256         
11257
11258 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11259
11260         * inssel-long32.brg: Fix long->i4 checked conversion.
11261
11262         * exceptions.cs: Add a test for the above.
11263
11264 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11267
11268         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11269         leaks.
11270
11271         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11272         #78775.
11273
11274 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * mini.c: Fix solaris/x86 exception handling.
11277
11278         * Makefile.am: Get rid of $(ICU_LIBS).
11279
11280 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11283         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11284         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11285
11286         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11287
11288         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11289         this function causes a SIGSEGV.
11290
11291 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11292
11293         * mini.c: Remove unused solaris/x86 includes.
11294
11295 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11296
11297         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11298
11299 2006-06-20  Jb Evain  <jbevain@gmail.com>
11300
11301         * cpu-g4.md: fix max length of start_handler instruction.
11302
11303 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11304         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11305
11306 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11307         * ssa.c: Fixed bug 78653 for SSA based deadce.
11308         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11309         MonoInst.flags, used in SSA based deadce.
11310         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11311         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11312
11313 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11314
11315         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11316         it can end up using non executable memory on ppc64 systems
11317         running ppc32 userspace (fix from Johannes Berg).
11318
11319 2006-06-14  Dick Porter  <dick@ximian.com>
11320
11321         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11322         4.1.1
11323
11324 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11325         * mini.c: Made so that inline is locally disabled if it would
11326         trigger a .cctor, because too many apps depend on this behavior
11327         (which seems to be also the one of the MS CLR).
11328
11329 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11330
11331         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11332         No idea why this worked before.
11333
11334         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11335         which branch to outer exception clauses since they could skip the
11336         inner finally clauses. Fixes #78633.
11337
11338         * exceptions.cs: Add a test for the above.
11339
11340         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11341         Fixes #78629.
11342
11343         * iltests.il: Add a test for the above.
11344
11345 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11348         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11349
11350         * iltests.il: Add a test for the above.
11351
11352 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11355         
11356         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11357         methods as instrinsics.
11358
11359 2006-06-09  Wade Berrier <wberrier@novell.com>
11360
11361         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11362         (simple-cee-ops.h ssapre-mini-ops.h)
11363
11364 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11365
11366         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11367         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11368         instruction).
11369         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11370         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11371
11372 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11373
11374         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11375
11376 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11377
11378         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11379         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11380         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11381         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11382         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11383         of opcodes, so that bug 78549 should not happen again.
11384         * ssapre.c: Updated to use the renamed files.
11385
11386 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11387
11388         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11389         in OP_ATOMIC_EXCHANGE_I4.
11390
11391 2006-06-07  Wade Berrier <wberrier@novell.com>
11392
11393         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11394         in mono_debugger_create_notification_function)
11395
11396 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11397
11398         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11399         
11400         * mini.c (type_from_stack_type): Disable some changes which do not
11401         seem to work.
11402
11403         * driver.c: Reenable opts.
11404
11405         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11406         of the evaluation stack.
11407         
11408         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11409         evaluation stack trace at entry to the bblock.
11410
11411         * mini.c (merge_stacks): New function to perform verification of stack merges.
11412         Turned off by default.
11413
11414         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11415         STACK_MP.
11416         
11417 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11418
11419         * local-propagation.c: Fixed bug 78549.
11420
11421 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11422
11423         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11424
11425 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11426
11427         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11428         tramp-arm.c, tramp-ia64.c
11429         (mono_debugger_create_notification_function): Update signature to
11430         new signature and use new protocol for creating the notification
11431         function.  
11432
11433         Should fix the build.
11434
11435 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11436
11437         * exceptions-ppc.c (mono_jit_walk_stack)
11438         (ves_icall_get_frame_info): Fix the build
11439
11440 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11443
11444 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11445
11446         * il2tests.2.il: New file for generics CIL tests.  Add test for
11447         #78019.
11448         * Makefile.am: Update.
11449
11450         Fix #78019
11451         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11452         to nullable types.
11453
11454 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11455
11456         * aliasing.c: Fixed bug 78311.
11457
11458 2006-05-29  Martin Baulig  <martin@ximian.com>
11459
11460         * mini-exceptions.c (mono_find_jit_info): When computing the
11461         native offset, check whether we're actually inside the method's
11462         code; call mono_debug_print_stack_frame() to format the frame.
11463         (ves_icall_System_Exception_get_trace): Call
11464         mono_debug_print_stack_frame() to format the stack frame.
11465         (ves_icall_get_trace): Update to the new debugging API.
11466         (mono_jit_walk_stack_from_ctx): Likewise.
11467         (ves_icall_get_frame_info): Likewise.
11468
11469         * mini.c (get_method_from_ip): Use the new debugging API.
11470         (mono_print_method_from_ip): Likewise.
11471
11472         * exceptions-ppc.c
11473         (mono_jit_walk_stack): Use the new debugging API.
11474         (ves_icall_get_frame_info): Likewise.   
11475
11476 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11479
11480 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11481
11482         * mini.c: Added "limitator" to inline for debugging.
11483
11484 2006-05-24  Martin Baulig  <martin@ximian.com>
11485
11486         * debug-debugger.c (mono_debugger_init): Create a private,
11487         malloc()-based code manager for the notification function and
11488         intentionally leak it on exit.  This fixes the crash-on-exit race
11489         condition.
11490
11491         * tramp-amd64.c
11492         (mono_debugger_create_notification_function): Added
11493         `MonoCodeManager *' argument.
11494
11495         * tramp-x86.c
11496         (mono_debugger_create_notification_function): Added
11497         `MonoCodeManager *' argument.
11498
11499 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11500
11501         * aliasing.c: Fixed 64 bit issue.
11502         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11503         default since all known bugs are fixed (one more time!).
11504
11505 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11506
11507         * mini.c: write barrier support.
11508
11509 2006-05-23  Martin Baulig  <martin@ximian.com>
11510
11511         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11512         check at the top of the file.
11513
11514 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11515
11516         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11517         reverting changes without reason and without changelog entries.
11518
11519 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11522         to a few opcodes. Fixes #78439.
11523
11524         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11525         consistency with other archs.
11526
11527         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11528
11529 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11530
11531         * debug-debugger.c: fix the build.
11532
11533 2006-05-17  Martin Baulig  <martin@ximian.com>
11534
11535         * debug-debugger.c
11536         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11537         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11538         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11539         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11540
11541 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11542
11543         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11544
11545 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11548         MONO_TYPE_GENERICINST.
11549         
11550         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11551         MONO_TYPE_GENERICINST.
11552
11553 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11554
11555         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11556         #78325.
11557
11558 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11559
11560         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11561         mempool.
11562         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11563
11564 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11565
11566         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11567         mono_trace_cleanup ().
11568
11569         * iltests.il: Fix problem with the newly added test.
11570
11571         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11572         due to register constraints, free up the previous hreg. Fixes #78314.
11573
11574         * iltests.il: Add new test for #78314.  
11575
11576         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11577         Interlocked.Add. Fixes #78312.
11578
11579         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11580         
11581 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11582
11583         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11584
11585 2006-05-05  Martin Baulig  <martin@ximian.com>
11586
11587         * debug-mini.c (mono_debug_open_block): New method.
11588
11589         * mini-amd64.c
11590         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11591         the beginning of each basic block.
11592
11593         * mini-x86.c
11594         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11595         the beginning of each basic block.
11596
11597 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11598
11599         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11600         default until I understand why they break the build on amd64.
11601
11602 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * mini.c (mini_cleanup): Call mono_cleanup ().
11605
11606         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11607         errors.
11608
11609 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11610
11611         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11612         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11613         default since all known bugs are fixed, and I cannot reproduce bug
11614         77944... I'm asking Matt Hargett to test again after this commit.
11615
11616 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11617
11618         * mini-codegen.c: Fixed typo that thrashed inline.
11619
11620 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * dominators.c (compute_dominators): Avoid using a worklist since
11623         it is not correct in some cases. Instead, iterate over all bblocks as
11624         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11625
11626 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11627
11628         * mini.c (mono_jit_compile_method_inner): Use
11629         mono_prepare_exception_from_error that resets the value
11630         internally.
11631
11632 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11633
11634         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11635         
11636 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11637
11638         * aliasing.c: Fixed bug 78210.
11639
11640 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11641
11642         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11643         default until all their problems (or the ones they trigger) are fixed.
11644
11645 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11646
11647         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11648         
11649         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11650         as loaded only after resolving patches since that could invoke the same method.
11651
11652         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11653
11654         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11655         functions.
11656
11657         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11658         AOT loader.
11659
11660         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11661         stack.
11662
11663         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11664         made from AOT code through the PLT table.
11665
11666         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11667         holding the plt offset when a call is made to the aot plt trampoline.
11668         
11669 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11672         amd64 AOT support.
11673
11674         * Makefile.am (common_sources): Fix build breakage.
11675
11676         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11677         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11678         intra-assembly calls if possible.
11679         
11680         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11681
11682         * mini-trampolines.c: Handle PLT entries.
11683
11684         * mini.c: Avoid creating a GOT var for calls.
11685
11686         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11687         from mscorlib code.
11688
11689         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11690         from mscorlib code.
11691
11692         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11693         AOT code.       
11694
11695         * mini.h: Bump AOT file format version.
11696         
11697         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11698         covers more cases.
11699
11700 2006-04-25  Martin Baulig  <martin@ximian.com>
11701
11702         * driver.c: Disable copyprop, consprop and inline when running
11703         inside the debugger.
11704
11705 2006-04-25  Martin Baulig  <martin@ximian.com>
11706
11707         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11708         with `get_current_thread' and added `detach'.
11709         (MonoDebuggerMetadataInfo): Added `thread_size',
11710         `thread_tid_offset', `thread_stack_ptr_offset' and
11711         `thread_end_stack_offset'.
11712
11713 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11716         aot-runtime.c.
11717
11718         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11719         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11720
11721         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11722
11723         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11724
11725         * aot.c: Add support for ADJUSTED_IID.  
11726
11727 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * aot.c (emit_method_order): Don't align method_order_end.
11730
11731         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11732         the interface ID changes.
11733
11734 2006-04-21  Dick Porter  <dick@ximian.com>
11735
11736         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11737         cleaning up a thread.  Fixes the new part of bug 77470.
11738
11739 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11740
11741         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11742         to managed wrapper.
11743                      
11744 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11747         
11748         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11749         SIGSEGV. Fixes #78072.
11750
11751         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11752         unregister our SIGABRT handler.
11753
11754 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11755
11756         * mini.c: Disabled inline where it can alter the call stack in a
11757         way visible from managed code.
11758         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11759         default.
11760
11761 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11762
11763         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11764         on other platforms. Fixes #78089.
11765
11766 2006-04-13  Martin Baulig  <martin@ximian.com>
11767
11768         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11769         determine whether we're inside the debugger.
11770
11771         * debug-debugger.h
11772         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11773
11774 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11777         handler clauses. Fixes #78024.
11778
11779         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11780         in the CALL_MEMBASE opcodes. Fixes #78088.
11781         (mono_arch_get_vcall_slot_addr): Ditto.
11782
11783 2006-04-10  Martin Baulig  <martin@ximian.com>
11784
11785         * debug-debugger.c: The thread handling code has now been moved
11786         into ../metadata/threads.c.
11787
11788 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11789
11790         * driver.c (mono_main): Fix --with-gc=none build.
11791
11792         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11793         (mono_spillvar_offset_float): Ditto.
11794         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11795         hreg, not when its !global, since on ia64, there is a third category: stacked
11796         registers.      
11797
11798 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11799
11800         * mini.c: set MonoInst->klass for load field address and a few other
11801         places.
11802
11803 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11806
11807 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11808
11809         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11810         the branch opt changes.
11811
11812 2006-04-06  Dick Porter  <dick@ximian.com>
11813
11814         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11815         
11816         * wapihandles.c (mini_wapi_seminfo): 
11817         * driver.c (mono_main): Add semaphore info option
11818
11819 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11822         branch optimization changes. Fixes #78009.
11823
11824 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11825
11826         * mini.c: ignore accessibility of methods in managed->native wrappers.
11827
11828 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11829
11830         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11831         
11832         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11833
11834 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini.c: Modify the branch optimizations to preserve the invariant that
11837         the entries inside the in_bb and out_bb arrays are unique.
11838         (mono_unlink_bblock): Avoid creation of new arrays.
11839
11840 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11841
11842         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11843         change (#77992).
11844
11845 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11846
11847         * mini.c (optimize_branches): Remove the "optimizations" in
11848         the cbranch1/cbranch2 -> branch cases which were causing several
11849         problems in the past. Fixes #77986.
11850
11851 2006-03-31  Chris Toshok  <toshok@ximian.com>
11852
11853         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11854         default optimizations :(
11855
11856 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11857
11858         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11859         branch.
11860
11861 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11862
11863         * local-propagation.c: Added comments to structs and removed
11864         "Mono" prefixes from local tree mover types.
11865
11866 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * Makefile.am (arch_sources): Define this for each architecture so 
11869         libmono_la_SOURCES is defined in one place.
11870
11871 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11872
11873         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11874         from handles/.
11875
11876 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11877
11878         * driver.c: print the GC name supplied by configure.
11879
11880 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11881
11882         * local-propagation.c: Added tree mover, and moved here all the
11883         local propagation code from mini.c
11884         * mini.c: Added support for treeprop, and moved all the local
11885         propagation code to local-propagation.c
11886         * mini.h: Added support for treeprop
11887         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11888         treeprop, inline and deadce by default
11889         * Makefile.am: Added local-propagation.c
11890
11891 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11894
11895 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11896
11897         * debug-debugger.c: make it compile without the Boehm GC.
11898
11899 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11900
11901         * mini.c: fixed issue with mismatch when an icall is registered
11902         with multiple names but same address.
11903
11904 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11905
11906         * declsec.c, mini-exceptions.c: use write barrier to set reference
11907         fields of managed objects.
11908
11909 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11910
11911         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11912         (can_access_internals): Fix a warning.
11913
11914         * mini.c (print_method_from_ip): Rename this to 
11915         mono_print_method_from_ip so it gets exported.
11916
11917         * trace.c: Deal with strings inside StringBuilder's containing garbage
11918         and fix memory leaks. Fixes #77848.
11919
11920 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11921
11922         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11923         fixes #77787.
11924
11925 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11926         
11927         * mini-s390.c: Remove OP_X86_TEST_NULL.
11928
11929 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11930
11931         * mini.c: use the correct GetHashCode() for the moving collector.
11932
11933 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11934
11935         * liveness.c: Regalloc spill cost tuning.
11936
11937 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11938         
11939         * mini-s390x.h: Correct S390_LONG macro.
11940
11941         * mini-s390x.c: Cleanup unused code.
11942
11943 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * jit-icalls.h: New file.
11946
11947         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11948         icalls and include that instead of including jit-icalls.c.
11949
11950         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11951         OP_X86 opcodes.
11952
11953 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
11954
11955         * mini.c: when checking for member accessibility, also check for
11956         friend assemblies and for explicit interface implementations.
11957
11958 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
11961
11962         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
11963
11964         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
11965         common cases are done first.    
11966
11967         * mini-ops.h: Only define platform specific opcodes on the given platform.
11968
11969         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
11970         branch.
11971         
11972 2006-03-14  Martin Baulig  <martin@ximian.com>
11973
11974         Revert Paolo's change from r57348:
11975
11976         * mini.h: don't use gboolean for bitfields.
11977         * mini.c: verifier changes for fields and methods accessibility.
11978
11979 2006-03-13  Neale Ferguson <neale@sinenomine.net>
11980
11981         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
11982
11983         * mini-s390x.c: Fix conv_r_un.
11984
11985         * cpu-s390, cpu-s390x.md: Fix lengths.
11986
11987 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11988
11989         * mini.c: nested types have access to all the nesting
11990         levels, not just the enclosing types.
11991
11992 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11993
11994         * mini.c: added a few more verification checks.
11995
11996 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * liveness.c: Merge optimizations from the linear-il branch.
11999
12000 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12001
12002         * mini-ia64.c (emit_call): Add a comment.
12003
12004         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12005
12006         * tramp-ia64.c: Fix some warnings.
12007
12008 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12009
12010         * mini.h: don't use gboolean for bitfields.
12011         * mini.c: verifier changes for fields and methods accessibility.
12012
12013 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12016         lazy icall wrapper changes.
12017
12018         * dominators.c: Replace all the dominator algorithms with faster
12019         ones from the linear-il branch.
12020
12021         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12022         the mempool.
12023
12024         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12025         common cases are done first.
12026
12027         * mini-amd64.c: Fix some warnings.
12028
12029         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12030         from the mempool.
12031
12032         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12033         added code.
12034
12035         * mini.h: Add a missing prototype.
12036
12037 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini.c: Compile icall wrappers lazily.
12040
12041         * mini-codegen.c: Use printf instead of g_print since its much faster.
12042
12043         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12044         function.
12045
12046         * mini.c (optimize_branches): Cache the negative result from 
12047         remove_block_if_useless ().
12048
12049         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12050         Also fix some bblock linking issues.
12051
12052         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12053         assembly files.
12054
12055         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12056
12057         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12058         accessed fields first, for better cache behavior.
12059         
12060 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12061
12062         * mini.c: speedup IList<T> array accesses.
12063
12064 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12067         inline_costs counter. Fixes #77190.
12068
12069 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12072         trace messages. Fixes #77706.
12073
12074 2006-03-04  Martin Baulig  <martin@ximian.com>
12075
12076         * tramp-amd64.c, tramp-x86.c
12077         (mono_debugger_create_notification_function): Use
12078         mono_global_codeman_reserve() to allocate a buffer at runtime and
12079         return it.
12080
12081         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12082
12083         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12084         notification function at runtime and then call `initialize' in the
12085         `MONO_DEBUGGER__debugger_info' vtable.
12086
12087 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * iltests.il: Fix a visibility problem.
12090
12091 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12092
12093         * driver.c, mini.c: add hooks for the counters API.
12094
12095 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12096
12097         * driver.c: show disabled options.
12098
12099 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12100
12101         * linear-scan.c: always use cost-driven selection.
12102
12103 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12104
12105         * jit-icalls.c (helper_compile_generic_method): Revert change from
12106         2006-02-24.
12107
12108 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12109
12110         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12111
12112 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12113
12114         * inssel.brg: style fixes, mostly to force the updated monoburg
12115         to run for people using svn.
12116
12117 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12118
12119         * mini.c: match monoburg changes.
12120
12121 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12122
12123         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12124         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12125         declaration in the header file.
12126
12127 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12128
12129         * helpers.c: reduce relocations and mem usage.
12130
12131 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12132
12133         * mini.h, mini-codegen.c: disable logging features if
12134         requested by configure.
12135
12136 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12137
12138         * mini.c: tiny verifier changes.
12139
12140 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12141
12142         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12143         cpu-pentium.md: stack alignment changes for osx/x86,
12144         partially from Geoff Norton <gnorton@customerdna.com>.
12145
12146 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12147
12148         * jit-icalls.c (helper_compile_generic_method): Update to changes
12149         in metadata/class.c.
12150
12151 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12152         
12153         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12154         
12155         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12156         interface calls with large offsets.
12157
12158 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12159
12160         * jit-icalls.c (helper_compile_generic_method): Document the
12161         special-case we depend on so that we can inflate the method twice
12162         with the same context with no bad side-effects.
12163
12164 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12165
12166         * mini-x86.c, mini-amd64.c: fix for case when xen support
12167         is disabled.
12168
12169 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12170
12171         * mini-x86.c, mini-amd64.c: generate code to access tls items
12172         in a faster way for Xen systems.
12173
12174 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12175
12176         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12177         updates and compilation fixes for the OSX/x86 port, mostly from
12178         Geoff Norton <gnorton@customerdna.com>.
12179
12180 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12181
12182         * inssel.brg: faster interface call implementation
12183         to sync with the interface_offsets MonoVTable changes.
12184
12185 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12186
12187         * mini.c: more verification checks.
12188
12189 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12190
12191         * mini.c: added a few more verification checks.
12192
12193 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12194
12195         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12196         facility on the processor and use it if available.
12197
12198 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12199
12200         * driver.c, aot.c, mini.c: throw exception if the IL code is
12201         invalid or unverifiable.
12202
12203 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12204
12205         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12206         m.StructField.
12207
12208 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12211
12212 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12213
12214         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12215         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12216         handling of instantiated generic valuetypes.
12217
12218 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12221         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12222         instead.
12223
12224         * generics.2.cs: Revert the nullable reftypes tests.
12225
12226 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12227
12228         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12229         using __builtin_frame_address (1) as it doesn't work in the presence
12230         of optimizations. Hopefully fixes #77273.
12231
12232         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12233         -> generics.cs change as it doesn't work with some automake versions.
12234
12235 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12236
12237         * mini.c: handle systems that sue a different way to
12238         retrieve the stack address of the current thread.
12239
12240 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12243         it specially in the makefile.
12244
12245         * generics.2.cs: Add tests for nullable reference types.
12246
12247 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12248
12249         * mini.c: always handle the case when mono_jit_init()
12250         is called in a thread different from the main thread,
12251         confusing libgc (bug #77309).
12252
12253 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12254
12255         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12256
12257 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12258
12259         * mini.c: change optimize_branches () to use a single loop
12260         and introduce a new optimization to simplify some range checks.
12261
12262 2006-02-03  Martin Baulig  <martin@ximian.com>
12263
12264         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12265         and merged with debugger_thread_manager_add_thread().
12266         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12267         inform the debugger about the main thread.
12268
12269 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * basic.cs: Add test for div.un/rem.un constant folding.
12272
12273 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12274
12275         * cpu-s390x.md: correct int_xor_imm length
12276
12277 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12278
12279         * generics.2.cs: New test for #77442.
12280
12281         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12282         #77442.
12283
12284 2006-02-02  Martin Baulig  <martin@ximian.com>
12285
12286         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12287         <mono/metadata/mono-debug-debugger.h>   
12288
12289         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12290
12291 2006-02-02  Martin Baulig  <martin@ximian.com>
12292
12293         * debug-debugger.h: New header file for debug-debugger.c.
12294
12295         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12296         function is a separate thread anymore; add support for attaching.
12297
12298 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12299
12300         * tramp-x86.c: Fix a warning.
12301
12302 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12303
12304         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12305         on very large methods.
12306
12307         * aot.c (load_patch_info): Fix a warning.
12308
12309 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12310
12311         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12312         mini-ops.h: alu membase optimizations.
12313
12314 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12315
12316         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12317         to speedup StringBuilder.
12318
12319 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * dominators.c (mono_compute_natural_loops): Fix detection of
12322         loop body start blocks.
12323
12324         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12325
12326 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12327
12328         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12329         #75145.
12330
12331 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12332
12333         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12334
12335 2006-01-25  Martin Baulig  <martin@ximian.com>
12336
12337         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12338         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12339         started to cleanup this file a little bit.
12340
12341 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12342
12343         * mini.c: optimize a codepath frequently happening in generics code.
12344
12345 2006-01-23  Martin Baulig  <martin@ximian.com>
12346
12347         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12348
12349         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12350         functions directly.
12351
12352         * driver.c: debug-debugger.c is only available if
12353         `MONO_DEBUGGER_SUPPORTED' is defined.   
12354
12355 2006-01-23  Martin Baulig  <martin@ximian.com>
12356
12357         * debug-debugger.c: Only enable this on platforms where the Mono
12358         Debugger is working (x86 and x86_64).
12359
12360 2006-01-21  Martin Baulig  <martin@ximian.com>
12361
12362         The Mono Debugger is now using the normal `mono' instead of the
12363         `mono-debugger-mini-wrapper' when executing managed code.
12364
12365         * debug-debugger.c: New file; previously known as
12366         debugger/wrapper/wrapper.c.
12367
12368         * debug-mini.c (mono_init_debugger): Removed.
12369
12370         * driver.c (mono_main): Added new `--inside-mdb' command line
12371         argument which is used when running inside the debugger.
12372
12373 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12374
12375         * liveness.c (mono_analyze_liveness): Remove some unused data
12376         structures.
12377
12378 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12381
12382 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12385         depends on implementation details of monobitset.
12386
12387         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12388         Fixes #77271.
12389
12390 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12391
12392         * liveness.c: Update after monobitset changes.
12393
12394 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12397
12398 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12399
12400         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12401
12402         * mini-s390x.c: Remove warning messages.
12403
12404 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12405
12406         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12407
12408 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * generics.2.cs: Add ldelem/stelem_any test.
12411
12412 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12413
12414         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12415
12416 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12419         
12420 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12421
12422         * generics.2.cs: Reenable vtype tests.
12423
12424         * inssel-x86.brg: Remove an icorrect valuetype rule.
12425
12426 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12427
12428         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12429         initial support for OP_ABS.
12430
12431 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12432
12433         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12434
12435 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12436
12437         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12438         conversion and implement LADD/LSUB.
12439
12440         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12441         architectures.
12442
12443 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12444
12445         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12446
12447         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12448         architectures.
12449
12450 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12451
12452         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12453         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12454         (stack walk problem).
12455
12456 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * aot.c (mono_aot_load_method): Fix a warning.
12459
12460 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12461
12462         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12463
12464 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * iltests.il: Add test for #77148.
12467
12468         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12469         #77148.
12470
12471 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12472
12473         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12474
12475 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12476
12477         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12478         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12479
12480         * basic-long.cs: Add lconv-to-r4/r8 tests.
12481
12482 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12485
12486         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12487         here as on other archs.
12488
12489 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12490
12491         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12492
12493 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12494
12495         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12496         
12497         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12498
12499         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12500         instrument_prolog; Add memory_barrier instruction.
12501
12502 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12505
12506 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12507
12508         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12509
12510         * aliasing.c inssel.brg: Fix warnings.
12511
12512         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12513         could skip initialization of some parts of memory.
12514
12515         * mini.c mini-ia64.c: Fix warnings.
12516
12517         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12518
12519 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12522         a crash seen on sparc.
12523
12524         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12525         
12526         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12527
12528 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12529
12530         * mini-ops.h: Add s390_backchain instruction
12531
12532         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12533
12534         * cpu-s390.md: Add s390_backchain instruction
12535
12536         * mini-s390.c: Significant ABI changes
12537
12538         * mini-s390.h: Cater for zero length structures
12539
12540 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12541
12542         * mini-s390.c: ABI fixes
12543
12544         * inssel-s390.brg: Remove debug statements
12545
12546         * cpu-s390.md: Fix length of ATOMIC_xx operations
12547
12548 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12549
12550         * basic-float.cs: Add float<->long conversion tests.
12551
12552 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12553
12554         * mini-s390.c: Fix LOCALLOC processing.
12555
12556         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12557
12558 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12559
12560         * iltests.il: Add tests for some opcodes not covered by the other
12561         tests.
12562
12563 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12564
12565         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12566         register loading for Tail processing; Correct trace output.
12567
12568         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12569
12570         * cpu-s390.md: Correct size of jmp instruction. 
12571
12572 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12573
12574         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12575
12576 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12577
12578         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12579           Bring s390 up to current level.
12580
12581 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12582
12583         * generics.2.cs: Disable the newly added tests as they do not work yet.
12584         
12585         * generics.2.cs: Add valuetype tests.
12586
12587 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12588
12589         * basic-long.cs: Add i4->u8 test.
12590
12591         * objects.cs: Add tests for JIT intrinsic.
12592
12593         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12594         optimizations lost by a mistake.
12595
12596 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * basic-long.cs: Remove a test moved to objects.cs.
12599
12600         * arrays.cs: Add more array tests.
12601
12602 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12603
12604         * arrays.cs: Add new tests for multi-dimensional arrays.
12605
12606 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12607
12608         * Makefile.am (test_sources2): Add generics.2.cs.
12609         (EXTRA_DIST): Add test_sources2.
12610
12611 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12612
12613         Support for boxing and unboxing nullable types as well as the
12614         isinst operation on nullables, per the CLI ammendment.
12615
12616         * inssel.brg (CEE_ISINST): Special case for nullable
12617
12618         * mini.c (handle_unbox_nullable): new method
12619         (handle_box): Special case for nullable types
12620         (mono_method_to_ir): Call handle_unbox_nullable in correct
12621         places.
12622
12623         * generics.2.cs: New test suite
12624
12625         * Makefile.am: Support for regression tests with generics.
12626
12627 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12628
12629         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12630         allocated to registers. Fixes #76800.
12631
12632 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12633
12634         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12635
12636 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12637
12638         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12639         of platforms.
12640
12641 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12644         objects.cs.
12645
12646         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12647         
12648         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12649 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12650
12651         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12652         single precision before storing to a single precision location.
12653
12654 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12655
12656         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12657
12658 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12661         correct files.
12662
12663         * basic.cs: Remove test_0_byte_compares test which was moved to
12664         objects.cs a long time ago.
12665
12666 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12667
12668         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12669
12670 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12671
12672         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12673         handlers are called.
12674
12675         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12676         throwing code.
12677
12678          * mini-ia64.c: Add support for the throw->branch exception 
12679         optimization.   
12680
12681         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12682
12683 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12684
12685         * mini.c: Enabled "fastpath" deadce :-)
12686         
12687 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12688
12689         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12690         alias analysis pass to support it.
12691         * mini.h: Likewise.
12692         * ssa.c: Likewise.
12693         * liveness.c: Likewise (liveness computation can use aliasing
12694         information to be more accurate).
12695         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12696         moreover made so that "--compile-all" uses the given optimization
12697         flags and not the default ones.
12698         * aliasing.c: Alias analysis (new file).
12699         * aliasing.h: Likewise.
12700         * Makefile.am: added "aliasing.c" and "aliasing.h".
12701         
12702 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12705         OP_L opcodes.
12706
12707 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12710         fp >= end_of_stack exit condition, as it is not needed, and it might
12711         become true for fp eliminated frames.
12712
12713 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12714
12715         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12716         coded offsets.
12717
12718 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12719
12720         * mini-arm.c: fixed alignment of doubles/longs to match
12721         the C ABI (bug #76635).
12722
12723 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12724
12725         * aot.c: fix compilation with --enable-minimal=aot.
12726
12727 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini-arm.c: fixed compatibility with the new
12730         floating point emulator package for compares.
12731
12732 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12733
12734         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12735
12736 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12737
12738         * mini-exceptions.c (print_stack_frame): Output to stderr.
12739         (mono_handle_native_sigsegv): Ditto.
12740
12741 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12742
12743         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12744         OP_LCONV_TO_OVF_I implementation.
12745
12746         * mini-amd64.c: Add support for the throw->branch exception 
12747         optimization.
12748
12749         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12750         when the catch clause catches a more general exception, i.e. Object.
12751
12752 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * cpu-ia64.md: Remove unused opcodes.
12755
12756         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12757         specific defines for architectures defining USE_SIGACTION.
12758
12759         * mini-ia64.c: Fix some warnings.
12760
12761         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12762         version seemed to skip a frame.
12763
12764 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12765
12766         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12767         only calls which are made to native code use this flag.
12768
12769 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12770
12771         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12772         varargs methods as well.
12773         
12774         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12775         which have save_lmf set. Reorganize methods prologs a bit.
12776
12777         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12778         debugger to the proper place.
12779
12780 2005-10-29  Martin Baulig  <martin@ximian.com>
12781
12782         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12783         when running inside the debugger until the debugger has support
12784         for it.
12785
12786 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini.h: Fix a warning.
12789
12790 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12791
12792         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12793         we expose publicly, this returns the string.
12794
12795 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12796
12797         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12798         with fp elimination.
12799
12800 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12803         native stacktrace using the glibc 'backtrace' function if available.
12804
12805 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12806
12807         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12808
12809         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12810         handle SIGSEGVs received while in native code.
12811
12812         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12813         code, call mono_handle_native_sigsegv which will abort the runtime
12814         after printing some diagnostics, instead of converting it into a
12815         confusing NullReferenceException.
12816
12817 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * cpu-pentium.md: Remove unused opcodes.
12820
12821 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12822
12823         * mini-amd64.h (MonoLMF): Add rsp field.
12824
12825         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12826         the lmf too.
12827
12828 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12829
12830         * mini-codegen.c (get_register_spilling): Fix some warnings.
12831
12832 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12833
12834         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12835         elimination during exception handling. Enable fp elimination by
12836         default.
12837
12838         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12839         elimination.
12840
12841 2005-10-16  Martin Baulig  <martin@ximian.com>
12842
12843         * mini-exceptions.c
12844         (mono_debugger_run_finally): New public method for the debugger.
12845
12846 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * debug-mini.c (mono_debug_init_method): Fix warning.
12849
12850         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12851         the 'exname' parameter const to fix some warnings.
12852
12853 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12854
12855         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12856         introduced by the previous patch.
12857
12858 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12859
12860         * basic-float.cs: Add test for precision of float arithmetic.
12861
12862         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12863         when loading/storing single values from/to memory.
12864
12865         * mini.c (mono_jit_compile_method_with_opt): Create the function
12866         pointers in the correct domain.
12867
12868 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12869
12870         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12871         introduced by previous patch.
12872         
12873         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12874         when out_filter_idx is NULL.
12875
12876         * mini-exceptions.c: Don't run filter clauses twice during exception
12877         handling. Fixes #75755.
12878
12879 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * aot.c: Add support for ldflda wrappers.
12882
12883         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12884         #75902.
12885
12886 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12887
12888         * mini.c, mini.h: do not consider exception handlers blocks when
12889         setting up interface variables.
12890
12891 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12892
12893         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12894
12895 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12898         causes a regression.
12899
12900         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12901
12902 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12903
12904         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12905         of the OP_P definitions.
12906
12907         * TODO: Add a proposal for dealing with the CEE/OP mess.
12908
12909         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12910         optimizations from the x86 port.
12911
12912         * cpu-amd64.md: Ditto.
12913
12914         * basic.cs basic-long.cs: Add tests.
12915
12916 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12917
12918         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
12919         Patrik Torstensson's implementation of my exception-handling
12920         optimization idea, when the exception object is not used
12921         (bug #62150).
12922
12923 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12924
12925         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12926         of the mul_imm optimizations from the old jit.
12927
12928 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12929
12930         * mini.c, liveness.c: patch by Patrik Torstensson and
12931         Zoltan Varga to improve performance in methods with
12932         exception clauses.
12933
12934 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12935
12936         * driver.c: Remove 'Globalization' entry from --version.
12937
12938 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12939
12940         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12941         there is a profiler interested in JIT events.
12942
12943         * aot.c: Load profile files produced by the AOT profiling module, and
12944         reorder methods based on the profiling info. Add a 'method_order' table
12945         to the AOT file to make mono_aot_find_jit_info work with the reordered
12946         methods.
12947
12948         * mini.h: Bump AOT file version info.
12949
12950 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12951
12952         * mini-arm.h: work around what looks like a gcc bug when optimizations
12953         are enabled.
12954
12955 2005-09-28  Raja R Harinath  <rharinath@novell.com>
12956
12957         * Makefile.am (AM_CFLAGS): Don't use += to append inside
12958         conditionals.  Use ...
12959         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
12960
12961 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
12962
12963         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
12964         to determine the amount of memory to copy when passing valuetypes.
12965
12966         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
12967         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
12968
12969 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
12970
12971         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
12972         information about aot.
12973
12974 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12975
12976         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12977         macros. This will allow a deadlock debugger to easily be plugged
12978         in.
12979
12980 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
12981
12982         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
12983
12984 2005-09-27  Raja R Harinath  <rharinath@novell.com>
12985
12986         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
12987         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
12988         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
12989         ($(arch_built)) [CROSS_COMPILING]: Error out.
12990
12991 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12992
12993         * aot.c: Add support for the no_special_static flag for classes.
12994
12995 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12996
12997         * Reapply reverted patches.
12998
12999         * *: Revert r50174 as well.
13000
13001         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13002
13003 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13004
13005         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13006
13007 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13008
13009         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13010         part of the SIG_HANDLER_SIGNATURE.  
13011
13012 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13015         statistics.
13016
13017         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13018         introduced by previous patch.
13019
13020 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13023         saved registers too.
13024
13025         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13026         upon the information returned by get_call_info ().
13027         
13028         * mini-x86.c (add_float): Fix stack size calculation.
13029         (mono_arch_call_opcode): Rewrite this so it works based up the
13030         information returned by get_call_info ().
13031         (mono_arch_get_this_vret_args): Ditto.
13032
13033 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13034
13035         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13036         in cinfo to determine the registers which need to be used.
13037
13038 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13039
13040         * driver.c (mono_main): Add --server and --desktop flags. 
13041
13042 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13043
13044         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13045         registers as global registers.
13046
13047         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13048         longer needed with the new register allocator.
13049
13050         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13051
13052         * cpu-ia64.md: Remove unused opcodes.
13053         
13054         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13055         
13056 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13057
13058         * cpu-amd64.md: Remove unused opcodes.
13059
13060         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13061         needed with the new register allocator.
13062
13063         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13064         reg-reg moves.
13065
13066 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13067
13068         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13069
13070 2005-09-16  Martin Baulig  <martin@ximian.com>
13071
13072         * exceptions-amd64.c
13073         (throw_exception): Don't call mono_debugger_throw_exception() if
13074         we're a rethrow - see the FIXME in the code.
13075
13076 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13077
13078         * mini.c (mono_init_exceptions): This only works on some architectures.
13079         
13080 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13081
13082         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13083         on ia64.
13084
13085         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13086
13087         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13088         now in mini-exceptions.c.
13089
13090 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13091
13092         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13093         now in mini-exceptions.c.
13094
13095 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13098         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13099
13100         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13101         code into mini-exceptions.c. Add some assertions to it.
13102
13103 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13106         (<software@solmersa.com>). Fix as errors on windows.
13107
13108 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13109
13110         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13111         method info into the LMF.
13112
13113 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13114         
13115         * mini-ia64.c: Add proper unwind info for method epilogs.
13116
13117         * exceptions-ia64.c: Add some code to help debugging.
13118         
13119         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13120
13121         * mini-exceptions.c: Fix warning.
13122
13123 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13124
13125         * mini.c: Really fix build.
13126
13127         * mini-x86.c mini-amd64.c: Fix build.
13128
13129 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13130
13131         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13132
13133         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13134         some Interlocked methods as intrinsics.
13135
13136         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13137         for Thread methods as well.
13138
13139         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13140
13141         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13142
13143         * mini-ia64.c mini-x86.c mini-amd64.c 
13144         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13145         OP_MEMORY_BARRIER.
13146         
13147         * mini.c (mono_init_exceptions): Fix build breakage.
13148
13149 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13152         of instructions. Use the new ia64_unw_op macros for emitting unwind
13153         info.
13154
13155         * mini.c (mono_init_exceptions): Initialize exception handling
13156         related trampolines at startup.
13157
13158 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13159
13160         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13161
13162 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini.c: Handle type loading errors gracefully during compilation and
13165         throw the appropriate exception.
13166
13167 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13168
13169         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13170         for the mono binary.
13171
13172 2005-09-09  Martin Baulig  <martin@ximian.com>
13173
13174         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13175         the release.
13176
13177 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13178
13179         * mini-arm.h: use emulation for conv.r.un for the release.
13180
13181 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13182
13183         * mini-arm.c, objects.cs: more fixes and tests for them.
13184
13185 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13186
13187         * mini-arm.c: align structures to at least 4 bytes to be able
13188         to keep our current optimized memcpy.
13189
13190 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13191
13192         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13193
13194 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13195
13196         * mini.c: ignore SIGPIPE.
13197
13198 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13201
13202         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13203
13204 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13207
13208 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13209
13210         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13211         exception handling support.
13212         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13213         patch by Brian Koropoff <briank@marakicorp.com>).
13214
13215 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13216
13217         * mini.c: revert another 'optimization' which breaks when
13218         items on the eval stack need to be saved at a basic block end
13219         (bug #75940).
13220
13221 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13222
13223         * jit-icalls.c: for arrays, ensure we always provide
13224         lower bounds.
13225
13226 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13227
13228         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13229         
13230         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13231
13232 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13233
13234         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13235         arguments in their original register.
13236
13237 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13238
13239         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13240         memset/memcpy.
13241
13242         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13243         when ssapre is enabled.
13244
13245         * inssel-long.brg: Fix bug in previous patch.
13246
13247         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13248         multiplication by a constant.
13249
13250 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13251
13252         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13253         icc.
13254
13255         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13256         saving registers.
13257
13258 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13259
13260         * inssel-arm.brg: apply changes tested by Brian Koropoff
13261         <briank@marakicorp.com>.
13262
13263 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13266         
13267 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13268
13269         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13270         to the same register if dreg is just a base register.
13271         (print_ins): Improve printing of membase opcodes.
13272
13273         * inssel-x86.brg: Add optimized ldind(reg) rules.
13274
13275         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13276
13277 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13278
13279         * mini.c: when running under valgrind, set the stack bottom for
13280         the GC at the actual approximate stack for the app (fixes running
13281         mono with valgrind).
13282
13283 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13284
13285         * mini.c: do no break at the first valuetype to init found
13286         (fixes bug #75791).
13287
13288 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13289
13290         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13291
13292 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13293
13294         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13295
13296 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13297
13298         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13299
13300 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13301
13302         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13303
13304         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13305         code.
13306
13307         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13308         code.
13309
13310         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13311         methods.
13312
13313 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13314
13315         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13316
13317 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13318
13319         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13320         in the tail recursion optimization.
13321
13322         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13323         debug info into the assembly file.
13324
13325         * iltests.il: Add test for filter regions.
13326
13327         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13328         initial stack of filter regions. Fixes #75755.
13329
13330 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13331
13332         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13333         stack requirements.
13334
13335 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13336
13337         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13338         the check for an already compiled method on non-ia64 platforms.
13339         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13340         proper domain.
13341
13342         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13343
13344         * inssel-x86.brg: Add some optimized call rules.
13345
13346 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13347
13348         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13349         method here.
13350
13351         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13352         mono_arch_patch_delegate_trampoline.
13353
13354         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13355
13356         * mini-trampolines.c: Fix build.
13357
13358         * mini-amd64.h: Add delegate trampolines.
13359
13360         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13361
13362         * inssel-amd64.brg: Add optimized call rules.
13363         
13364         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13365
13366         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13367
13368 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13369
13370         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13371         change.
13372
13373         * mini-ia64.c: Remove LMF fixmes.
13374
13375         * mini-ia64.h: Remove most fields from LMF.
13376
13377         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13378
13379         * mini-trampolines.c: Add support for IA64 function descriptors.
13380
13381         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13382         for IA64 function descriptors.
13383
13384 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13385
13386         * tramp-arm.c: patch the vtable for virtual calls. Added
13387         support code to register/unregister the LMF.
13388         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13389         more LMF work.
13390
13391 2005-08-19  Dick Porter  <dick@ximian.com>
13392
13393         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13394         bit value if needed.
13395
13396 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13397
13398         * mini.c (mini_get_method): Move handling of wrapper data here.
13399
13400         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13401
13402         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13403         virtual.
13404
13405         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13406         bblock->code does not remain empty.
13407
13408 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13409
13410         * arrays.cs: Add regression test for #75832.
13411
13412         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13413         rules. Fixes #75832.
13414
13415         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13416         instruction scheduling.
13417
13418 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13419
13420         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13421
13422 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13423
13424         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13425
13426         * mini-codegen.c: Fix VC build.
13427
13428         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13429
13430 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13431
13432         * mini.h: fix signature for mono_register_opcode_emulation.
13433
13434 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13435
13436         * mini.c: Get rid of most of the helper_sig_... constants using
13437         mono_create_icall_signature ().
13438
13439 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13440
13441         * jit-icalls.c (helper_ldstr): New helper function.
13442
13443         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13444
13445         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13446         throw, load the string using a helper call instead of creating a string object.
13447
13448         * aot.c: Update after LDSTR changes.
13449
13450         * mini.h: Bump AOT file version.
13451         
13452         * aot.c: Save class size info into the AOT file. Print more statistics during
13453         compilation.
13454
13455         * mini.h: Bump AOT file version.
13456
13457         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13458         ordering of disasm cases. Fixes #74957.
13459
13460 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13461
13462         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13463         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13464         the generic code needed for the ARM port.
13465
13466 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13467
13468         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13469         inssel-arm.brg: more ARM features and fixes.
13470
13471 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13472
13473         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13474         ARM port work in progress.
13475
13476 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13477
13478         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13479
13480         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13481
13482         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13483
13484         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13485
13486         * *-ia64.*: Ongoing IA64 work.
13487         
13488         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13489
13490 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13491
13492         * TODO: Remove out-of-data todo stuff.
13493
13494         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13495         dead code.
13496
13497         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13498
13499         * mini.h: Bump corlib version.
13500
13501 2005-07-27  Martin Baulig  <martin@ximian.com>
13502
13503         * mini-codegen.c
13504         (create_copy_ins): Added `const unsigned char *ip' argument; set
13505         `copy->cil_code' from it.
13506
13507 2005-07-27  Martin Baulig  <martin@ximian.com>
13508
13509         * mini-exceptions.c (mono_handle_exception): Don't call
13510         mono_debugger_handle_exception() for filters.
13511
13512 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13513
13514         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13515         as well.
13516
13517 2005-07-26  Martin Baulig  <martin@ximian.com>
13518
13519         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13520
13521         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13522         helper_compile_generic_method() if the method is actually virtual
13523         and non-final.
13524
13525 2005-07-26  Martin Baulig  <martin@ximian.com>
13526
13527         * mini.c
13528         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13529         public; this is now accessed directly by the debugger.
13530         (mono_generic_trampoline_code): Removed.
13531
13532         * debug-mini.c
13533         (mono_debug_init_method): Also add interncalls and wrappers.
13534
13535 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13536
13537         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13538
13539 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13540
13541         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13542
13543 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13544
13545         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13546
13547 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13548
13549         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13550         getting TLS offsets on AMD64 too.
13551
13552 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13553
13554         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13555
13556 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13557
13558         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13559         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13560
13561 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13562
13563         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13564
13565         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13566         to mini.c.
13567
13568         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13569         mono_sparc_is_virtual_call ().
13570         
13571         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13572
13573         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13574         trampoline parameters.
13575
13576         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13577         
13578         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13579         to mono_arch_get_vcall_slot_addr.
13580
13581         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13582         trampoline code.
13583
13584         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13585
13586 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13587
13588         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13589
13590 2005-07-19  Martin Baulig  <martin@ximian.com>
13591
13592         * exceptions-amd64.c (throw_exception): Call
13593         mono_debugger_throw_exception() here like we're doing it on i386.
13594
13595 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13596
13597         * mini-ia64.c: Add optimized TLS access support.
13598
13599 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13600
13601         * mini-exceptions.c: Ongoing IA64 work.
13602
13603         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13604
13605         * mini.c: Use the default optimization set when embedding. Fixes
13606         #75194.
13607
13608 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13609
13610         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13611         of trampolines to a separate file.
13612
13613         * mini-trampolines.c: New file.
13614
13615         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13616         separate file.
13617         
13618         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13619         amd64/ia64 code.
13620
13621         * mini-codegen.c: Fix cygwin build.
13622
13623 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13624
13625         * mini.c: Add some minor changes needed by the IA64 port.
13626
13627         * *-ia64.*: Ongoing IA64 work.
13628
13629 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13630
13631         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13632         trampolines into arch-independent and arch-dependent parts.
13633
13634         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13635
13636 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13637
13638         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13639
13640         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13641         the xp-regalloc-branch for amd64.
13642
13643         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13644         xp-regalloc-branch for x86.
13645
13646 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13647
13648         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13649
13650 2005-07-06  Martin Baulig  <martin@ximian.com>
13651
13652         * mini.c
13653         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13654         (mono_jit_runtime_invoke): Likewise.
13655
13656 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13657
13658         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13659         on x86 too.
13660         
13661         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13662         without loading their metadata. Reorganize the file format so exception handling+
13663         debug info is kept separate from normal method info. Create MonoJitInfo 
13664         structures for methods lazily.
13665
13666         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13667         loading metadata.
13668         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13669
13670         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13671
13672         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13673         in AOT code.
13674
13675         * mini.h: Bump AOT file version.
13676
13677 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13678
13679         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13680
13681 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13682
13683         * Makefile.am (check-local): Call semdel-wrapper.
13684
13685 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13686
13687         * mini-x86.c: Revert the last change as it seems to break the build..
13688
13689 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13690
13691         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13692         
13693         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13694
13695 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13696
13697         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13698         outside of the macro, so strange stuff doesn't happen with gcc4
13699         (NEW_AOTCONST_TOKEN): Likewise.
13700
13701 2005-06-28  Martin Baulig  <martin@ximian.com>
13702
13703         * mini.c (mini_class_is_system_array): New static method; use this
13704         instead of `klass->parent == mono_defaults.array_class' everywhere
13705         since this also works for the new generic array class.
13706
13707 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13708
13709         * inssel.brg: Remove warnings.
13710
13711 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13712
13713         * mini-ia64.c: Ongoing IA64 work.
13714
13715         * basic-float.cs: Add float->i1 conversion test.
13716
13717         * iltests.il: Add conv.u4 test.
13718
13719 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13720
13721         * inssel-long.brg: Fix bug caused by last change.
13722
13723 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13724
13725         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13726         BSDs.  Allows the x86 JIT to work on OSX86
13727
13728 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13729
13730         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13731         u4->i8 conversion.
13732
13733         * mini-ia64.c: Ongoing IA64 work.
13734
13735 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13736
13737         * mini-ia64.c: Ongoing IA64 work.
13738
13739         * driver.c: Clean up jit_code_hash as well when using --regression.
13740
13741         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13742
13743         * basic-long.cs: Add tests for long->u4 conversion.
13744
13745 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13746
13747         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13748         that we do not depend on undefined C behavior: the order stuff
13749         gets evaluated within an expression. Fixes mono when compiled on
13750         GCC 4.
13751
13752 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13753
13754         * *-ia64.*: Ongoing IA64 work.
13755
13756         * aot.c: Lower memory usage while loading AOT methods.
13757
13758         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13759
13760         * mini.h: Bump AOT file format version.
13761
13762 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13763
13764         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13765
13766 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13767
13768         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13769         not on callee assembly). Fixed some comments.
13770
13771 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13772
13773         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13774         it gets proper disassembly.
13775         (emit_method_info): Remove some dead code.
13776
13777         * mini.c (mini_method_compile): Allways allocate the GOT var in
13778         mono_method_to_ir for emulating opcodes.
13779
13780 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13781
13782         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13783         before freeing the code memory. Fixes #74990.
13784
13785         * objects.cs: Add regression test for #74992.
13786
13787         * liveness.c: Extend live ranges of arguments to the beginning of the
13788         method. Fixes #74992.
13789
13790         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13791         so it points into the faulting instruction.
13792
13793 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13794
13795         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13796
13797         * *-ia64.*: Ongoing IA64 work.
13798
13799         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13800
13801 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13802
13803         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13804
13805         * *-ia64.*: Ongoing IA64 work.
13806
13807 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13808
13809         * basic-long.cs: Add tests for add/sub.ovf.
13810
13811         * basic.cs: Add tests for sub.ovf.
13812
13813         * *-ia64.*: Ongoing IA64 work.
13814
13815 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13816
13817         * *-ia64.*: Ongoing IA64 work.
13818
13819         * basic.cs: Add conv.ovf.i4.un test.
13820
13821 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13822
13823         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13824         
13825 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13826
13827         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13828
13829 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13830
13831         * *-ia64.*: Ongoing IA64 work.
13832
13833 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13834
13835         * trace.[ch]:
13836         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13837
13838 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13839
13840         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13841
13842 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13843
13844         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13845
13846         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13847         of a call is callable by a near call.
13848
13849 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13850
13851         * mini-ia64.c: Ongoing IA64 work.
13852
13853 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13854
13855         * genmdesc.c: Make the generated array non-static.
13856
13857         * inssel-long.brg: Fix LSHR_IMM rule.
13858
13859         * *-ia64.*: Ongoing IA64 work.
13860
13861         * *-ia64.*: Ongoing IA64 work.
13862
13863 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13864
13865         * *-ia64.*: Ongoing IA64 work.
13866
13867         * *-ia64.*: Ongoing IA64 work.
13868         
13869         * mini-ia64.c: Ongoing IA64 work.
13870
13871         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13872
13873 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13874
13875         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13876         
13877         * objects.cs basic-long.cs: Move some tests to objects.cs.
13878
13879 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13880
13881         * *-ia64.*: Ongoing IA64 work.
13882
13883         * iltests.il: Add a new test.
13884
13885         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13886         newobj. Fixes #75042.
13887
13888 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13889
13890         * *-ia64.*: Ongoing IA64 work.
13891         
13892         * *-ia64.*: Ongoing IA64 work.
13893         
13894         * *-ia64.*: Ongoing IA64 work.
13895
13896         * basic.cs objects.cs: Move tests accessing static variables as well.
13897
13898         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13899
13900 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13901
13902         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13903
13904         * driver.c: Always print failed tests.
13905
13906         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13907         frame pointer.
13908
13909         * *ia64*: Ongoing IA64 work.
13910
13911 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13912
13913         * basic.cs: Add tests for add.ovf. Fix warnings.
13914
13915 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13916
13917         * driver.c (mono_main): Avoid crash if no argument is passed to
13918         --break;  Do not use g_error, but f_printf.   And fix all other
13919         ocurrences of the same crash.
13920
13921 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13922
13923         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13924         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13925         Fixes #74742.
13926
13927 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13928
13929         * *-ia64.*: Add beginnings of IA64 backend.
13930
13931         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13932
13933 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13934
13935         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13936         Fixes #74925.
13937
13938         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13939
13940         * mini-amd64.c: Fix a warning.
13941
13942 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13943
13944         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13945         in float_neg. Fixes #74897.
13946
13947         * mini-amd64.c (emit_call): Fix another near call bug.
13948
13949 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13950
13951         * declsec.c: Keep the appdomain information in the structure. Added a 
13952         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
13953         value gets overwritten).
13954         * declsec.h: Set the default MonoArray for the the stack to 6. Added
13955         an MonoAppDomain member to MonoSecurityFrame.
13956         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
13957         used in the stack walk. Now use a MonoArray which grow (double) when
13958         it gets full.
13959
13960 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13961
13962         * mini.c: Re-enabled runtime cleanup, since running threads should
13963         now properly stop when exiting.
13964
13965 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13966
13967         * mini-codegen.c: New file contaning the arch-independent local
13968         register allocator. Not used by any architectures yet.
13969
13970         * mini.h linear-scan.c: Merge some changes from the 
13971         mini-xp-local-regalloc branch.
13972
13973 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13974
13975         * mini-amd64.c (emit_call): Fix calls to native functions when the
13976         runtime is compiled as a shared library. Fixes #74756.
13977
13978         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
13979         on a literal field. Fixes #74751.
13980
13981 2005-04-25  Raja R Harinath  <rharinath@novell.com>
13982
13983         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
13984
13985 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13986
13987         * objects.cs: Add missing null casting test.
13988
13989 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13990
13991         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
13992         in wrapper methods. Also rename 'address' variable to 'offset'.
13993
13994 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13995
13996         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
13997         warnings.
13998         
13999         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14000
14001         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14002         work on windows.
14003
14004 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14005
14006         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14007
14008 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14009
14010         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14011         just the last bytes.
14012
14013 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14014
14015         * aot.c (mono_compile_assembly): Fix warning.
14016
14017         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14018         by the _MSC_VER stuff.
14019
14020 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14021
14022         * inssel-long.brg: Fix #74588.
14023
14024         * cpu-amd64.md: Fix #74591.
14025
14026         * iltests.il: Add new regression tests.
14027
14028 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14029
14030         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14031         valuetype.
14032
14033 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14034
14035         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14036
14037         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14038         from Bill Middleton <flashdict@gmail.com>.
14039
14040 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14041
14042         * arrays.cs: Add new regression test. Fix warnings.
14043
14044 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14045
14046         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14047         and leakage in CKFINITE.
14048
14049         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14050         this to a null op since it is called on amd64 too.
14051
14052         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14053
14054         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14055         body since this is not used on amd64.
14056         
14057         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14058
14059         * mini-amd64.c: Remove obsolete fixmes.
14060
14061         * mini.c (print_method_from_ip): Fix debugging support.
14062
14063 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14064
14065         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14066         so that expressions that don't give much gain are not reduced.
14067         * ssapre.h: Likewise.
14068
14069 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14070
14071         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14072
14073         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14074
14075         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14076
14077 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14078
14079         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14080
14081         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14082
14083 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14084
14085         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14086         stack touching.
14087
14088         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14089
14090         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14091
14092         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14093
14094         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14095         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14096
14097         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14098
14099         * mini-x86.c: Fix up stack overflow handling.   
14100
14101         * exceptions.cs: Add new regression test.
14102
14103 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14104
14105         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14106         mono_jit_thread_attach.
14107
14108         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14109
14110 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14111
14112         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14113         avoid calling constructors using callvirt.
14114
14115         * inssel.brg: Fix #74073.
14116
14117 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14118
14119         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14120         compilation with non-GCC compilers.
14121         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14122         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14123
14124 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14125
14126         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14127         klass->interface_offsets (will likely fix bug#74073).
14128
14129 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14130
14131         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14132
14133 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14134
14135         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14136         to amd64_div_reg_size ().
14137         
14138         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14139
14140 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14141
14142         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14143
14144 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14145
14146         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14147
14148 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14149
14150         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14151         
14152         * mini.c (mono_precompile_assembly): Load and precompile referenced
14153         assemblies as well. Fixes #74015.
14154
14155 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14156
14157         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14158
14159 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14160
14161         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14162         a lot of checks and (anyway) permissions cannot work until corlib is 
14163         loaded.
14164
14165 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14166
14167         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14168
14169 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14170
14171         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14172         calls (fixes bug#72824).
14173
14174 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14175
14176         * mini.c: fix tail recursion elimination (see test in bug#73936).
14177
14178 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14181         some fp functions in sse2 mode.
14182
14183 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14184
14185         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14186
14187 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14188
14189         * mini.h mini.c: Add mono_get_jit_tls_key ().
14190
14191         * mini-x86.c: Enable fast TLS support on windows.
14192
14193 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14194
14195         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14196         * mini.c: Check for p/invoke method when generating code. If a
14197         p/invoke method, or it's class, isn't decorated with [Suppress
14198         UnmanagedCodeSecurity] then generate code to call System.Security.
14199         UnmanagedDemand (only if the security manager is active).
14200
14201 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14202
14203         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14204         last change as it seems to cause strange crashes.
14205         
14206 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14207
14208         * *.c: handle unsafe function pointers where needed.
14209
14210 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14211
14212         * mini.c (mono_jit_free_method): Remove the fixme too.
14213
14214 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14215
14216         * mini.c: As discussed, make the code actually free the delegate
14217         thunk now, to enable the debugging of delegate problems, use
14218         MONO_DEBUG=1 when running Mono. 
14219
14220         This takes also care of parts of the leaks as seen by Joe.
14221
14222 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14223
14224         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14225         thread_tls_offset calculation.
14226
14227 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14228
14229         * declsec.c: Reworked linkdemand checks for icall. The previous code
14230         was using the declaration code (untrusted) and didn't work as expected
14231         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14232         specific case.
14233
14234 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14235
14236         * iltests.il: Add new localloc test.
14237
14238         * mini-amd64.c: Handle large stack allocations the same way as on
14239         windows if stack overflow handling is working.
14240         
14241         * mini-amd64.c: Allocate the signal stack using mmap.
14242
14243         * mini.c (sigsegv_signal_handler): Fix reading of context.
14244
14245         * mini-exceptions.c: Fix up stack overflow handling.
14246
14247         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14248
14249         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14250
14251         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14252
14253         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14254
14255         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14256         tramp_init functions as they are no longer needed.
14257
14258 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14261         
14262         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14263
14264         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14265         
14266         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14267         support that now.
14268
14269         * mini-ops.h: Add OP_LMUL_IMM.
14270
14271         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14272         long mul/div opcodes as intrinsic.
14273
14274         * mini-amd64.c (emit_call): Handle the case when the callee might be
14275         an AOT method.
14276
14277 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14278
14279         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14280         extra safe.
14281         
14282         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14283
14284         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14285
14286 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14287
14288         * mini.c (mono_codegen): Don't leak here, to help people running
14289         monogrind.
14290
14291 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14292
14293         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14294         conversions in sse2 mode.
14295
14296         * basic-float.cs: Add regression test.
14297         
14298         * mini-amd64.c: Reenable sse2.
14299
14300 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14301
14302         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14303
14304 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14305
14306         * driver.c: Copyright text should include 2005.
14307         
14308 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14309
14310         * cpu-amd64.md (load_membase): Fix more max lengths.
14311
14312 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14313
14314         * cpu-amd64.md (load_membase): Fix max length.
14315
14316         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14317
14318         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14319
14320         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14321         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14322
14323         * basic-float.cs: Add rounding regression test.
14324
14325         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14326
14327 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14328
14329         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14330         structures in registers for pinvoke wrappers.
14331
14332 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14333
14334         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14335
14336 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14337
14338         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14339         wrapper to mono_jit_thread_attach.
14340
14341         * mini.c (mini_jit_thread_attach): New jit icall.
14342
14343         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14344         native->managed wrappers.
14345
14346         * exceptions.cs: Add new regression test.
14347
14348         * mini.c (optimize_branches): Check regions in the cbranch to throw
14349         block case as well. Fixes #73242.
14350
14351 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14352
14353         * mini.c: thread safety fixes.
14354
14355 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14356
14357         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14358         patching stuff, since delegates use jump trampolines so there is
14359         no caller.
14360
14361         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14362         jump trampolines.
14363         
14364         * tramp-amd64.c: Fix build.
14365
14366         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14367         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14368
14369         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14370         Rename this to mono_arch....
14371         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14372
14373         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14374
14375         * mini-amd64.c (emit_call): If both the caller and the callee is
14376         guaranteed to have 32 bit addresses, emit a normal call.
14377
14378         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14379
14380         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14381         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14382         method_ptr inside delegates.
14383
14384 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14387         invalidated. Fixes #73001.
14388
14389         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14390
14391         * mini-x86.c: Only use stdcall for pinvokes on windows.
14392
14393 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14394
14395         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14396         * mini-x86.c: remove unreliable __thread var offset detection,
14397         use the correct accessors and enable by default.
14398
14399 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14400
14401         * mini.c (mono_jit_free_method): Fix memory leak.
14402
14403 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14404
14405         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14406
14407 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14408
14409         * cpu-amd64.md: Fix lengths of atomic opcodes.
14410
14411 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14412
14413         * driver.c: try to not imply using ICU is any good.
14414
14415 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14416
14417         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14418         functions as inline ops.
14419
14420         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14421         some Interlocked functions as inline ops.
14422
14423         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14424
14425         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14426
14427         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14428
14429         * mini.c: Add support for OP_NOT_TAKEN.
14430
14431         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14432         structures in registers for pinvoke wrappers.
14433
14434         * mini-amd64.c: Fix warnings.
14435
14436 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14437
14438         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14439
14440         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14441
14442         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14443         address instead of loading the address from it.
14444
14445         * mini-x86.c: Add support for returning small structs in registers
14446         on Win32. Fixes part of #70864.
14447         
14448 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14449
14450         * trace.c (get_token): Improve error checking.
14451
14452 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14453
14454         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14455
14456 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14457  
14458         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14459         it can be reused for MonoClass.
14460         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14461         _LINKDEMAND.
14462
14463 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14464
14465         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14466         instead of a MonoReflectionMethod. The method information wasn't used
14467         when displaying SecurityException details (but will be now).
14468
14469 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14470
14471         * Makefile.am : windows build fix.
14472
14473 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14474
14475         * iltests.il: Add new regression test.
14476
14477         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14478         #72522.
14479
14480 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14481  
14482         * mini.c: Moved linkdemand check into helper function check_linkdemand
14483         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14484         LDFTN, LDVIRTFTN).
14485
14486 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14487
14488         * declsec.c: Added statistics counter for different kinds of 
14489         LinkDemands.
14490         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14491         (and commented) declaration.
14492         * mini.c: Added statistics counter for security Demand code 
14493         generation. Added display of security statistics.
14494
14495 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14496
14497         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14498         Fix compilation errors under gcc-2.95.
14499
14500 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14501
14502         * mini.c, driver.c: Use the new jit trampoline hashtable
14503
14504 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14505
14506         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14507
14508 2005-02-11  Martin Baulig  <martin@ximian.com>
14509
14510         * debug-mini.c (mono_debug_close_method): Free the line number array.
14511
14512 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14513
14514         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14515         icalls.
14516
14517         * mini.h: Bump AOT file format version. 
14518
14519 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14520
14521         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14522         APTC and P/Invoke.
14523         * declsec.h: Added macros to get/set lazyly initialized security 
14524         informations about assemblies. Added new enum for different type of
14525         possible LinkDemand violation. Added function to check LinkDemands.
14526         * mini.h: Added a field to MonoCompile to hold any security violation
14527         detected when JITting a method (so it can be thrown later).
14528         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14529         and CEE_CALLVIRT. Added code to throw exception at the end of
14530         mini_method_compile (note: the exception is unhandled right now).
14531
14532 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14533
14534         * mini.c, jit-icalls.c: use the managed implementation of
14535         memset for initobj and memset, to avoid managed <-> unmanaged
14536         transitions.
14537
14538 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14539
14540         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14541         optimization if it would need a GOT var.
14542
14543         * basic.cs: Add tests for constant propagation and switch statements.
14544
14545         * ssa.c: Fix out-of-range constant propagation and switch statements.
14546
14547 2005-02-09    <vargaz@freemail.hu>
14548
14549         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14550
14551 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14552
14553         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14554
14555 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14556
14557         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14558
14559 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14560
14561         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14562         arithmetic operations.
14563
14564 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14565
14566         * mini-ppc.c: add a workaround for broken user code that
14567         DllImports vararg functions with non-vararg signatures.
14568
14569 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14570
14571         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14572         meaningfull error message for assemblies written in Managed C++.
14573
14574         * tramp-amd64.c mini-amd64.h: Add support for 
14575         create_trampoline_from_token ().
14576
14577         * aot.c mini-x86.c abcremoval.c: Applied patch from
14578         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14579
14580 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14581
14582         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14583         which takes a MonoImage/token as parameter instead of a MonoMethod.
14584
14585         * aot.c: Use the new trampoline for initializing vtables.
14586
14587         * aot.c: Add support for ldfld/stfld_remote wrappers.
14588
14589         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14590         rules for compare <MEM>, IMM.
14591
14592         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14593
14594         * aot.c: Handle inherited finalizers correctly.
14595
14596 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14597
14598         * inssel.brg (stmt): Add a missing _setup_... ().
14599
14600         * aot.c: Save some parts of the class state to the AOT file and use it
14601         to recompute that state when a class is initialized.
14602
14603         * mini.c: Install AOT hooks into the runtime.
14604
14605         * mini.h: Bump AOT file format version.
14606         
14607         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14608         Fixes #72148.
14609
14610         * iltests.il: Add new test.
14611
14612 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini.c: fix typo.
14615
14616 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14617
14618         * mini.c: setup the statistical profiler in the thread attach
14619         callback to cope with the new single thread code.
14620
14621 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14622
14623         * mini-ppc.c: ensure we have enough room for the profiler
14624         calls (fixed bug#72084).
14625
14626 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14627
14628         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14629         it.
14630
14631 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14632
14633         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14634
14635 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14636
14637         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14638         to succesfully execute parrotbench).
14639         * ssapre.h: Likewise.
14640
14641 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14642
14643         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14644         variable for stores to method arguments (fixes a SSAPRE issue).
14645
14646 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini.c: handle value types in dup, fixes gen-112.cs.
14649
14650 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14651
14652         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14653         sequence for calls in dynamic methods to avoid thunks.
14654
14655 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14656
14657         * mini.c: correctly remove dynamic methods from the hashtable.
14658
14659 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14660
14661         * driver.c: Disabled SSAPRE until fix the bug that appears
14662         in IronPython's parrotbench.
14663
14664 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14665
14666         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14667
14668         * mini.c (mono_method_to_ir): Revert the previous change.
14669         
14670         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14671         when AOT compiling.
14672
14673         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14674         mono_jit_info_table_find () etc. when running under valgrind.
14675
14676         * inssel.brg: Fix warnings.
14677
14678         * mini-exceptions.c: Fix warnings.
14679
14680 2005-01-31  Martin Baulig  <martin@ximian.com>
14681
14682         * driver.c (compile_all_methods_thread_main): Don't try to compile
14683         generic methods or anything which has type parameters.
14684
14685 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14686
14687         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14688
14689         * TestDriver.cs: Add --verbose flags.
14690
14691         * graph.c ssa.c: Fix 64 bit warnings.
14692         
14693         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14694         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14695         Fix 64 bit warnings.
14696
14697         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14698         variable not spotted by gcc.
14699         
14700         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14701         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14702         X86_COMPARE_MEMBASE opcodes.
14703
14704         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14705
14706 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14707
14708         * *: MonoMethod->signature might be NULL now. You *MUST* use
14709         mono_method_signature.
14710
14711 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14712
14713         * driver.c (compile_all_methods_thread_main): Compile the methods
14714         without invoking cctors.
14715
14716 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14717
14718         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14719         * basic-calls.cs: test for the above.
14720
14721 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14722
14723         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14724         MonoJitInfo changes.
14725
14726 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14727
14728         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14729         eagerly if it contains dynamic methods.
14730         
14731         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14732
14733         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14734         trace, it is now computed by an icall from trace_ips.
14735         
14736         * mini-exceptions.c: Fix a warning.
14737
14738 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14739
14740         * mini-exceptions.c: don't bother getting stack trace info if
14741         it's not going to be used.
14742
14743 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14744
14745         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14746         ssapre-mini-ops.h.
14747
14748 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14749
14750         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14751
14752         * aot.c: Avoid calling mono_method_get_header () if not needed.
14753
14754         * mini.h: Bump AOT file format version.
14755         
14756         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14757
14758         * mini.c (mono_print_tree): Print more info for calls.
14759
14760 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14761
14762         * declsec.h: Remove warning by adding missing include for marshal.h
14763
14764 2005-01-26  Martin Baulig  <martin@ximian.com>
14765
14766         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14767         `ip' twice.
14768
14769 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14770
14771         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14772         flags.
14773
14774         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14775
14776         * aot.c (mono_compile_assembly): Fix a warning.
14777
14778 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14779
14780         * declsec.c: Look for security attributes on the original MonoMethod 
14781         (and not the wrapped one). This fix permissions on icalls.
14782
14783 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14784
14785         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14786
14787         * mini.c (mono_allocate_stack_slots): Add a fixme.
14788
14789         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14790
14791 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14792
14793         * inssel.brg: optimize casts of sealed types (more
14794         optimizations waiting for fixes in remoting).
14795
14796 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * inssel.brg (stmt): Add another dummy rule.
14799
14800         * driver.c: Fix warnings.
14801
14802         * driver.c (mono_main): If running under valgrind, instruct glib to use
14803         the system allocation functions so valgrind can track the memory
14804         allocated by the g_... functions.
14805
14806         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14807
14808         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14809
14810         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14811
14812         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14813         variables in try regions.
14814
14815         * mini.c (mini_method_compile): Don't disable optimizations on large
14816         methods when AOT compiling.
14817
14818         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14819         allocate stack slots. Not yet used.
14820
14821 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14822
14823         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14824
14825 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14826
14827         * mini-ppc.c: make the branch info relative as the code
14828         buffer can be reallocated.
14829
14830 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14831
14832         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14833         * driver.c: Removed the AOT/security restriction. Now initialize the
14834         security manager (in metadata) if --security is used.
14835         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14836         rather than the pointer to declarative security, when AOT is used.
14837
14838 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14839
14840         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14841         basic blocks, reduced intrinsic exception throwing code size.
14842
14843 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14844
14845         * driver.c (mini_usage): Reorder the usage screen.
14846
14847 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14848
14849         * mini.c (mono_resolve_patch_target): Fix warning.
14850
14851 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14852
14853         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14854         previous patch.
14855
14856         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14857
14858         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14859         breaks the amd64 build.
14860
14861         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14862         register allocation. Fixes #71454.
14863
14864         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14865
14866         * arrays.cs: Add new regression test.   
14867
14868 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14869
14870         * ssapre.c: Turned usage of snprintf to GString.
14871         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14872         (I left it on by mistake in my previous commit).
14873
14874 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14875
14876         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14877         on cond branch optimization (fixes bug# 71515).
14878
14879 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14880
14881         * abcremoval.c: Fixed bug 71062.
14882         * abcremoval.h: Likewise.
14883
14884 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14885
14886         * mini.c: Added a new functionality to optimize_branches, the removal
14887         of useless basic blocks, and fixed some problem in the removal of
14888         critical edges; some utility functions added for both purposes.
14889         * ssapre.c: Added complex expression support, and fixed bug 70637.
14890         * ssapre.h: Likewise.
14891         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14892         enabled in SSAPRE.
14893         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14894         * driver.c: Re-enabled SSAPRE.
14895
14896 2005-01-19  Martin Baulig  <martin@ximian.com>
14897
14898         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14899         the result of mono_get_method_constrained().
14900
14901 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14902
14903         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14904         manager.
14905
14906 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14907
14908         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14909         be detected.  Fixes #59296.
14910
14911 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14914         which can happen. Fixes #71361.
14915
14916 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14917
14918         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
14919         manager.
14920
14921 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14922
14923         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14924         appdomain-unload.exe to fail.
14925         
14926         * mini.c: Fix some memory leaks.
14927
14928 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14929
14930         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14931         Fixed bug and sped up some codepaths.
14932
14933 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * mini.c: Fix some memory leaks.
14936
14937         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14938         conversion.
14939
14940         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14941
14942         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14943         #71320.
14944
14945         * iltests.il: Add regression test for #71320.
14946
14947 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14948
14949         * mini.c (mono_codegen): Fix installation of profiler hooks.
14950
14951         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
14952
14953 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14954
14955         * mini.h, mini.c, cfold.c: optimize access to enum
14956         readonly fields, too. Eval conditional branches if possible
14957         to perform unreachable code removal in more cases.
14958
14959 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
14960
14961         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
14962
14963         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
14964         code manager.
14965
14966         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
14967         WinXP DEP. Fixes #71244.
14968
14969 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
14970
14971         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
14972
14973 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14974
14975         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
14976
14977 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14978
14979         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
14980         changes.
14981
14982         * mini.h: Bump AOT version.
14983
14984         * mini.h (MonoCompile): Change exvar to a hash table.
14985
14986         * mini.c: Allocate a separate exvar for each handler block.
14987
14988         * mini.c: Get rid of the computation of filter_lengths, its not needed.
14989
14990         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
14991         ex var with the pending exception and only throw if the two are equal.
14992         Fixes #68552.
14993         
14994         * exceptions.cs: Add tests for rethrow and nested catch clauses.
14995
14996         * mini-x86.c: Fix warnings.
14997
14998         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
14999         used by all the ports now.
15000
15001         * aot.c: Add write-symbols and save-temps options.
15002
15003 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15004
15005         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15006
15007 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15008
15009         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15010         operations.
15011
15012         * tramp-s390.c: Check vtable slot belongs to the domain.
15013
15014         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15015         as per other platforms.
15016
15017         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15018
15019 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15020
15021         * driver.c: we don't run the Main() code in a subthread anymore.
15022
15023 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15024
15025         * mini.c: added experimental rtc support in the statistical
15026         profiler: if the user has the permission, more accurate statistics
15027         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15028         The MONO_RTC value must be restricted to what the linux rtc allows:
15029         power of two from 64 to 8192 Hz.
15030
15031 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15032
15033         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15034
15035 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15036
15037         * mini-ppc.c: better icache flush for smp.
15038
15039 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15040
15041         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15042
15043         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15044         amd64 port, not yet used.
15045
15046 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15047
15048         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15049         a struct type.
15050
15051 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15052
15053         * driver.c: Added --security option to activate the security manager.
15054         Right now this will allow code generation for declarative demands and
15055         is disabled when AOT is specified.
15056         * mini.c: Add code generation for declarative security demands.
15057         * mini.h: Add mono_use_security_manager as an extern gboolean.
15058
15059 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15060
15061         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15062         emitting more dense assembly code.
15063
15064         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15065         exception throwing stuff.
15066
15067 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15068
15069         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15070         dead code.
15071
15072         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15073         left in by mistake.
15074
15075         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15076         fixed.
15077
15078         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15079
15080         * tramp-*.c: Only patch vtable slots if the object is in the current
15081         domain. Fixes appdomain-unload.exe.
15082
15083         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15084         
15085         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15086         x86 branch.
15087
15088 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15089
15090         * mini.c (reverse_branch_op): New helper function.
15091
15092         * mini.c (optimize_branches): Run the new optimization only on 
15093         platforms which support it. Also reverse all kinds of branches.
15094
15095         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15096
15097         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15098         a throw statement.
15099
15100         * mini.c (optimize_branches): Reverse not-equals branches if the false
15101         bblock is a throw. This happens a lot of time with argument checking in
15102         corlib.
15103
15104         * mini.c (mono_codegen): Add support for placing basic blocks after
15105         the function epilogue.
15106
15107         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15108         function epilogue.
15109         
15110 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15111
15112         * mini.c (setup_stat_profiler): Only set this up if the platform
15113         supports ITIMER_PROF.
15114
15115 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15118         previous patch.
15119
15120         * inssel.brg: Fix a warning.
15121
15122 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15123
15124         * mini.c: added support for statistical profiler 
15125         (run with: --profile=default:stat).
15126
15127 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15128
15129         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15130
15131         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15132
15133         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15134         related to global registers from the amd64 port.
15135
15136 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15137
15138         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15139
15140         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15141         with global registers.
15142         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15143
15144         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15145
15146 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15147
15148         * debug-mini.c (encode_value): Fix off-by-one.
15149
15150         * aot.c (encode_value): Likewise.
15151
15152         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15153
15154 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15155
15156         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15157         AOT.
15158
15159         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15160         
15161         * aot.c (emit_method_info): Increase size of temp buffer.
15162
15163         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15164         the AOT case.
15165
15166 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15167
15168         * aot.c (emit_method_info): Fix build.
15169         
15170         * aot.c: Further rework of the AOT file format to reduce the size of
15171         the method info data.
15172
15173         * mini.h: Bump AOT file format version.
15174
15175 2004-12-27  Martin Baulig  <martin@ximian.com>
15176
15177         * mini.c (mini_get_method): New static method; call
15178         mono_get_method_full() and mono_get_inflated_method().
15179         (mono_method_to_ir): Use mini_get_method() instead of
15180         mono_get_method_full(). 
15181
15182 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15183
15184         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15185
15186 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15187
15188         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15189
15190         * inssel-amd64.brg: Add some optimization rules.
15191
15192 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15193
15194         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15195         standard not GC'd stuff is fine.
15196
15197 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * aot.c: Rework the AOT file format to get rid of most of the global
15200         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15201
15202         * mini.h: Bump AOT file format version.
15203         
15204 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15205
15206         * mini.h: Bump AOT file format version.
15207
15208         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15209         address is inside a GOT.
15210
15211         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15212
15213         * cpu-pentium.md: Increase the maximum size of some instructions which
15214         might involve a got access.
15215         
15216         * mini.c (get_method_from_ip): Another debug helper function.
15217
15218         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15219         when got var accesses are created during the decompose phase.
15220
15221         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15222
15223         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15224         argument mini_compile_method and to MonoCompile, and use this to
15225         determine whenever a given method is compiled for AOT. This allows the
15226         other methods compiled during AOT compilation to be free of AOT stuff,
15227         so the backends does not need to add special support for them by
15228         creating a fake GOT etc.
15229
15230         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15231         longer needed.
15232
15233 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15234
15235         * mini.c (mono_method_to_ir): It turns out that some of the
15236         x-appdomain wrappers are lax with types, so just ignore this for
15237         all wrappers.
15238
15239         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15240         at the vtable->klass. If it is non-shared code we can just use the
15241         vtable.
15242
15243 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15244
15245         * mini-ppc.c: access MonoDomain from tls, too.
15246
15247 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15248
15249         * declsec.c: Removed unused variable (and related warning ;-)
15250
15251 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15252
15253         * iltests.il: New test for LDELEMA on an array of ref types.
15254
15255         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15256         all ldelema's on reftypes.
15257         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15258         it was the wrong place to put it.
15259
15260         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15261         register to pop to make this cleaner, at the request of Paolo.
15262
15263 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15264
15265         * mini-ops.h (OP_GETHASHCODE): New op.
15266
15267         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15268
15269         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15270         operation.
15271
15272         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15273         by 25%.
15274         
15275         * mini-x86.c (mono_arch_output_basic_block): Rather than
15276
15277         add ebp, 4
15278
15279         Emit
15280
15281         pop edx
15282
15283         The first is 3 bytes while the second is 1. This saves 36 kb on
15284         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15285         see a small boost because of icache locality.
15286
15287         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15288
15289 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15290
15291         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15292         started code sharing with the generic code.
15293
15294 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15295
15296         * mini-ppc.c, cpu-g4.md: added code for direct access to
15297         tls data slots.
15298
15299 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15300
15301         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15302          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15303         to OP_TLS_GET.
15304
15305 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15306
15307         * declsec.c|h: Added functions to cache the declarative stack modifiers
15308         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15309         structure.
15310         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15311         created. Register internal calls for System.Security.SecurityFrame::
15312         _GetSecurityFrame and _GetSecurityStack.
15313         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15314         the definitions for the new stack walk/callback mechanism.
15315         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15316         first security frame for LinkDemands and InheritanceDemands) and
15317         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15318         from lupus.
15319         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15320         walk initialization (lupus).
15321
15322 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15323
15324         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15325         idiom.
15326         (handle_loaded_temps): Do not create a temporary variable for
15327         things that we know are temps. They will never be modified.
15328         (mono_spill_call): Set MONO_INST_IS_TEMP
15329         (mono_emulate_opcode): ditto
15330         (emit_tree): ditto
15331         (mono_method_to_ir.CEE_DUP): ditto
15332
15333 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15334
15335         * mini.c (type_to_eval_stack_type): Make this handle the void type
15336         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15337         (emit_tree): use ip_in_bb to special case some common idioms
15338         Update all callers to pass in the IP.
15339         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15340
15341         This gives us a nice 2% speedup in mcs bootstrap.
15342
15343         * mini-x86.c (peephole_pass): Peephole pass to make
15344         mov  [foo], eax
15345         push [foo]
15346
15347         into
15348
15349         mov [foo], eax
15350         push eax
15351
15352         * mini.c (ip_in_bb): new method.
15353         (mono_method_to_ir): use this method rather than doing the hash
15354         lookup ourselves.
15355
15356         * linear-scan.c (mono_linear_scan): When expiring actives, you
15357         don't need to keep around variables that expire on this
15358         instruction. This makes it so that:
15359              a = b + 1
15360         will turn into:
15361              store (ebx add (ebx, 1))
15362         which will become
15363              add ebx, 1
15364
15365 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15368         combination to avoid doing two copies. Fix up problems with previous
15369         patch.
15370
15371         * mini.c: Fix 64 bit warnings.
15372
15373         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15374
15375 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15378         changes from the x86 code.
15379
15380         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15381
15382 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15383
15384         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15385         throwing code to reduce its size, unify the AOT and non-aot code and 
15386         get rid of relocations in the AOT case.
15387
15388         * mini-x86.h mini.c exceptions-x86.c 
15389         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15390         raise corlib exceptions which doesn't require relocations in the 
15391         caller.
15392
15393         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15394
15395 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15396
15397         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15398         needed.
15399
15400         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15401         in the AOT case.
15402
15403 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15404
15405         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15406         with add function when used from Inc/dec atomic 
15407         functions. Re-enabled optimization on x86.
15408         * mini-ops.h: renamed atomic_add functions to
15409         allow _add to match the Interlocked::Add and
15410         _add_next to match Interlocked::Inc/Dec.
15411
15412 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15413
15414         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15415         linking of BBs to the end BB, and enabled SSAPRE also with
15416         consprop and copyprop (which was prevented by that bug).
15417
15418 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15419
15420         * mini-x86.c: disabling the Interlocked optimizing code. 
15421
15422 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15423
15424         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15425         file version check.
15426         
15427 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15428
15429         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15430         interlocked optimization due lack of support on x86, rewrote 
15431         exchange to take into account that base may be in eax.
15432         
15433         xsp works again; activated Interlocked optimizing code.
15434         
15435 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15436
15437         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15438
15439 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15440
15441         * mini-ops.h: Add new opcodes.
15442
15443         * mini.h: Add new patch types. Add got_var to MonoCompile.
15444
15445         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15446         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15447         make it work with all kinds of patchable code.
15448
15449         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15450         address of the GOT, and referencing entries in the GOT.
15451
15452         * mini.c: Add code to load the GOT address if needed by an opcode.
15453
15454         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15455         independent AOT code on the x86 using an elf-style Global Offset Table.
15456
15457 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15458
15459         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15460
15461 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15462
15463         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15464         when running xsp.
15465
15466 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15467
15468         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15469         of Interlocked:Increment/Decrement/Add as inline ops.
15470         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15471
15472 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15473
15474         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15475         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15476
15477 2004-12-12  Duncan Mak  <duncan@ximian.com>
15478
15479         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15480         again. `patch_info->table_size' is no longer valid after Zoltan's
15481         commit #37636.
15482
15483 2004-12-12  Martin Baulig  <martin@ximian.com>
15484
15485         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15486         if we are the "real" method, ie. not an inlined method inside it.
15487
15488 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15489
15490         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15491         before we look in the special fields table. This fixes
15492         ../tests/thread-static-init.cs.
15493
15494 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15495
15496         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15497         for Array get_Rank and get_Length. Fixes bug #70465.
15498
15499 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15500
15501         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15502         separate structure to reduce the size of MonoJumpInfo.
15503
15504 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15505
15506         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15507
15508 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15509
15510         * mini.c (mini_get_inst_for_method): Changed to allow ports
15511         to return a MonoInst instead of opcode 
15512         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15513         
15514         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15515         Allow ports to return a created MonoInst instead of op-code, will enable
15516         new optimizations.
15517         (renamed mini_get_opcode_for_method to better reflected the functionality)
15518
15519 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15520
15521         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15522
15523 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15524
15525         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15526         Fixes #69985.
15527
15528 2004-12-08  Martin Baulig  <martin@ximian.com>
15529
15530         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15531         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15532
15533 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15534
15535         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15536         correctly.
15537
15538         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15539         arithmetic.
15540
15541 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15542
15543         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15544
15545 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15546
15547         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15548         bug introduced by the previous patch.
15549
15550 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15551
15552         * mini-ppc.c, objectc.cs: handle large structs passed by value
15553         (fixes bug #69972).
15554
15555 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15556
15557         * mini-ppc.c: OP_ARGLIST implementation from
15558         Geoff Norton  <gnorton@customerdna.com>.
15559
15560 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15561
15562         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15563         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15564
15565 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15566
15567         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15568
15569 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15570
15571         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15572         support.
15573
15574 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15575
15576         * mini-sparc.c: Zero out localled-ed memory.
15577
15578         * iltests.il: Add tests for zeroing out localloc-ed memory.
15579
15580 2004-12-04  Martin Baulig  <martin@ximian.com>
15581
15582         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15583         mono_method_get_signature_full().       
15584
15585 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15586
15587         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15588         and some utility functions (always for SSAPRE), integrated SSAPRE.
15589         * mini.h: Likewise.
15590         * driver.c: Added ssapre option.
15591         * ssa.c: Small fix on OP_ARG handling.
15592         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15593         * Makefile.am: Likewise.
15594
15595 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15596
15597         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15598         now in the xp code.
15599
15600         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15601         icall.
15602
15603 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15604
15605         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15606         
15607         * cpu-s390.md : Increase instruction length of oparglist.
15608
15609         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15610
15611 2004-11-30  Martin Baulig  <martin@ximian.com>
15612
15613         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15614         virtual generic methods.  We call a special helper_compile_generic_method()
15615         icall to retrieve the method from the vtable, inflate and compile
15616         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15617
15618         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15619
15620 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15621
15622         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15623
15624 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15625
15626         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15627         Fixes #69929.
15628
15629 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15630
15631         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15632         platforms with PIC aot.
15633
15634 2004-11-28  Martin Baulig  <martin@ximian.com>
15635
15636         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15637         Fixes gen-112.cs.
15638
15639 2004-11-28  Martin Baulig  <martin@ximian.com>
15640
15641         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15642         the result of mono_type_get_underlying_type() to check whether
15643         we're byref.
15644
15645 2004-11-26  Martin Baulig  <martin@ximian.com>
15646
15647         * mini.c
15648         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15649         in the g_assert().
15650
15651 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15652
15653         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15654         the same way as the other arguments so they won't get clobbered.
15655
15656         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15657         calls through R11 since it is clobbered by the trampoline code.
15658
15659 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15660
15661         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15662         pick up in-tree mscorlib.dll.
15663
15664 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15665
15666         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15667
15668         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15669         runtime data/code are now stored in a table similar to the GOT in ELF. 
15670         This allows the code itself to be position independent.
15671
15672         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15673         loading changes.
15674
15675         * aot.c: Attach ELF type (object/function) directives to all global
15676         symbols.
15677
15678         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15679
15680         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15681
15682         * mini-amd64.h: Turn on PIC AOT code.
15683
15684         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15685         returning the offset within an OP_AOTCONST instruction where the GOT
15686         offset needs to be added.
15687
15688         * mini.h: Bump AOT file format version.
15689
15690 2004-11-25  Martin Baulig  <martin@ximian.com>
15691
15692         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15693         uninflated generic methods.
15694
15695 2004-11-25  Martin Baulig  <martin@ximian.com>
15696
15697         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15698
15699 2004-11-24  Martin Baulig  <martin@ximian.com>
15700
15701         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15702         original klass (this only applies for generic instances).
15703
15704 2004-11-24  Martin Baulig  <martin@ximian.com>
15705
15706         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15707         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15708         that array).
15709
15710 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15711
15712         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15713         localloc. Fixes #69678.
15714
15715         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15716         
15717 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15718
15719         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15720         used SSE registers on pinvoke calls. Fixes #69774.
15721
15722 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15723
15724         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15725         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15726
15727 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15728
15729         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15730         Refer directly to the mcs/ tree.
15731
15732 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15733
15734         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15735         Check if a trampoline for a synchronized method is required. 
15736
15737 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15738
15739         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15740         with localloc if needed. Throe arithmetric exception in
15741         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15742         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15743
15744 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15745
15746         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15747         types before switching on type.  Fixes #69622.
15748
15749 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15750
15751         * Makefile.am (check-local): New.  Integrate into 'make check'.
15752         (MCS,RUNTIME): Define using in-tree mono and mcs.
15753         (ILASM): New.
15754         (%.exe): Use $(ILASM).
15755
15756 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15757
15758         * mini-ppc.c: adjust initial prolog size (bug #69691).
15759
15760 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15761
15762         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15763         #69664.
15764
15765 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15766
15767         * Makefile.am (clean-local): Rename from 'clean'.
15768
15769 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15770
15771         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15772         to mono_arch_is_int_overflow. 
15773         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15774         SIGFPE events.
15775
15776 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15777
15778         * declsec.c|h: New files to support declarative security attributes.
15779         Added function to check if a method has (applicable) security.
15780         * mini.c|h: Add check for declarative security attributes in
15781         mono_method_check_inlining.
15782         * Makefile.am: Added declsec.c and declsec.h to the build.
15783
15784 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15785
15786         * mini.c, mini.h: update to keep dynamic code info per-domain.
15787
15788 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15789
15790         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15791         (mini_init): Get rid of it from here too.
15792
15793 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15794
15795         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15796         implemented OP_RETHROW (patch by Geoff Norton
15797         <gnorton@customerdna.com>).
15798
15799 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15800
15801         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15802         between appdomains.  Fixes appdomain-unload on PPC.
15803
15804 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15805
15806         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15807         mini-exceptions.c: handle the new wrapper types.
15808         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15809         token value as a MonoClass* when compiling a wrapper.
15810         mono_jit_create_remoting_trampoline now takes an additional
15811         MonoRemotingTarget parameter.
15812         
15813 2004-11-10  Martin Baulig  <martin@localhost>
15814
15815         * mini.c (mono_method_to_ir): Use `generic_container->context'
15816         rather than creating a new one.
15817
15818 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15819
15820         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15821
15822         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15823
15824 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15827         the experimental aot cache stuff.
15828
15829 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15830
15831         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15832         mini-exceptions.c: update to exception clause structure changes.
15833
15834 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15835
15836         * exceptions-x86.c (throw_exception): Fix warnings.
15837
15838         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15839         for OP_RETHROW.
15840
15841 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15842
15843         * exceptions-sparc.c (get_throw_exception): Really fix this.
15844
15845 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15846
15847         * tramp-*.c: we no longer support icalls without wrappers, so
15848         a bit of code can be removed here
15849
15850 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15851
15852         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15853         patch.
15854
15855         * cpu-sparc.md: Add op_rethrow.
15856
15857         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15858
15859         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15860
15861         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15862         * mini-ops.h: Add OP_RETHROW.
15863
15864         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15865
15866         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15867
15868 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15869         
15870         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15871         Makes the output much easier to read
15872
15873 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15874
15875         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15876         prevents another huge leak when compiling with ssa. Secondly, the
15877         performance of doing this rather than freeing the lists is much
15878         better. GList does a lock every time you allocate a list link,
15879         so that it can use a memory pool. So, it is better to just use
15880         a memory pool of our own.
15881         
15882         * ssa.c, linear-scan.c: replace g_list_remove_link with
15883         g_list_delete.  The remove one does not free the GList, so we were
15884         leaking memory. On -O=all --compile-all with corlib, this cut down
15885         3 MB of allocations.
15886
15887 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15888
15889         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15890
15891         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15892
15893         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15894         into a new function mono_create_jit_trampoline ().
15895
15896 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15897
15898         * trace.c (get_spec): Allow tracing of classes without a namespace.
15899
15900 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15901
15902         * mini.c: Fix pointer overwrite in mini_method_compile.
15903
15904 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15905
15906         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15907         The darwin ABI needs some special handling for 1 and 2 byte structs
15908         Lets use lbz/lhz instead of lwz everywhere.
15909         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15910         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15911         Use stb/sth for the former, and put the latter always on stack instead of in
15912         argument registers.
15913
15914 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15915
15916         * trace.c (is_filenamechar): Add '_'.
15917
15918 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
15919
15920         * mini-s390.c: Fix prolog length to allow for large trace requirements.
15921
15922         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15923
15924 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15925
15926         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15927         depends on libmonogc. Fixes #68805.
15928
15929 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15930
15931         * mini.c (mono_jit_free_method): Provide extra information for
15932         this error.  Currently this leaks, but will be turned into a
15933         developer option in the future.
15934
15935 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15938
15939 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15940
15941         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15942         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15943         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15944
15945 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15946
15947         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15948         trampolines for AOT code.
15949
15950 2004-10-22    <vargaz@freemail.hu>
15951
15952         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
15953         constructed types. Fixes #68136.
15954
15955 2004-10-21  Martin Baulig  <martin@ximian.com>
15956
15957         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
15958         if it returns true, unwind the stack to the call instruction.
15959
15960 2004-10-21    <vargaz@freemail.hu>
15961
15962         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
15963
15964         * mini.h: Bump AOT version number.
15965
15966         * objects.cs: Add another test for unbox trampolines.
15967
15968         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
15969         valuetype methods.
15970
15971 2004-10-20    <vargaz@freemail.hu>
15972
15973         * driver.c: Add SHARED to the set of optimizations tested.
15974
15975         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
15976
15977         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
15978         used by CEE_NEWARR.
15979
15980         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
15981
15982 2004-10-20  Martin Baulig  <martin@ximian.com>
15983
15984         * mini-exceptions.c (mono_handle_exception): Call
15985         mono_debugger_handle_exception() to tell the debugger about
15986         catch/finally clauses.
15987
15988 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15989
15990         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
15991
15992         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
15993         #68447.
15994
15995 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
15996
15997         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
15998         methods as their native size, fixed bug #57543, #57545.
15999         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16000         This saves a temporary register and mullw call down into 1 (minor perf
16001         increase for cases like sum = sum * 5;  This use to translate into:
16002             li r11,5
16003             mullw r28,r28,r11
16004         It now translates to
16005             mulli r28,r28,5
16006
16007 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16010         #68388.
16011
16012 2004-10-11  Martin Baulig  <martin@ximian.com>
16013
16014         * mini.c (mono_method_to_ir): If we're a generic method, get the
16015         MonoGenericContainer from our MonoMethodNormal and create a
16016         MonoGenericContext from it.
16017
16018 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16019
16020         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16021
16022         * basic-long.cs: Add test for checked i8->i2 cast.
16023
16024 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16025
16026         * inssel-ppc.brg: added a couple of speedup rules.
16027
16028 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16029
16030         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16031         to speed up rebuilds.
16032
16033 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16034
16035         * mini-s390.c: Minor fix to OP_OR_IMM.
16036
16037 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16038
16039         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16040         better. Fixes appdomain-unload.exe on sparc.
16041
16042 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16043
16044         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16045         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16046         see bug 67324.
16047
16048 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16049
16050         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16051
16052 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16053
16054         * mini.c: Always generate a field read/write wrapper for members
16055         of the class MarshalByRefObject since the actual instance could
16056         be a CBO.
16057
16058 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16059
16060         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16061
16062 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16063
16064         * driver.c mini.h trace.c: Move the setting of the main assembly into
16065         a separate function called mono_trace_set_assembly () and call it after
16066         actually loading the main assembly. Fixes #66872.
16067
16068 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16069
16070         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16071         using the code manager.
16072
16073 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16076
16077 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16078
16079         * cpu-amd64.md: Fix bug in previous patch.
16080         
16081         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16082         #66650.
16083
16084 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16085
16086         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16087         mini-exceptions.c: updates for changed stack walk interface.
16088
16089 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16090
16091         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16092
16093 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16094
16095         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16096
16097 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16098
16099         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16100         since assemblies can't be unloaded.
16101         
16102 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16103
16104         * cpu-amd64.md: Fix more instruction lengths.
16105
16106         * cpu-amd64.md: Fix lengths of some instructions.
16107
16108 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16109
16110         * inssel.brg: Make the array ldelema check aot friendly.
16111
16112 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16113
16114         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16115
16116         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16117
16118 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16119
16120         * mini-x86.c: Fix build.
16121
16122         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16123         mono_type_get_underlying_type () helper function to simplify code.
16124         
16125 2004-09-09  Martin Baulig  <martin@ximian.com>
16126
16127         * mini-amd64.c: Don't access `type->data.klass' directly, call
16128         mono_class_from_mono_type() instead since the type may be a
16129         generic instance.
16130
16131 2004-09-09  Martin Baulig  <martin@ximian.com>
16132
16133         * mini-amd64.c (get_call_info): Fix support for generic instances.
16134         (add_valuetype): Use mono_class_from_mono_type() to get the class
16135         since we can be a generic instance.
16136
16137 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16138
16139         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16140
16141 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16142
16143         * liveness.c: reset spill costs on each scan: bug 62107
16144
16145 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16146
16147         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16148         unnecessary line that doesn't compile
16149
16150 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16153         trampolines, make them call an error function so people can fix their
16154         code.
16155
16156 2004-09-06  Martin Baulig  <martin@ximian.com>
16157
16158         * mini.c (mono_method_to_ir): When initializing locals, handle a
16159         generic instances like a valuetype if it's a valuetype and like a
16160         class if it's a class.
16161
16162 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16165         stack. Fixes #64674.
16166
16167         * exceptions.cs: Add test for unwinding of call arguments.
16168
16169 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16170
16171         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16172         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16173         set the carry/borrow flag). The sparc and s390 implementations
16174         can now use optimized versions (and simplify the code). ppc bugfixes.
16175
16176 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16177
16178         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16179
16180 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16181
16182         * inssel-amd64.brg: Remove leftover 32 bit rule.
16183
16184         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16185
16186 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16187
16188         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16189         mono_arch_find_jit_info functions into a new function. Fix a memory
16190         leak.
16191
16192         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16193         refactored code.
16194         
16195 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16196
16197         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16198         as well.
16199         
16200         * exceptions.cs: Add array size tests.
16201
16202         * mini.c: Allocate a separate icall wrapper for each arity of 
16203         mono_array_new_va. Fixes #59509.
16204
16205         * exceptions.cs: Add testcase for 64578.
16206
16207         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16208
16209         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16210         
16211 2004-09-02  Martin Baulig  <martin@ximian.com>
16212
16213         * mini.c (mono_method_to_ir): When initializing the locals, call
16214         handle_initobj() on the generic instance itself, not its
16215         underlying type.
16216
16217 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16218
16219         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16220         MonoJitInfo for dynamic methods.
16221
16222         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16223
16224         * mini.c: Add support for freeing JIT data for dynamic methods.
16225         
16226 2004-09-01  Martin Baulig  <martin@ximian.com>
16227
16228         * mini-x86.c (is_regsize_var): Added support for generic
16229         instances.
16230         (mono_arch_emit_prolog): Make this compile again, use
16231         `x86_push_imm_template (code)'.
16232
16233 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16234
16235         * mini-x86.c: make all push_imm instructions that get
16236         patched always emit the long form
16237
16238 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16239
16240         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16241         in a per-domain hash.
16242
16243         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16244         types.
16245
16246 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16247
16248         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16249         work.
16250         
16251         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16252         work.
16253
16254         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16255         Beginnings of SSE2 support.
16256
16257         * exceptions.cs: Add more tests for checked int<->uint casts.
16258
16259 2004-08-28  Martin Baulig  <martin@ximian.com>
16260
16261         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16262         generic instances.
16263
16264         * mini.c
16265         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16266         Handle generic instances recursively.
16267
16268 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16269
16270         * iltests.il: test for conv.u8 on a constant
16271
16272 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16273
16274         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16275         LCONV_x4 (shrun_32 (membase)).
16276
16277 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16278
16279         * inssel-x86.brg: c&p rules for push/setret of long
16280
16281 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16282
16283         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16284         compare (regvar, base)
16285
16286         * inssel-x86.brg: more burg love
16287
16288         * inssel.brg: more cleanup
16289
16290         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16291
16292 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16293
16294         * basic-long.cs, basic-calls.cs: new tests for optimization.
16295
16296 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16297
16298         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16299         patch.
16300
16301 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16304         
16305 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16306
16307         * inssel.brg (mini_emit_memcpy): use 
16308         NO_UNALIGNED_ACCESS to disable memcpy optimization
16309
16310 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16311
16312         * mini-amd64.c: Handle generic types in various places.
16313
16314         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16315
16316 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * mini.c (handle_box): Fix warning.
16319
16320         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16321
16322         * mini-amd64.h: Enable the emit_state optimization.
16323
16324         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16325
16326         * mini-amd64.c: Add some new 64 bit peephole opts.
16327
16328         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16329
16330         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16331
16332         * mini-amd64.c: Register allocator fixes.
16333
16334         * mini.c: Add an optimization to emit_state to avoid allocation of new
16335         registers on some platforms.
16336
16337 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16338
16339         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16340
16341         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16342         allocation. Fixes #63085.
16343
16344         * basic-long.cs: Add new regression test.
16345
16346         * mini-amd64.c: Register allocator improvements.
16347
16348 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16349
16350         * mini-amd64.c (read_tls_offset_from_method): Add another code
16351         sequence.
16352
16353         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16354         instruction sequence for nullifying class init trampolines.
16355
16356         * objects.cs: Add new regalloc test.
16357
16358         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16359
16360 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16361
16362         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16363         
16364         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16365         arguments.
16366
16367         * driver.c: Fix profiling after TLS changes.
16368         
16369         * driver.c (mono_main): Set mono_stats.enabled if needed.
16370
16371         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16372         CEE_BOX.
16373
16374 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16375
16376         * mini-x86.c: use a 1 op rather than a 2 op tls access
16377         instruction -> faster.
16378
16379 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16380
16381         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16382         x86 backend.
16383
16384 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16385
16386         * exceptions-sparc.c (throw_exception): fix typo
16387
16388 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16389
16390         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16391         set tree->dreg correctly with tls. Allow any
16392         register to be used.
16393
16394         * mini-x86.c (read_tls_offset_from_method): add new code
16395         generation pattern seen with GCC.
16396
16397
16398 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16399
16400         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16401         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16402         exceptions-sparc.c: fix some performance issues in exception
16403         handling and setting of the stack trace for exceptions that were
16404         already thrown.
16405
16406 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16407
16408         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16409         x86 backend.
16410         
16411         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16412         registers.
16413
16414 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16415
16416         This patch inlines tls access, when possible.
16417         
16418         * mini.h: new arch functions for TLS intrinsics.
16419         All platforms updated with a stub.
16420
16421         * mini.c: use the new intrinsics
16422
16423         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16424         arch specific intrinsic for tls variables
16425
16426 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16427
16428         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16429         under windows.
16430
16431 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16432
16433         * mini.c: thread local allocation
16434
16435 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16436
16437         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16438
16439         * Makefile.am: Link against the static version of libmonogc.
16440         
16441         * Makefile.am: Link the static versions of the convenience libraries
16442         into the mono executable.
16443
16444         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16445
16446 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16447
16448         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16449         on integer overflow.
16450
16451         * mini-amd64.c: Reorganize function call code.
16452
16453         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16454
16455 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16456
16457         * inssel-x86.brg: use xor eax,eax.
16458         
16459         * basic.cs: new tests
16460
16461 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16464         in exception throwing code.
16465         
16466 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16467
16468         * inssel-x86.brg: use xor esi,esi.
16469
16470 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16471
16472         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16473         can trace methods compiled during mini_init () too.
16474
16475         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16476         CEE_CONV_U4.
16477
16478 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16479
16480         * Makefile.am: static link on x86 (r=zoltan)
16481
16482 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16483
16484         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16485         code since it causes some programs to fail.
16486
16487 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16488
16489         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16490
16491 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16492
16493         * mini.c: ovfops_op_map - add STACK_OBJ case for
16494         CONV_I 
16495         * basic.cs: add test_0_pin_string as test
16496         case for above.
16497
16498 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16499
16500         * Makefile.am: build C# if srcdir != builddir
16501
16502 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16503
16504         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16505         fall-through blocks.
16506
16507 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16508
16509         * driver.c: enable loop by default again and include abcrem in -O=all.
16510
16511 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16512
16513         * iltests.il: Add some localloc tests.
16514
16515         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16516
16517         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16518         Fixes #62574.
16519
16520         * inssel-amd64.brg: Add some optimizations.
16521
16522         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16523         for gcc-3.4.
16524
16525         * Makefile.am: Statically link mono against libmono on AMD64.
16526         
16527         * mini-amd64.c inssel-amd64.brg: Optimizations.
16528
16529 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16532
16533         * tramp-amd64.c: Patch calling code in trampolines.
16534
16535 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16536
16537         * mini-amd64.c: pinvoke struct passing fixes.
16538
16539 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16540
16541         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16542         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16543
16544 2004-08-05  Duncan Mak  <duncan@ximian.com>
16545
16546         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16547         CEE_LDELEM_ANY.
16548
16549 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16550
16551         * mini-amd64.c (emit_move_return_value): Move return value for normal
16552         calls too.
16553
16554 2004-08-05  Martin Baulig  <martin@ximian.com>
16555
16556         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16557         `type->type'; just modify `type' itself when dealing with enums
16558         and generic instances.
16559         (check_call_signature): Make `simple_type' a `MonoType *'.
16560
16561 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16562
16563         * mini.c: Use OP_PADD to add offsets to addresses.
16564
16565         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16566
16567 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16568
16569         * mini-sparc.c (mono_arch_emit_epilog): fix check
16570         for folding last op into restore instruction
16571
16572 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16573
16574         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16575         helper methods using the code manager.
16576         
16577         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16578
16579         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16580
16581 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16582         
16583         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16584           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16585
16586         * mini-s390.c: fix tail processing
16587
16588 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16589
16590         * mini-ppc.c: mul.ovf.un exception name fix.
16591
16592 2004-08-03  Martin Baulig  <martin@ximian.com>
16593
16594         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16595         instances; before jumping to `handle_enum', also modify `ptype'.
16596
16597 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16598
16599         * cpu-sparc.md: fcall maximal length too small.
16600
16601 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16602
16603         * mini-amd64.c mini.h: Add initial support for passing/returning 
16604         structures to/from pinvoked methods.
16605
16606 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16607
16608         * mini-ppc.c: reg allocator fix.
16609
16610 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16611
16612         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16613
16614         * inssel.brg: Optimize memset on 64 bit machines.
16615
16616         * mini-amd64.c: Fix some vararg cases.
16617
16618 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16619
16620         * mini-s390.c: Corrected macro in emit_float_to_int
16621
16622         * s390-abi.cs: Tests to exercise the s390 ABI
16623
16624 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16625
16626         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16627         caller saved regs.
16628
16629         * basic.cs: Add a test for add.ovf.un.
16630
16631 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16632
16633         * mini-sparc.c: add case for OP_IDIV_UN
16634
16635 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16636
16637         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16638         
16639         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16640
16641 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16642
16643         * basic.cs: regression tests.
16644
16645         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16646         regressions.
16647
16648 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16649
16650         * basic.cs: Add a new test.
16651
16652         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16653         and AOT. Various fixes and optimizations.
16654
16655         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16656
16657 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16658
16659         * mini-ppc.c: make sure temp regs are not used for global reg
16660         allocation.
16661
16662 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16663
16664         * cpu-sparc.md: conv_i8 fix for 64bits
16665
16666         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16667
16668 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16669         
16670         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16671         add opcode for cmp BYTE PTR [eax], imm.
16672
16673         * inssel.brg: Make memcpy and memset takes bases.
16674
16675 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * *-amd64.*: More AMD64 work.
16678         
16679 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16680
16681         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16682         add a compare-not-equal opcode.
16683         
16684 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16685
16686         * mini.c: Use mono_init_from_assembly instead of mono_init.
16687         
16688 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16689
16690         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16691
16692         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16693
16694         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16695
16696         * inssel.brg: 64 bit fixes.
16697
16698         * mini.h (MonoCallInst): Add some AMD64 specific data.
16699
16700         * mini.h: Add some OP_P opcodes.
16701
16702 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16703
16704         * basic.cs: tests for 61797 and 61740
16705
16706 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16707
16708         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16709         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16710
16711 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16712
16713         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16714
16715         * *-amd64*.*: Ongoing AMD64 work.
16716
16717 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16718
16719         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16720
16721         * *-amd64*: Ongoing AMD64 work.
16722
16723         * mini-arch.h: Add AMD64 support.
16724
16725         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16726
16727         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16728
16729         * mini-ops.h: Add new opcodes.
16730
16731         * Makefile.am: Add AMD64 support.
16732
16733         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16734         rules into the inssel-long*.brg files.
16735
16736         * *-amd64.*: Add beginnings of AMD64 backend.
16737
16738 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16739
16740         * mini.c (print_dfn): commenting out the code that prints
16741         the cil. With -O=deadce, this makes -v -v crash.
16742         
16743         * cpu-pentium.md: make checkthis have a length of 2
16744
16745 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16746
16747         * mini-sparc.h: fix implementations of __builtin
16748         functions for Sun compiler for V9.
16749
16750 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16751
16752         * mini.c: use the new stelem.ref wrapper
16753         * exceptions.cs, arrays.cs: new stelem.ref tests
16754
16755 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16756
16757         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16758         new XSP should work with these changes).
16759
16760 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16761         
16762         * inssel-{long32,x86,}.brg: trivial optimizations.
16763         
16764 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16765
16766         * mini.c: load value when emitting box operation in
16767         constrained calls.
16768
16769 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16770
16771         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16772         is one byte shorter than cmp DWORD PTR [eax], 0.
16773
16774 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16775
16776         * inssel-ppc.brg: arguments on the stack are always
16777         relative to the stack pointer (spotted by Neale Ferguson).
16778
16779 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16780
16781         * exceptions-x86.c: delay appending the method name to the trace until
16782         after mono_jit_info_table_find is called, as this gets the real
16783         MonoMethod.
16784
16785 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16786
16787         * aot.c: register roots
16788
16789 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16790
16791         * aot.c : I could just use PLATFORM_WIN32 flag.
16792
16793 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16794
16795         * aot.c : Reverting the previous fix. This time it broke linux build.
16796
16797 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16798
16799         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16800
16801 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16802
16803         * mini.c (handle_stack_args): Remove some more debugging code.
16804         
16805         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16806
16807         * driver.c mini.h aot.c: Allow additional options to be specified with
16808         --aot and pass them to mono_compile_assembly.
16809
16810         * aot.c: Add experimental code to AOT compile all loaded assemblies
16811         on demand and save the code into a cache in the filesystem.
16812
16813         * aot.c: Add support for more wrapper methods.
16814         
16815         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16816         58863.
16817
16818         * cpu-*.md: Remove removed opcodes.
16819
16820         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16821         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16822         related icalls to marshal.c.
16823
16824 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16825
16826         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16827
16828         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16829
16830         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16831
16832 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16833         * liveness.c: If liveness is recomputated we need to reset the information
16834         for each variable. This way, if the liveness range has been narrowed
16835         by optimizations that happened after the last computation, we can return
16836         a smaller range.
16837         
16838         For example, if you have
16839         
16840         {
16841                 int i = 0;
16842                 
16843                 // Tons of code that does not affect i
16844                 
16845                 i = foo ();
16846                 ...
16847         }
16848         
16849         i = 0 is dead code and will be removed by SSA. However, when
16850         linear scan gets to the code, i will still appear to be live
16851         throughout the entire block. This prevents good register allocation.
16852
16853 2004-07-06  Martin Baulig  <martin@ximian.com>
16854
16855         * debug-mini.c (mono_debug_init_method): Allow
16856         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16857         (mono_debug_add_icall_wrapper): New method.
16858
16859         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16860
16861 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16862
16863         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16864         optimization.
16865
16866 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * aot.c (mono_aot_load_method): Fix loading of debug info.
16869
16870 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * aot.c: Add logging support.
16873
16874 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16875
16876         * mini.h: Add prototype for mono_print_method_from_ip.
16877
16878         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16879
16880         * inssel.brg: 64 bit fixes.
16881
16882         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16883         inssel-long32.brg.
16884
16885         * Makefile.am: Add SPARC64 support.
16886
16887 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16888
16889         * aot.c: Fix alignment problems on 32 bit platforms.
16890
16891 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16892
16893         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16894         SPARC64.
16895
16896         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16897         problems.
16898
16899         * mini.h: Bump AOT file version. Some 64 bit fixes.
16900
16901 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16902
16903         * inssel-sparc.brg: Add new rule to avoid register moves.
16904
16905         * inssel.brg: Add ldind_to_load_membase helper function.
16906
16907 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16908
16909         * mini.c: OffsetToStringData intrinsic.
16910         
16911 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16912
16913         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16914
16915         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16916         regression tests.
16917
16918         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
16919 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16920
16921         * mini.c: reinstated mono_compile_get_interface_var()
16922         on x86, too, since the change breaks the Gtk# build there as well.
16923
16924 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16925
16926         * driver.c: remove loop from the default optimizations: it seems to
16927         interact badly with some of the other options (see bug #60613).
16928
16929 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16932         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16933
16934 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16935
16936         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16937         vararg-using methods.
16938
16939 2004-06-21  Martin Baulig  <martin@ximian.com>
16940
16941         * mini/mini-exceptions.c
16942         (mono_handle_exception): Added `gpointer original_ip' argument.
16943         After calling mono_unhandled_exception(), call
16944         mono_debugger_unhandled_exception() and if that returns true,
16945         restore the context and return.
16946
16947 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16948
16949         * mini-ppc.c: prefer the use of relative branches so
16950         they won't need to be patched in aot code (patch from Patrick Beard).
16951
16952 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
16953
16954         * aot.c: patch from Patrick Beard to make the output assembly
16955         more correct for the MacOSX assembler. Small tweak to
16956         generate sane images on Linux/PPC, too.
16957
16958 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16959
16960         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
16961         case until bug #59509 is fixed (shows up in #60332).
16962
16963 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
16964
16965         * mini.c: make sure the needed wrappers are compiled, too, with
16966         precomp.
16967
16968 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
16969
16970         * driver.c: remove NPTL reference in --version output.
16971
16972 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16973
16974         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
16975         generate valid assembly for the Mach-O assembler.
16976
16977 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
16978
16979         * driver.c: don't include abcrem in the all optimization specifier
16980         since it slows down jit compilation too much for now.
16981
16982 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
16983
16984         * mini.c: use BIGMUL only if both operands have the same signage.
16985         * iltests.il: Test for bug 60056. (errors related to signage in
16986         BIGMUL).
16987
16988         r=lupus.
16989
16990 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
16991
16992         * mini.c, aot.c: memory leak fixes.
16993
16994 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16995
16996         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
16997
16998 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
16999
17000         * Makefile.am: remove the -static hack completely, it links in
17001         statically glib as well.
17002
17003 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17004
17005         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17006         * exceptions.cs: make it compile with new mcs/csc.
17007
17008 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17009         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17010         and added relevant test case.
17011
17012 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17013
17014         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17015         regressions in gtk-sharp.
17016
17017 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17018
17019         * exceptions.cs: New regression tests.
17020
17021         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17022
17023 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17024
17025         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17026
17027 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17028
17029         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17030
17031         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17032
17033 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17034
17035         * mini.c (mono_jit_runtime_invoke): Init class in this
17036         method instead of trusting mono_jit_compile_method to
17037         do the work (because wrappers can be in object class)
17038
17039 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17040
17041         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17042
17043         * basic-long.cs: New regression test.
17044
17045 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17046
17047         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17048         and div/rem checks.
17049
17050 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17051
17052         * Makefile.am: fix miguel's change to build mono statically against
17053         libmono (track build dependencies).
17054
17055 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17056
17057         * cfold.c: Some glib versions do not have G_MININT32.
17058
17059 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17060
17061         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17062         with precision of tan, atan, sin and cos, and implemented related
17063         regressions tests (fixes bug 54467, but one new problem appeared and
17064         is not fixed yet).
17065
17066 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17067
17068         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17069
17070         * exceptions.cs: Add test for constant folding && division by zero.
17071
17072         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17073         since driver.c is in libmono too, so the optimization was useless.
17074
17075         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17076         variable to driver.c so the compiler can emit more efficient code to
17077         access them.
17078
17079 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17080
17081         * Makefile.am: don't distribute generated inssel.[ch] files.
17082
17083 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17084
17085         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17086         into the default appdomain. Fixes #58707.
17087
17088         * jit-icalls.c: Remove the broken approximation for truncl, doing
17089         no conversion is better.
17090
17091         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17092         Fixes #58863.
17093
17094 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17095
17096         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17097         of the mcrxr instruction which is not available on some processors
17098         even if it's documented to be. Implement add and sub overflow correctly
17099         (still not complete for long unsigned). Speed up icalls a bit.
17100
17101 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17102
17103         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17104         we run .cctor in the current domain instead of target_domain.
17105         
17106         Fixes bug #58558, .cctor not being called in -O=shared.
17107
17108 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17109
17110         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17111
17112 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17113
17114         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17115         which can be done with an imm8, do it that way.
17116         (mono_arch_output_basic_block): ditto for a jmp
17117         (mono_arch_emit_prolog): Computate maximum offset of a label.
17118
17119 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17120
17121         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17122         now tries to allocate prefered physical reg's for virtual
17123         regs. This reduces the number of emited spills/loads with
17124         20-30% on our core assemblies.
17125
17126 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17127
17128         * jit-icalls.c: truncl() is not needed and trunc() is
17129         the correct thing to do anyway (bug #58287).
17130
17131 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17132
17133         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17134         if available.
17135
17136 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17137
17138         * driver.c: enable loop optimizations by default.
17139
17140 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17141
17142         * mini-x86.c: fix calc of max loop size when aligning loops start.
17143
17144 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17145
17146         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17147         the stack.
17148
17149 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17150
17151         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17152         should set carry.
17153
17154         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17155
17156         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17157         
17158         * mini.c (inline_method): Allways inline some wrappers even if the cost
17159         is too large. Fixes #58785.
17160
17161         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17162         
17163 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17164
17165         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17166         (crichton@gimp.org). Beginning of support for sparc/linux.
17167
17168         * mini-sparc.c: Optimize retrieval of LMF address.
17169
17170 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17171
17172         * exceptions-ppc.c:  handle alloca in methods with clauses.
17173
17174 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17175
17176         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17177
17178 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17179
17180         * mini.c: Delegate most of the abort signal work to 
17181           mono_thread_request_interruption, which also handles Stop and Suspend
17182           states.
17183
17184 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17185
17186         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17187         supports the save/restore lmf opcodes.
17188
17189 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17190
17191         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17192         by gcc-3.4 as well.
17193
17194         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17195
17196 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17197
17198         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17199         methods which contain array accesses.
17200
17201         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17202         boundaries. Fixes #58537.
17203
17204         * iltests.il: Add regression test for #58537.
17205
17206 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17207
17208         * mini-x86.c (mono_arch_local_regalloc): Last part of
17209         fix for bug #58633 (releasing register to early).
17210
17211 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17212
17213         * basic-long.cs: Add new regression test.
17214
17215 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17216
17217         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17218         register too early on the chain.
17219
17220 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17221
17222         * mini.c (create_helper_signature): Use a helper function to reduce
17223         the code which needs to be written. Also set the calling convention of
17224         icalls on windows. Fixes #57840.
17225
17226 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17227
17228         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17229         exceptions-ppc.c: added helper function to get the instruction address
17230         from a signal handler context.
17231
17232 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17233
17234         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17235         from gonzalo.
17236
17237 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17238
17239         * helpers.c: Add new env variable to pass args to objdump.
17240         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17241
17242 2004-05-17  Radek Doulik  <rodo@ximian.com>
17243
17244         * Makefile.am (common_sources): added abcremoval.h so it get
17245         disted and daily mono packages on go-mono.com will build again
17246
17247 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17248
17249         * abcremoval.c: Fixed coding style, added copyright header.
17250
17251         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17252
17253         * mini.h: Added prototype for abc removal main function.
17254
17255         * build_relations_propagation_table.pl: Added copyright header.
17256
17257 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17258
17259         * basic-long.cs: reg test for complex ceq_long bug.
17260
17261 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17262
17263         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17264         reg in long and clob case (bug #58343). Fixed/added comments.
17265
17266 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17267
17268         * mini.c (mono_jit_runtime_invoke): Follow new convention
17269         of calling the invoke method with an function pointer.
17270
17271 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * ChangeLog: Fix author of memory leak patch.
17274
17275 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17276
17277         * Makefile.am: fix make dist as well...
17278
17279
17280 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17281
17282         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17283         on archs where pointers are 4 bytes long.
17284
17285         * Makefile.am: Added abcremoval.c source file.
17286
17287         * abcremoval.c: Added abcremoval.c.
17288
17289         * abcremoval.h: Added abcremoval.h.
17290
17291         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17292
17293         * inssel.brg: Enabled bounds check removal.
17294
17295         * mini.c: Added support for abcrem optimization.
17296
17297         * mini.h: Added abcrem optimization label.
17298
17299         * driver.c: Added support for abcrem optimization.
17300
17301         * propagated_relations_table.def: Added propagated_relations_table.def.
17302
17303 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17304
17305         * mini.c, cfold.c: fix style.
17306
17307 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17308
17309         * mini.c: handle issue with the low-level implementation of
17310         some long opcodes (bug #54209).
17311
17312 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17313
17314         * basic.cs: test for my new cmov stuff.
17315
17316 2004-05-13      Patrik Torstensson
17317
17318         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17319         opt and added peephole documentation.
17320
17321 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17322
17323         * tramp-ppc.c: rewrote the generic trampoline code.
17324
17325 2004-05-11      Patrik Torstensson
17326
17327         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17328
17329 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17332
17333         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17334         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17335
17336         * mini.c: Add new icalls for AsAny marshalling.
17337
17338 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17339
17340         * tramp-ppc.c, mini-ppc.c: more cleanups.
17341
17342 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17343
17344         * mini.c: no warnings.
17345
17346 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17347
17348         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17349
17350 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17351
17352         * mini.c: In the thread abort signal handler, if the thread is in the
17353         process of being stoped, don't throw the Abort exception, just stop the
17354         thread.
17355
17356 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17357
17358         * tramp-ppc.c: removed old code.
17359
17360 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17361
17362         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17363         do some simple speed optimizations on ppc.
17364
17365 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17366
17367         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17368         and large offsets in load/store.
17369
17370 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17371
17372         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17373         it causes regressions.
17374
17375 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17376
17377         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17378         support.
17379
17380 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17381
17382         * jit-icalls.c: remove warnings.
17383         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17384         speedups for unsafe code.
17385
17386 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17387
17388         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17389
17390 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * basic-calls.cs: Add new regression test.
17393
17394         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17395         more portable.
17396
17397         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17398
17399         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17400         is no longer used.
17401
17402 2004-05-06      Patrik Torstensson
17403
17404         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17405         long reg allocation in any reg (not only eax:edx) and implemented 
17406         long shl/shr ops in asm instead of helpers.
17407
17408 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17409
17410         * mini-sparc.h: Fix warnings.
17411
17412         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17413         stack.
17414
17415         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17416         separate statement for clarity.
17417
17418         * mini-sparc.c: Update status.
17419
17420 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17421
17422         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17423         here.
17424
17425 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17426
17427         * inssel-ppc.brg: another small pre-release workaround:
17428         we don't do overflow detection for long_sub_un.
17429
17430 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17431
17432         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17433         (also works around a weird ppc bug: 57957).
17434
17435 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17436
17437         * tramp-ppc.c: trampoline fixes.
17438
17439 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17440
17441         * mini-ppc.c: fixed typos.
17442
17443 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17444
17445         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17446         at the top of the stack. Fixed typos. Use a frame registers
17447         for all the methods with exception clauses.
17448
17449 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17450
17451         * exceptions-ppc.c: restore fp registers.
17452
17453 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17454
17455         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17456         order from the stack top (moved the stack room to save the
17457         return value for trace after the param area). Fixed corruption
17458         in restoring registers on unwind.
17459
17460 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17461
17462         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17463
17464 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17465
17466         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17467         and prolog/epilog for methods that use it. Allow
17468         enough param area room for varargs methods. Fix miguel's
17469         breakage in exception handling.
17470
17471 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17472
17473         * Makefile.am: run genmdesc only on current arch.
17474
17475 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17476
17477         * exceptions-x86.c:
17478         * mini-x86.h: fix the build on windows.
17479
17480 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * 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.
17483
17484         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17485
17486         * mini-exceptions.c: New file.
17487         
17488         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17489         Move some parts of the x86 exception handling code to an 
17490         arch-independent file so it can be shared with other ports.
17491
17492 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17493
17494         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17495
17496 2004-04-26  David Waite  <mass@akuma.org>
17497
17498         * driver.c: remove comma from end of enumeration declaration
17499
17500 2004-04-26  Jackson Harper  <jackson@ximian.com>
17501
17502         * driver.c: parse config file before loading first assembly. This
17503         allows the user gac to be enabled/disabled. 
17504         
17505 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17506
17507         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17508         simpler mechanism: we do not care what is encoded initially
17509         (branch absolute or relative), we care about the code and its
17510         target.  I kept the old code for reference for now.
17511
17512         The new code tries first to determine if the jump is anywhere in
17513         the -/+32 absolute meg range, if it succeeds, it encodes using the
17514         absolute branch;  If not, it tried to find something in the
17515         relative range, if not, it uses the handle_thunk code. 
17516
17517 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17518
17519         * exceptions-ppc.c: use the correct ip register on macosx.
17520
17521 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17522
17523         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17524
17525 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17526
17527         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17528         Raise exception on integer divide by zero by hand since the hw
17529         doesn't support it. Handle NaNs in FP compares.
17530
17531 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17532
17533         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17534         code reducing duplication between the platforms and enabled
17535         signal exception handling (on linux for now).
17536
17537 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17538
17539         * exceptions-ppc.c: more macosx support.
17540
17541 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17542
17543         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17544
17545 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17546
17547         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17548
17549 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17550
17551         * iltests.il: more tests.
17552
17553 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17556         vars as well.
17557
17558 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17559
17560         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17561
17562 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17563
17564         * liveness.c: Mark variables as volatile in all basic blocks reachable
17565         from exception clauses.
17566
17567 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17568
17569         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17570         inlining.
17571
17572 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17573
17574         * iltests.il, basic.cs: more tests for regalloc.
17575
17576 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17577
17578         * iltests.il: Some tests for register allocation modifications
17579         I have locally.
17580
17581 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17582
17583         * exceptions.cs: Add regression test for bug #56782.
17584
17585         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17586         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17587         the beauty of fixing the same thing in 5 different files...
17588
17589 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17590
17591         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17592         methods.
17593
17594 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17595
17596         * mini.c: Add support for STRWLPARRAY marshalling convention.
17597
17598 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17599
17600         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17601         to init the context to setup the regs pointer).
17602
17603 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17604
17605         * exceptions-ppc.c: more exceptions work.
17606
17607 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17608
17609         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17610         not allowed.
17611
17612 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17613
17614         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17615         can use the memory directly.
17616
17617         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17618
17619         add x86_add_membase, x86_sub_membase, x86_mul_membase
17620
17621 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17622
17623         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17624         GENERAL_REGS they were also hardcoded for all PPC ports.
17625
17626         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17627
17628         Remove hard-coded limit for floating point registers, use
17629         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17630
17631         Notice that in MacOS X calling conventions you can fit a lot more
17632         floating point values in registers, so I should update the PInvoke
17633         test to excercise the passing of floating point values on the
17634         stack (currently broken).
17635         
17636 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17637
17638         * tramp-ppc.c (create_trampoline_code): Added
17639         JUMP_TRAMPOLINE_SIZE. 
17640         (ppc_magic_trampoline): Follow the pattern from
17641         x86_magic_trampoline: if code is set to zero, return. 
17642         (create_trampoline_code): Always pass MonoMethod to the jump
17643         trampoline, before it was passing a null.
17644         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17645         share the code with mono_arch_create_jit_trampoline. 
17646
17647         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17648         implemented.
17649         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17650         implemented.  
17651
17652         * cpu-g4.md: Added length for jmp instruction, the worst case
17653         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17654         for save_lmf).
17655
17656 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17659
17660 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17661
17662         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17663         before each IL instruction.
17664
17665         * mini.c (CEE_BOX): Fix warnings.
17666
17667 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17668
17669         * mini.c: removed a few unused vars and extra whitespace.
17670
17671 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17672
17673         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17674         checks.
17675         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17676         index.
17677         (OP_GETCHR): use the above
17678         (CEE_LDELEMA): use the above.
17679
17680         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17681         version of the generic impl.
17682         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17683         (CEE_LDELEMA): use the above.
17684
17685 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17688         Fixes #56317.
17689
17690         * iltests.il: Added new regression test for #56317.
17691
17692 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17693
17694         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17695         under NetBSD. Fixes #56450.
17696
17697         * liveness.c (update_gen_kill_set): Fix previous patch.
17698
17699 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17700
17701         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17702
17703 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17704
17705         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17706         ldsfld and ldsflda.
17707
17708         * inssel-sparc.brg: Add more optimizations.
17709
17710         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17711
17712 2004-04-01  Martin Baulig  <martin@ximian.com>
17713
17714         * mini.c (handle_box): New static function; moved the
17715         implementation of CEE_BOX here.
17716         (mono_method_to_ir): Added `constrained_call' variable.
17717         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17718         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17719         mono_method_get_constrained() to get the method.
17720
17721 2004-04-01  Martin Baulig  <martin@ximian.com>
17722
17723         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17724         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17725         (mono_method_to_ir): We don't need these macros anymore since
17726         mono_class_get_full() already takes care of it. 
17727
17728 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17729
17730         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17731         use @function (as doesn't accept #function here) and check the return
17732         value of system and stop if fails.
17733
17734 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17735
17736         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17737
17738 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17739
17740         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17741
17742         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17743
17744         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17745         #56223.
17746
17747         * basic-long.cs: Add test for negation of Int64.MinValue.
17748
17749 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17750
17751         * mini-sparc.c: Update status.
17752
17753         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17754
17755         * exceptions-sparc.c: Fix return value in filters.
17756
17757         * inssel-sparc.brg: Fix register allocation in some rules.
17758
17759 2004-03-28  Martin Baulig  <martin@ximian.com>
17760
17761         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17762         if neccessary.  
17763
17764 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17765
17766         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17767         
17768         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17769         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17770         remove unused conv_u4 opcode.
17771
17772         * mini-x86.c: Remove valgrind workaround since it slows down things
17773         even when mono is not run under valgrind.
17774
17775 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17776
17777         * mini-sparc.c: Update status.
17778
17779         * inssel-sparc.brg: Add some optimizations.
17780
17781         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17782         future delay slot filling. Add support for varargs, tail calls and JMP.
17783
17784         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17785         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17786
17787         * inssel.brg: Fix register allocation in OP_ARGLIST.
17788
17789         * inssel.brg: Fix warnings.
17790
17791 2004-03-25  Martin Baulig  <martin@ximian.com>
17792
17793         * mini.c (inflate_generic_field): Removed.
17794         (mini_get_method): Removed, use mono_get_method_full(),
17795         (mini_get_class): Removed, use mono_class_get_full().
17796         (mono_method_to_ir): Pass our generic context to
17797         mono_field_from_token().        
17798
17799 2004-03-25  Martin Baulig  <martin@ximian.com>
17800
17801         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17802         of a `MonoMethod *'.
17803         (mini_get_method): Take a `MonoGenericContext *' instead
17804         of a `MonoMethod *'.
17805         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17806         a new local variable called `generic_context' which holds the
17807         current `MonoGenericContext *'; use it to lookup things.
17808
17809 2004-03-24  Martin Baulig  <martin@ximian.com>
17810
17811         * mini.c (mini_get_class): New static method; if we're inside a
17812         generic instance, inflate the class if neccessary.
17813         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17814
17815 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17816
17817         * iltests.il: New regression test for #55976.
17818
17819         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17820         #55976.
17821
17822 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17823
17824         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17825         output.
17826
17827 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17828
17829         * liveness.c: Consider SSA stores as well as loads when making vars
17830         volatile.
17831
17832         * exceptions.cs: New regression tests for register allocation.
17833         
17834 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17835
17836         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17837         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17838           domain lock only to protect puntual access to data structures.
17839           Added access lock for sighash, jit_icall_hash_name, 
17840           jit_icall_hash_addr and domain->code_mp.
17841
17842 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * driver.c: Print SIGSEGV handling method.
17845
17846         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17847
17848         * mini.c (setup_jit_tls_data): Handle case when this is called
17849         multiple times for a thread.
17850
17851         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17852         is different from fbxx_un. Fixes #54303. Also use constants instead of
17853         magic numbers in a lot of places.
17854
17855 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17856
17857         * exceptions.cs: Fix cctor test when --regression is used.
17858
17859 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17860
17861         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17862         for Linux/ppc.
17863
17864 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17865
17866         * inssel-ppc.brg: fixed register assignments for some rules.
17867
17868 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17869
17870         * exceptions.cs: Add test for exceptions in static constructors.
17871
17872         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17873         static constructors outside the domain lock. Fixes #55720.
17874
17875 2004-03-17  Martin Baulig  <martin@ximian.com>
17876
17877         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17878         (inflate_generic_field): Take the `MonoMethod *' instead of the
17879         `MonoClass *' and added support for generic method.
17880         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17881         have a `field->parent->gen_params', only inflate the field if it's
17882         an open constructed type.
17883
17884 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17885
17886         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17887         exception object instead of the preconstructed ones.
17888
17889 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17890
17891         * mini.c: reverted changed to sigsegv_signal_handler commited
17892         accidentally in the previous patch.
17893
17894 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17895
17896         * mini.c:
17897         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17898         running --aot with an old assembly.
17899
17900 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17901
17902         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17903         point values.
17904
17905         * mini-sparc.c: Add support for v9 branches with prediction.
17906
17907 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17908
17909         * mini.c (mini_init): #warning is GNUC only
17910
17911         * mini-sparc.h: implement __builtin_frame_address
17912         and __builtin_return_address for Sun C compiler
17913
17914 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17915
17916         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17917
17918 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * basic-calls.cs: Add test for unaligned byref long argument passing.
17921
17922         * mini-ops.h: Add sparcv9 compare and branch instructions.
17923
17924         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17925         v9 instructions if we have a v9 cpu.
17926
17927         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17928         registers for global allocation.
17929
17930         * exceptions-sparc.c: Fixes.
17931         
17932 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * liveness.c (mono_analyze_liveness): Optimized version.
17935
17936         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17937
17938         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17939         sparc work.
17940
17941         * basic-float.cs basic-calls.cs: New regression tests.
17942
17943 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17946         sigaltstack implementation.
17947
17948         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17949         
17950         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17951         stuff if SIGSEGV_ON_ALTSTACK is not defined.
17952
17953 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
17954
17955         * mini.c: Fix warnings.
17956         
17957         * mini.c (mono_resolve_patch_target): New function which contains the
17958         arch independent part of the patching process.
17959
17960         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
17961         patching code to a separate function.
17962
17963 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
17964
17965         * mini.c (add_signal_handler): ifdef out on Windows
17966
17967 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
17968
17969         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
17970         cpu-sparc.md: Add exception handling support + other fixes.
17971
17972         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
17973         typed GC detection in --version.
17974
17975         * basic.cs exceptions.cs: New regression tests.
17976
17977         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
17978         the arch specific code can store data during a compilation.
17979
17980         * mini-ops.h: Add OP_SETFRET.
17981
17982         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
17983         function, register a separate icall for each arity, so the icalls can
17984         get a wrapper.
17985         
17986         * mini.c (mono_print_tree): Print negative offsets in a more readable
17987         form.
17988         
17989         * mini.c: Make signal handling work on sparc.
17990         
17991         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
17992
17993         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
17994
17995         * jit-icalls.c: Emulate truncl by aintl on solaris.
17996
17997         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
17998
17999 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18002
18003 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18004
18005         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18006         a MarshalByRef type, inline a method that performs the check, taking into
18007         account that the object can be a proxy. Also implemented tow new opcodes:
18008         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18009         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18010         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18011
18012 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18013
18014         * mini-ppc.c: if a relative branch displacement is too big
18015         but it points to and area reachable with an absolute branch, 
18016         avoid the thunks.
18017
18018 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18019
18020         * mini.c: optimize small copies in cpblk.
18021
18022 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18023
18024         * basic-calls.cs basic-float.cs: New regression tests.
18025
18026         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18027         negative offsets from %fp. Implement localloc. Fix local register 
18028         allocation. Fix the case when the this argument needs to be saved to
18029         the stack. Implement some missing opcodes.
18030
18031 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18032
18033         * mini.c (mini_method_compile): Reenable global regalloc in methods
18034         with exception handlers.
18035
18036         * linear-scan.c (mono_varlist_sort): Fix warning.
18037
18038         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18039
18040         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18041         regalloc costs.
18042
18043         * liveness.c: Make all variables uses in exception clauses volatile, to
18044         prevent them from being allocated to registers. Fixes #42136.
18045
18046 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18047
18048         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18049         causes regressions.
18050
18051         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18052         argument to mono_arch_regalloc_cost.
18053
18054         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18055         precisely.
18056
18057 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18058
18059         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18060         Make the cost of allocating a variable to a register arch dependent.
18061
18062         * basic-calls.cs: Fix compilation of tests.
18063         
18064         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18065         helper function to cut back on the number of #ifdefs needed.
18066
18067         * mini-ppc.c: Fix compilation.
18068
18069         * basic-calls.cs: New regression tests.
18070
18071         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18072
18073         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18074         of l0 since that is callee saved.
18075
18076         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18077         to virtual calls.
18078
18079         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18080         of delay instruction.
18081
18082         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18083
18084         * mini.h (MonoCallInst): Add 'virtual' flag.
18085
18086         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18087
18088 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * *.cs: New regression tests.
18091
18092         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18093         work.
18094
18095         * mini.c (mono_runtime_install_handlers): Fix build.
18096
18097         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18098         'signal_stack_size' members.
18099
18100         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18101         alternate signal stack.
18102
18103         * exceptions-x86.c: Add stack overflow handling.
18104
18105         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18106         functions to arch independent code.
18107
18108         * mini.c (mono_print_tree): Print more detailed info for load_membase
18109         opcodes.
18110         
18111 2004-02-23  Martin Baulig  <martin@ximian.com>
18112
18113         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18114
18115 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18116
18117         * mini-x86.c: fixed reg allocation for div/rem.
18118
18119 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18120
18121         * driver.c (mono_main): Report some configuratio options on --version.
18122
18123 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18124
18125         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18126         low in the address space. Correctly flush memory in thunks where we
18127         output native code.
18128
18129 2004-02-20  Martin Baulig  <martin@ximian.com>
18130
18131         * mini.c (mini_get_method): New static method; inflate all generic
18132         methods and methods in open generic instances.
18133         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18134         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18135
18136 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18139
18140         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18141
18142 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18143
18144         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18145
18146         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18147         it compile using Sun's compiler.
18148
18149 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * 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.
18152
18153         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18154
18155 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18156
18157         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18158         code.
18159         * mini-ppc.c: handle calls outside of the allowed range with thunks
18160         allocated using the code manager.
18161         * tramp-ppc.c: use the code manager to hold generated native code.
18162         Fixed the magic trampoline to just patch vtable entries.
18163
18164 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18167         independent file.
18168
18169 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18170
18171         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18172         PPC.
18173
18174         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18175         if we have a working __thread implementation.
18176
18177         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18178         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18179
18180 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * mini-x86.c: Fix compilation under gcc 2.
18183         
18184 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18187         contains a call to the wrapped function.
18188
18189         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18190         OP_<CALL>_IMM opcodes, and use them under X86.
18191         
18192         * mini.c (mono_jit_find_compiled_method): Fix warning.
18193
18194         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18195
18196         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18197
18198         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18199         functionality to mini.c.
18200
18201         * mini.c (mono_create_jump_trampoline): New function to create a jump
18202         trampoline. Return a compiled method instead of a trampoline if it
18203         exists. Add a cache for jump trampolines.
18204
18205         * mini.c (mono_jit_find_compiled_method): New function to return a
18206         compiled method if it exists.
18207
18208         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18209         mono_arch_create_jit_trampoline.
18210
18211         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18212         a jump trampoline. Fixes #52092.
18213         
18214 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18215
18216         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18217         which is not up-to-date. Add check_corlib_version () instead.
18218
18219         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18220         have to call it.
18221         
18222         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18223         since newer valgrind versions do not need it.
18224
18225         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18226         compile a method with a given set of optimizations.
18227
18228         * mini.c: Compile icall wrappers on-demand instead of at startup.
18229
18230         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18231         wrapper for an icall.
18232
18233 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18236         #54063.
18237
18238         * iltests.il: Add test for non-empty stack before switch instruction.
18239
18240 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18241
18242         * mini.c: Add support for new stringbuilder marshalling conventions.
18243
18244         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18245
18246 2004-02-01  Martin Baulig  <martin@ximian.com>
18247
18248         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18249         in `ginst->mtype_argv'.
18250
18251 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18252
18253         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18254         facilitate grepping.
18255
18256 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18257
18258         * mini.c: fixed buglet in initobj generic implementation for references.
18259
18260 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18261
18262         * Makefile.am: make the version script conditional.
18263         * jit-icalls.c: handle missing truncl().
18264
18265 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * exceptions.cs: Add more tests for double->int conversion.
18268
18269         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18270         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18271
18272 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18273
18274         * driver.c: make --verbose --version emit an error
18275         if the loaded corlib doesn't match the runtime version.
18276
18277 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18278
18279         * mini-ppc.h: export ppc_patch().
18280         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18281         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18282         on par or better than on MacOSX.
18283
18284 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18287         mono_lookup_pinvoke_call.
18288
18289         * mini-x86.c: Under windows, the default pinvoke calling convention is
18290         stdcall. Fixes #52834.
18291
18292         * mini.c (optimize_branches): Add an upper bound to the number of
18293         iterations to prevent infinite loops on strange loops. Fixes #53003.
18294
18295 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18298         and ISINST. Fixes #52093.
18299
18300         * objects.cs (test_0_vector_array_cast): New tests.
18301         
18302 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18303
18304         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18305         checking in Array.Set ().
18306
18307         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18308         #52590.
18309
18310         * object.cs (test_0_multi_array_cast): New regression test.
18311
18312 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18313
18314         * exceptions-ppc.c: fix build on Linux/PPC.
18315
18316 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18319         running under valgrind.
18320         (x86_magic_trampoline): Fix build bustage.
18321
18322         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18323         negative values as well. This is needed for the encoding of the line number
18324         info, since sometimes the line numbers are not in increasing order.
18325
18326 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * cpu-pentium.md (localloc): Increase the size of the localloc 
18329         instruction since it is a loop under Win32.
18330
18331         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18332         allocation.
18333
18334 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18335
18336         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18337         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18338         Max Horn (max@quendi.de). Fix file names in comments.
18339
18340 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18341
18342         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18343         avoid stack overflow.
18344         (replace_usage): Avoid uninitialized variable warnings.
18345
18346         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18347         and taking the address of valuetype variables.
18348
18349 2004-01-03  Patrik Torstensson
18350
18351         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18352         for other purposes than FP later on.
18353
18354 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18357         of tail calls.
18358
18359 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18360
18361         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18362
18363 2003-12-30  Patrik Torstensson <p@rxc.se>
18364
18365         * mini-x86.h: Decreased number of availiable fp regs.
18366         Solves corner cases with FP spilling.
18367
18368 2003-12-23  Patrik Torstensson <p@rxc.se>
18369
18370         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18371         for floating point stack tracking / spilling on x86. 
18372         Fixes bug #49012.
18373         
18374         * basic-float.cs: added float mul overflow test.
18375
18376 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18377
18378         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18379
18380 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18381
18382         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18383         supports for cond branches that overflow the immediate
18384         overflow offset. mcs can compile simple programs.
18385
18386 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18387
18388         * exceptions-ppc.c: exception handling support wip:
18389         finally handlers get run on exception.
18390
18391 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18392
18393         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18394         profiling.
18395
18396 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18397
18398         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18399         initial support for stack walking and unwinding.
18400
18401 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18402
18403         * driver.c (mono_main): Make corlib-out-of-sync message more 
18404         descriptive. Also remove verify_corlib call.
18405
18406 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18407
18408         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18409         not overlap with other call's arguments, too.
18410
18411 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18412
18413         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18414         move to arch-specific code the choice of arch-specific
18415         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18416         * mini.c: ensure emulation calls will not interleave
18417         with other calls.
18418
18419 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18420
18421         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18422         the magic trampoline stack frame is dropped before executing
18423         the new method.
18424
18425 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18426
18427         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18428         and integer to fp conversions. Added support for overflowing
18429         arguments on the stack. Reserve a couple more registers as temps.
18430         Added support for aot compilation (as output still needs to be
18431         tweaked, though).
18432
18433 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18434
18435         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18436         Don't overwrite return register in some corner cases.
18437
18438 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18441         static constructors when AOT compiling.
18442
18443         * driver.c (mono_main): Call mono_check_corlib_version.
18444
18445 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18446
18447         * cpu-g4.md, basic.cs: fixed div target register.
18448
18449 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18450
18451         * mini-ppc.c, basic.cs: shl_imm fix with test.
18452
18453 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18454
18455         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18456         structures by value. Misc fixes.
18457         * objects.cs: more tests.
18458
18459 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18460
18461         * mini-ppc.c: lconv.ovf.i implemented.
18462
18463 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18464
18465         * mini.c:
18466         (mini_init): don't error out if someone already called g_thread_init.
18467
18468 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18469
18470         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18471         to be any type per the spec. Fix abnormal memory usage when
18472         the same object is repeatedly thrown.
18473
18474 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18475
18476         * mini.c: check for overruns in IL code.
18477
18478 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18479
18480         * TODO: Add/remove some todo entries.
18481
18482 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * driver.c (mono_main): Call mono_verify_corlib.
18485
18486 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18487
18488         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18489         This has been moved to mini.c
18490         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18491         type being casted is marshalbyref it could be a proxy, so instead of
18492         emitting the type check code, emit a call to a runtime method that will
18493         perform the check by calling CanCastTo if needed.
18494
18495 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18496
18497         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18498         methods with large stack frames under Win32.
18499
18500 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * Makefile.am: Distribute regression tests.
18503
18504         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18505         at the end instead of inserting each variable into the sorted list.
18506
18507         * linear-scan.c (mono_varlist_sort): New helper function.
18508         
18509 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18510
18511         * mini.c: ensure arguments and locals are within bounds.
18512
18513 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18514
18515         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18516         related fixes.
18517
18518 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18519
18520         * mini.c (mono_cprop_copy_values): Fix crash.
18521
18522         * aot.c: Set verbosity back to 0.
18523         
18524 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18525
18526         * regalloc.c: complete memory leak fix by Laurent Morichetti
18527         (l_m@pacbell.net).
18528
18529 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18530
18531         * driver.c (main_thread_handler): Revert the previous patch.
18532
18533         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18534         under valgrind.
18535
18536         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18537         memory from the memory pool.
18538
18539         * driver.c (main_thread_handler): Turn on all optimizations when
18540         --aot is used.
18541
18542         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18543         an array for better performance.
18544
18545         * regalloc.c (mono_regstate_assign): Fix memory leak.
18546
18547         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18548         serialize the debug info.
18549
18550         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18551         debug info from the serialized representation.
18552
18553         * aot.c: Save debug info into the generated file and load it when 
18554         loading a method.
18555
18556         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18557
18558 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18559
18560         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18561         More FP-related fixes.
18562
18563 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18564
18565         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18566         and register allocation buglet. Hello world now runs.
18567
18568 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18569
18570         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18571         * tramp-ppc.c: fixed class init trampoline.
18572         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18573
18574 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18575
18576         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18577         mini.c: more ppc changes/fixes.
18578
18579 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18580
18581         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18582         Also optimize the case when the arguments are the same in the caller 
18583         and in the callee.
18584
18585         * iltests.il: Add tests for tail calls with valuetype arguments.
18586
18587 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18588
18589         * mini-ppc.c: fixes for struct return type.
18590
18591 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18592
18593         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18594         mono_spillvar_offset() to arch-specific code.
18595
18596 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18597
18598         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18599
18600 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18601
18602         * exceptions-x86.c: Fix stack space leaks.
18603         
18604         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18605         registers from the lmf if the method has save_lmf set.
18606
18607 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18608
18609         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18610         of icall wrappers into InvokeInDomain, since these are now per-domain.
18611
18612 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18613
18614         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18615         make some opcode emulation and intrinsic ops enabled/disabled 
18616         according to the architecture. More fixes.
18617
18618 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18619
18620         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18621
18622 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18623
18624         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18625         arch-specific handling for 'this' and struct return type to
18626         arch-specific code.
18627
18628 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18629
18630         * aot.c: prevent divide by zero error when reporting (it happened with
18631         Accessibility.dll).
18632
18633 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18634
18635         * mini.h (inst_switch): Remove unused macro.
18636
18637 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18638
18639         * aot.c:
18640         (load_aot_module): free 'info->methods' and 'info' properly. No more
18641         "free(): invalid pointer blah" messages when you have an old aot
18642         compiled assembly.
18643
18644 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18645
18646         * jit-icalls.c, mini.c: Added support for context static fields.
18647
18648 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18649
18650         * mini.c (mono_method_blittable): Methods which set LastError are not 
18651         blittable either. Fixes #51108.
18652         
18653 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18654
18655         * mini.c: flush icache.
18656         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18657
18658 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18659
18660         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18661
18662 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18665         safe on IA32.
18666
18667         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18668         vararg calls.
18669
18670         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18671
18672 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18673
18674         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18675         instruction when the result is discarded.
18676
18677         * iltests.il (test_0_div_regalloc): New regression test.
18678
18679         * arrays.cs: Fix compilation error.
18680
18681 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18682
18683         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18684         float rules to inssel-x86.brg: sane architectures with FP registers
18685         don't need to implement these rules.
18686
18687 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18688
18689         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18690
18691 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18692
18693         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18694         implementation of 32 bit systems.
18695
18696 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18697
18698         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18699         (Jeroen Zwartepoorte).
18700
18701 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18702
18703         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18704         the caller and the callee matches.
18705         
18706         * mini.c (mono_method_to_ir): Add comment.
18707
18708         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18709         signbit is missing on some platforms.
18710
18711 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18712
18713         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18714
18715         * mini.c (setup_jit_tls_data): Call the new function.
18716         
18717         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18718
18719         * mini-x86.c: Add experimental support for fast access to the lmf
18720         structure under NPTL/Linux 2.6.x.
18721
18722 2003-11-06  Martin Baulig  <martin@ximian.com>
18723
18724         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18725         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18726         the debugger.
18727
18728 2003-11-02  Martin Baulig  <martin@ximian.com>
18729
18730         * mini.c (inflate_generic_field): New static method.
18731         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18732         generic instance and the field is declared in a generic type, call
18733         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18734
18735 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18736
18737         * mini.h mini.c (mono_method_same_domain): New function to return
18738         whenever the caller and the callee are in the same domain.
18739
18740         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18741
18742 2003-10-30  Martin Baulig  <martin@ximian.com>
18743
18744         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18745         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18746         method parameters.
18747         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18748         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18749
18750 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18753         propagation.
18754
18755         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18756         object here, so it is in the correct appdomain etc.
18757
18758 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18761         already done.
18762         (mono_method_to_ir): Avoid freeing the type created returned from
18763         mono_type_create_from_typespec, since it is put into an internal cache
18764         by the function. Fixes pointer.exe.
18765
18766         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18767         trampolines for icalls and pinvokes as well. Fixes #33569.
18768
18769 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18770
18771         * mini.c: Update after appdomain changes.
18772
18773         * mini.c (mono_jit_compile_method_inner): Allways compile native
18774         method wrappers in the root domain, since there can only be one
18775         instance of them, whose address is stored in method->info.
18776
18777 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18780         environment variable. Instead detect automatically whenever running
18781         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18782         valgrind.h.
18783
18784 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18785
18786         * trace.c, trace.h: New files that implement the new trace option
18787         parsing. 
18788
18789         * driver.c: Document new --trace options.
18790
18791         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18792         mini-x86.c: Apply:
18793
18794         -       if (mono_jit_trace_calls)
18795         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18796
18797         * mini.h: prototypes.
18798         
18799 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18802
18803         * mini.c inssel.brg: Implement typedefbyref opcodes.
18804
18805         * mini.c (mono_jit_compile_method): Remove unused local variable.
18806
18807         * mini.c (mono_jit_compile_method_inner): Ditto.
18808         
18809 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18812         
18813         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18814
18815 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * mini.c (mono_no_aot): Remove unused global variable.
18818
18819         * mini.c: Thread safety fixes.
18820
18821 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini.c (mono_create_class_init_trampoline): Add a lock around
18824         class_init_hash_addr.
18825
18826         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18827         #30073.
18828
18829         * mini.c: Decompose the NEWARR instruction before decomposing its
18830         arguments. Fixes #30073.
18831
18832 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18835         convention.
18836
18837 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18840
18841         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18842
18843         * driver.c: Add support for compiling icall wrappers to --compile.
18844
18845 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * inssel.brg: The empty value in class->interface_offsets is -1, not
18848         0. Fixes #49287.
18849
18850 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18851
18852         * objects.cs: New test for 'is' operator on an array of interfaces.
18853
18854 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18855
18856         * tramp-ppc.c: update trampoline code to support jumps
18857         and class initialization.
18858
18859 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18860
18861         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18862
18863         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18864
18865         * inssel.brg (OP_UNBOX): Remove unused rule.
18866
18867         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18868         region instead of one for each method. Fixes #47813.
18869
18870 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * exceptions.cs (test_0_nested_finally): New regression test for
18873         nested exception handlers.
18874
18875         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18876
18877         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18878
18879         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18880         inlining.
18881
18882         * mini.c (mono_method_check_inlining): Make the inlining limit 
18883         configurable by an environment variable.
18884         
18885         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18886
18887         * mini.h: Bump AOT file version.
18888
18889         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18890         token, store the image along with the token, since the token might not 
18891         refer to the same image as the method containing the relocation, 
18892         because of inlining.
18893
18894 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * mini.c (mono_precompile_assemblies): New function to compile
18897         all methods in all loaded assemblies.
18898
18899         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18900
18901         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18902         iassign and fassign to int*, since they can contain large negative
18903         values if the register is spilled. Also added some comments. Fixes
18904         #45817.
18905
18906         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18907         under Win32. Fixes #42964.
18908
18909 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18912
18913         * aot.c: Added support for AOT compiling methods which contain calls
18914         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18915         handled.
18916         
18917         * driver.c (compile_all_methods): Run the compilation in a thread
18918         managed by mono. Fixes #44023.
18919
18920         * mini.c (mono_codegen): Print full method name in verbose output.
18921
18922         * mini-x86.c (mono_arch_patch_code): Fix warning.
18923         
18924         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18925         jumps, since the method we are jumping to might be domain-specific.
18926
18927         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18928
18929 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18930
18931         * inssel.brg: string chars are unsigned.
18932
18933 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18934
18935         * TODO: New todo item.
18936
18937         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18938         which calls mono_runtime_class_init and patches the call site to
18939         avoid further calls.
18940         (mono_arch_create_class_init_trampoline): New arch specific function 
18941         to create a class init trampoline.
18942         (create_trampoline_code): Generalized so it can create
18943         class init trampolines as well.
18944
18945         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18946         (mono_create_class_init_trampoline): New function to create and cache
18947         class init trampolines.
18948         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18949         vtable given the address of a class init trampoline. Used by the
18950         patching process.
18951         (mono_codegen): Generate a call to a trampoline instead of
18952         mono_runtime_class_init in LDSFLD[A].
18953         (mono_codegen): Add relocations for the new trampoline.
18954         
18955         * mini.h mini-x86.c aot.c: Added a new relocation type: 
18956         MONO_PATCH_INFO_CLASS_INIT.
18957
18958         * mini.h: Bump AOT version number.
18959
18960         * aot.c: Create a copy of the loaded code instead of using the original
18961         so methods which call each other will be close in memory, improving
18962         cache behaviour.
18963         
18964         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
18965         patch since it breaks the regression tests.
18966         
18967         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
18968         for the register saving instruction sequence since the 
18969         frame_state_for function in glibc 2.3.2 don't seem to detect it.
18970
18971 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * TODO: Fix todo item && remove another.
18974
18975 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
18978         previous checkin.
18979
18980         * aot.c: Moved the check for MONO_LASTAOT into the initialization
18981         function of the module.
18982
18983         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
18984         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
18985         --no-aot command line option.
18986
18987 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
18990         by Bernie Solomon (bernard@ugsolutions.com).
18991
18992         * inssel.brg: Refactor the interface offset table related code into
18993         its separate functions and add support for the AOT case.
18994
18995 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18996
18997         * aot.c (mono_aot_get_method_inner): Fix memory leak.
18998         
18999         * aot.c: Added mono_aot_verbose variable and made all debugging
19000         output depend on the value of this variable.
19001
19002         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19003         method_label and info_label.
19004
19005         * mini.h mini-x86.c aot.c: Added a new relocation type 
19006         MONO_PATCH_INFO_IID for klass->interface_id.
19007
19008         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19009         the MonoJitInfo structure.
19010
19011         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19012         a non-root appdomain in shared mode.
19013
19014 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19015
19016         * aot.c: make aot loader less verbose. Remove free of unused variable.
19017
19018 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19021
19022         * .cvsignore: Added *.dll.
19023
19024         * mini.c (mono_print_tree_nl): New function callable while debugging.
19025
19026         * mini.c (mono_print_code): Export this.
19027
19028         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19029         patched code.
19030
19031 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19032
19033         * mini.h (MonoCompile): Added 'jit_info' field.
19034
19035         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19036         the cfg structure, since it is needed by the AOT compiler.
19037
19038         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19039
19040         * aot.c: A major rewrite. Changes include:
19041         - save exception tables for methods which have them.
19042         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19043         to g_module_symbol.
19044         - reworked the file format so it is now much smaller and needs
19045         fewer relocation entries.
19046         
19047 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19048
19049         * aot.c (load_aot_module): Fix build bustage on platforms without
19050         Boehm GC.
19051
19052 2003-09-04  Martin Baulig  <martin@ximian.com>
19053
19054         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19055
19056 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19057
19058         * TODO: Some new optimization ideas.
19059
19060         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19061
19062         * aot.c: Save the optimization flags used to compile the code into
19063         the AOT module.
19064
19065         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19066         support emitting domain specific code.
19067         
19068         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19069         no longer domain neutral. It can be made domain neutral by compiling 
19070         with --optimize=shared.
19071
19072         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19073         between appdomains.
19074
19075         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19076         loading of AOT code.
19077
19078         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19079         
19080         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19081         if there is no domain neutrality information.
19082
19083 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19086         format version into the generated library.
19087
19088         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19089         callee method into the caller since one of them could be shared.
19090
19091         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19092         system exceptions from AOT code now works.
19093
19094         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19095         method if it is domain neutral and the callee is not.
19096
19097         * graph.c (cfg_emit_one_loop_level): Fix warning.
19098
19099 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19102         last checkin.
19103
19104 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19105
19106         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19107         is needed  by code which is executed before mono_runtime_init ().
19108         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19109         
19110         * mini.c (mono_thread_abort): Fix warning.
19111         (mono_jit_compile_method): Call static constructor in the AOT case too.
19112
19113         * aot.c (mono_compile_assembly): Fix warning.
19114
19115 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19116
19117         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19118
19119 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19122
19123         * cpu-pentium.md: Fix the length of call opcodes so they include the
19124         ESP restoring instruction. Fixes #47968.
19125
19126 2003-08-28  Martin Baulig  <martin@ximian.com>
19127
19128         * mini-x86.c (mono_arch_call_opcode): Added support for
19129         MONO_TYPE_GENERICINST.
19130
19131         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19132
19133 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19136         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19137
19138         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19139         metadata_section.
19140
19141 2003-08-26  Martin Baulig  <martin@ximian.com>
19142
19143         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19144         when reporting an error, set this to the actual error location.
19145         (mono_method_to_ir): Report the correct error location if
19146         get_basic_blocks() returned an error.
19147
19148 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19149
19150         * mini.c (mono_type_blittable): OBJECT is not blittable.
19151         (mono_method_blittable): Methods which have marshalling descriptors
19152         are not blittable either. Fixes #47842.
19153
19154 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19155
19156         * driver.c mini.c: Use an environment variable instead of a global 
19157         variable. Also fix the build.
19158
19159         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19160         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19161         reporting this. 
19162
19163         * driver.c mini.c: Added --with-valgrind option to turn off some
19164         code which prevents mono from running under valgrind.
19165
19166         * mini.c (mono_emit_call_args): Fixed warning.
19167
19168         * mini.c (mono_emulate_opcode): Fixed warning.
19169
19170 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19171
19172         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19173         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19174         regalloc.c, regalloc.h: specify available registers in arch-specific
19175         code and support floats in the regallocator (patch by Laurent Morichetti 
19176         <l_m@pacbell.net>)
19177
19178 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19179
19180         * mini.c: mono_thread_current() can be called only after
19181         mono_runtime_init(): rearrange code to not call it early on.
19182
19183 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19184
19185         * mini.c: allocate jump tables in the code mempools.
19186
19187 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19188
19189         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19190         freed.
19191
19192 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19193
19194         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19195         12 to 16.  This fixes bug #47453.
19196
19197
19198 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19199
19200         * mini-ppc.c: fixed indexed load and unsigned compares.
19201
19202 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19203
19204         * mini.c: reenabled installation of handler for
19205           thread abort signal.
19206
19207 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19208
19209         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19210         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19211         until it's fixed and actually useful.
19212
19213 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19214
19215         * inssel-long32.brg: couple more opcodes implemented.
19216
19217 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19218         
19219         * mini-sparc.c: Even more opcodes implemeted.
19220
19221 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19222
19223         * mini-sparc.c: More opcodes implemented.
19224
19225 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19226
19227         * mini-sparc.c: More opcodes implemented.
19228
19229 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19230
19231         * inssel-sparc.brg: Add some needed rules.  Direct
19232         copy from PPC.
19233         * Makefile.am: Use inssel-sparc.brg
19234         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19235         an assert happy for now.
19236
19237 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19238
19239         * mini-sparc.c: Fixed compile errors.
19240         * exceptions-sparc.c: Same.  We now produce a mono binary 
19241         on sparc-linux.  Yea.
19242
19243 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19244
19245         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19246         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19247         They compile, but do not work.
19248
19249 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19250
19251         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19252         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19253         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19254         (ct@gentoo.org).
19255
19256 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19257
19258         * mini.c: more opcodes implemented and better support for generics.
19259
19260 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19261
19262         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19263         * mini.c, mini.h: first cut at generics support: some new instructions 
19264         added and changed the behaviour of some of the existing ones.
19265
19266 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19267
19268         * mini.c: Removed definition of metadata_shared mutex here.
19269
19270 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19271
19272         * mini-x86.c: make vararg calls work for instance methods.
19273
19274 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19275
19276         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19277         returns the arguments in a separte list, now.
19278
19279 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19280
19281         * aot.c, mini.c: updates for array type representation changes.
19282
19283 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19284
19285         * mini.c: register function to perform jit shutdown.
19286
19287 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19288
19289         * mini.c: use a faster allocator if possible.
19290
19291 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19292
19293         * aot.c: some cleanups and portability changes.
19294
19295 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19296
19297         * mini.c: use faster allocation for CEE_BOX if possible.
19298
19299 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19300
19301         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19302         Moved inlined mempcy code to its own function so that is can be
19303         reused. Added an inline memset function as well (optimized initobj).
19304         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19305
19306 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19307
19308         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19309
19310 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19311
19312         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19313         arch code can setup the cpu for CLR execution, if needed.
19314         We use it on x86 to set the precision of FP operations.
19315
19316 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19317
19318         * mini.c: disable some optimizations if we can guess they'll cost too
19319         much for a given method.
19320
19321 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19322
19323         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19324         
19325 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19326         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19327         info collection support.
19328
19329 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19330
19331         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19332         is now implemented in the profiling API. Get rid of a couple of
19333         unnecessary global variables.
19334
19335 2003-06-15  Nick Drochak <ndrochak@gol.com>
19336
19337         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19338         * cpu-g4.md: add op_bigmul and op_bigmul_un
19339         * cpu_pentium.md: add op_bigmul_un
19340         * inssel-long32.brg: add rule for unsigned bigmul
19341         * mini-ops.h: define OP_BIGMUL_UN
19342         * mini-x86.c: THE BUG: handle (un)signed properly
19343         * mini.c: choose unsigned opcode if needed.
19344         This set of patches fixes bug #44291
19345
19346 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19347
19348         * mini.c (optimize_branches): improved to handle all kinds of
19349         conditional branches.
19350
19351 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19352
19353         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19354         don't raise exceptions.
19355
19356 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19357
19358         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19359         to arch-specific files.
19360
19361 2003-06-09  Martin Baulig  <martin@ximian.com>
19362
19363         * Makefile.am (libs): Added $(LIBGC_LIBS).
19364
19365 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19366
19367         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19368         and OP_ATAN (fixes bug#44293).
19369
19370 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19371
19372         * Makefile.am, mini-x86.c: rename cpu description array to
19373         pentium_desc, since some compilers define the 'pentium' preprocessor
19374         symbol.
19375
19376 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19377
19378         * mini.c (mini_select_instructions): add explicit branch if the
19379         following block is not the false target of a conditional branch -
19380         we need this with any optimization that reorder or remove bblocks
19381
19382         * mini.c (optimize_branches): bug fixes
19383
19384 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19385
19386         * mini.c (mono_method_to_ir): inline static readonly fields
19387
19388         * ssa.c (fold_tree): start cfold support for long (very simple
19389         cases only)
19390
19391         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19392
19393 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19394
19395         * inssel.brg: fixed memcpy (bug #44219).
19396
19397 2003-06-05  Dick Porter  <dick@ximian.com>
19398
19399         * driver.c: Set the glib log levels to not abort if g_message
19400         recurses.
19401
19402         g_set_prgname() has to happen before mini_init() so that the
19403         process handle gets the info.
19404         
19405 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19406
19407         * driver.c: add intrins to the default optimizations to get wider
19408         exposure.
19409
19410 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19411
19412         * mini.h: some large basic blocks will overflow a 16-bit
19413         integers for symbolic registers.
19414
19415 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19416
19417         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19418         (mono_arch_output_basic_block): fix bug 43499 
19419
19420 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19421
19422         * mini.c: kill duplicated definition of mono_debug_format.
19423
19424 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19425
19426         * mini-x86.c, arrays.cs: fixed register allocation bug.
19427
19428 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19429
19430         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19431
19432         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19433
19434 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19435
19436         * mini.c:
19437         (print_method_from_ip): also print source location information if
19438         available.
19439
19440 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19441
19442         * mini.c (mono_find_block_region): bug fix in region code
19443         (mini_method_compile): enable removing unreachable code again, but
19444         only in methods without exception clauses.
19445
19446 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19447
19448         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19449         Implemented arglist opcode and handling of TypedReference type.
19450         Fixed x86 call convention when a structure is returned.
19451         Minimal support for calling static vararg methods.
19452
19453 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19454
19455         * mini.c (mini_method_compile):  always remove unreachable code,
19456         because the code in them may be inconsistent  (access to dead
19457         variables for example).
19458
19459 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19460
19461         * driver.c, debug-mini.c: warning fixes.
19462
19463 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19464
19465         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19466
19467 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19468
19469         * mini.c: thread-static fields are registered in mono_class_vtable(),
19470         so ensure the function is called before checking for them.
19471
19472 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19473
19474         * mini.c (optimize_branches): fix for bug 43586
19475
19476         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19477         overflow (fixes Bug #43639)
19478
19479 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19480
19481         * mini.c, objects.cs: allow the use of stobj for primitive types.
19482
19483 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19484
19485         * mini.c: be less strict about argument checking until we support
19486         running the verifier.
19487
19488 2003-05-27  Nick Drochak <ndrochak@gol.com>
19489
19490         * basic-long.cs: tests for (ulong)int * (ulong)int also
19491         * mini.c: use the same trick for (ulong)int * (ulong)int
19492
19493 2003-05-27  Nick Drochak <ndrochak@gol.com>
19494
19495         * basic-long.cs: add regression test for (long)int * (long)int
19496         * cpu-pentium.md: add op_bigmul specification
19497         * inssel-long32.brg: add OP_BIGMUL rule
19498         * mini-ops.h: add OP_BIGMUL
19499         * mini-x86.c: register allocator: handle case where src1 needs to be
19500         in EAX.
19501         * mini.c: substitute special BIGMUL opcode in the tree for 
19502         (long)int * (long)int
19503
19504 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19505
19506         * jit-icalls.c: call the type ctor on field access if needed.
19507
19508 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19509
19510         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19511         to a method (including results of ldelema, bug#43207).
19512
19513 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19514
19515         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19516         colors to show exception handler blocks.
19517
19518         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19519         (fix for pinvoke7.cs).
19520
19521 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19522
19523         * mini.h, mini.c: ensure correct initialization order for types that
19524         require it. Prepare for lazy compilation of jit icall wrappers.
19525         Provide a name for opcode emulation to reduce unneeded mallocing.
19526
19527 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19528
19529         * mini-x86.c: better register restoring code and profiling
19530         support for tail calls.
19531
19532 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19533
19534         * mini.h, driver.c: prepare for leaf methods optimization.
19535
19536 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19537
19538         * mini.c: get targets of branches before converting a method.
19539
19540 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19541
19542         * mini.c (optimize_branches): added some experimental code (disbaled) 
19543
19544 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19545
19546         * mini.c (optimize_branches): fix branch to branch optimization 
19547
19548         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19549
19550         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19551
19552         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19553
19554         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19555         if needed.
19556
19557 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19558
19559         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19560         enable use of interface variables again.
19561
19562         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19563         I1 to registers because there is no simply way to sign extend 8bit
19564         quantities in caller saved registers on x86.
19565
19566         * inssel-float.brg: set costs of some rules to 2 so
19567         that monobure always select the arch. specific ones if supplied,
19568         regardless of the order we pass the files to monoburg.
19569
19570 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19571
19572         * mini.c, mini-x86.c: since the magic trampoline for jumps
19573         can't patch the code directly, we do it as soon as the
19574         method gets compiled.
19575
19576 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19577
19578         * mini-x86.c, mini.h: introduce a new patching method
19579         to support CEE_JMP and tail calls.
19580         * mini.c: obey tail.call. Don't precompile methods target
19581         of CEE_JMP.
19582         * tramp-x86.c: new trampoline code to handle methods
19583         reached through a jump.
19584
19585 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19586
19587         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19588         bit values to registers
19589
19590 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19591
19592         * mini.c (mono_compile_get_interface_var): share interface
19593         variables if possible.
19594
19595 2003-05-16  Martin Baulig  <martin@ximian.com>
19596
19597         * debug-mini.c (mono_init_debugger): New function to initialize
19598         the debugger.  This is not in the debugger since it needs to
19599         access some of mini's internals.
19600
19601 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19602
19603         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19604
19605 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19606
19607         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19608         for value type handling.
19609
19610 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19611
19612         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19613         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19614
19615 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19616
19617         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19618           the constructor through a proxy.
19619
19620 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19621
19622         * jit-icalls.c, inssel.brg: fixes to array element address
19623         calculations.
19624
19625 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19626
19627         * mini-x86.c (is_regsize_var): allocate pointer to registers
19628
19629 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19630
19631         * driver.c: fixed typo, added intrins to the set of optimizations
19632         tested with regressions.
19633
19634 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19635
19636         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19637         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19638         test case.
19639
19640 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19641
19642         * inssel.brg: remove some common pop instructions without side effects
19643
19644 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19645
19646         * inssel-x86.brg: fixed thinko in int to double conversions.
19647
19648 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19649
19650         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19651
19652 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19653
19654         * inssel-long32.brg: two more missing instructions.
19655
19656 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19657
19658         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19659         if not already set.
19660
19661 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19664         correctly.
19665
19666         * basic-float.cs: Added tests for negative zero.
19667
19668 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19669
19670         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19671         a couple of missing operations for long casts, with test cases.
19672
19673 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19674
19675         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19676
19677 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19678
19679         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19680         code size estimation.
19681
19682 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19683
19684         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19685         abstract methods (fix bug 42542)
19686
19687         * aot.c: add ability to handle array types
19688         
19689 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * mini.c: Call the _specific versions of the object allocation
19692         functions if possible.
19693
19694 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19695
19696         * driver.c: call setlocale ().
19697
19698 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19699
19700         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19701         windows build.
19702
19703 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19704
19705         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19706
19707         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19708         wrappers (fix bug 42122)
19709
19710 2003-05-04  Martin Baulig  <martin@ximian.com>
19711
19712         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19713
19714         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19715         s/mini_set_defaults/mono_set_defaults/g.
19716
19717 2003-05-04  Martin Baulig  <martin@ximian.com>
19718
19719         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19720
19721 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19722
19723         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19724         (reported by Don Roberts).
19725
19726 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19727
19728         * mini.c: temporarily work around two bugs for this release.
19729
19730 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19731
19732         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19733         that contains -export-dynamic and it makes using the ld script
19734         useless.
19735         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19736
19737 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19738
19739         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19740         specific cpu.
19741
19742 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19743
19744         * mini.c: make sure leave calls all the needed finally blocks,
19745         even when the target jumps out of multiple exception clauses.
19746
19747 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19748
19749         * ldscript, Makefile.am: add linker script to reduce the number of
19750         exported symbols (should also fix the issues with libwine defining
19751         some of the same symbols in io-layer).
19752
19753 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * driver.c (mini_main): Avoid assertion when no file name is given on 
19756         the command line.
19757
19758 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19759
19760         * driver.c: added --version/-V command line option.
19761         Added the inline optimization in the regression tests.
19762
19763 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19764
19765         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19766         to the type in the method signature (fixes bug#42134).
19767
19768 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19771
19772 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19773
19774         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19775
19776 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19777
19778         * driver.c: fixed bug #42100.
19779
19780 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19781
19782         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19783
19784 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini.c: moved most of the code required to do inlining to its own
19787         function so it can be reused. Inline also ctors if appropriate.
19788
19789 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19792         the runtime can call mono API functions.
19793
19794 2003-04-27  Martin Baulig  <martin@ximian.com>
19795
19796         * debug-mini.c (mono_debug_init_method): Added
19797         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19798         send a notification to the debugger.
19799
19800         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19801         running in the Mono Debugger, just pass the breakpoint number to
19802         mono_debug_init_method().
19803
19804         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19805
19806 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19807
19808         * mini.c: allow some more unsafe compares.
19809
19810 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19811
19812         * mini-x86.c, Makefile.am: make distcheck works (partially from
19813         a patch by Richard Lee <r.h.lee@attbi.com>).
19814         * regset.c, regset.h: removed, they are unused.
19815
19816 2003-04-25  Dick Porter  <dick@ximian.com>
19817
19818         * driver.c: Usage reports the name as 'mono' not 'mini'
19819         * exceptions-x86.c: Build and run on freebsd
19820
19821 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19822
19823         * Makefile.am: install the program with the 'mono' name and
19824         the library as libmono instead of mini and libmini.
19825
19826 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19827
19828         * driver.c: provide the APIs for the embedding interface of the old jit.
19829
19830 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19831
19832         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19833
19834 2003-04-23  Martin Baulig  <martin@ximian.com>
19835
19836         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19837
19838         * driver.c: Added `--debug' command line argument to enable
19839         debugging support.
19840
19841 2003-04-23  Martin Baulig  <martin@ximian.com>
19842
19843         * debug.[ch]: Removed.  The code is now in
19844         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19845
19846         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19847         last six months.
19848
19849 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19850
19851         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19852
19853 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19854
19855         * mini.c:
19856         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19857         mono_domain_finalize.
19858         (mini_method_compile): use mono_method_profile* if the the option is
19859         enabled.
19860
19861 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19864         methods with their wrapper.
19865
19866         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19867         methods with their wrapper.
19868
19869         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19870         their wrapper.
19871
19872         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19873         wrapper.
19874
19875         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19876         methods.
19877
19878 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19879
19880         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19881
19882 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19883
19884         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19885         of the mempool. This is slightly faster and uses less memory
19886
19887 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19888
19889         * mini.c: avoid O(n) allocation for variables.
19890
19891 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19892
19893         * mini.c: handle items on the stack after inlining methods.
19894
19895 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19896
19897         * mini.c: make the method->opcode optimization dependent
19898         on MONO_OPT_INSTRINS and do it lazily.
19899
19900 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19901
19902         * driver.c: print overall results at the end of regression run.
19903
19904 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19905
19906         * inssel.brg: don't overwrite symbolic registers.
19907
19908 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19909
19910         * inssel-x86.brg: fix conversion from long to float.
19911
19912 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19913
19914         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19915
19916 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
19919
19920         * driver.c: Added --print-vtable option as in the old JIT.
19921
19922 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19923
19924         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19925
19926 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19927
19928         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19929
19930 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * mini.c regalloc.c regalloc.h: Fix memory leak.
19933
19934 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19935
19936         * aot.c (mono_aot_get_method): register all used strings
19937
19938 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19939
19940         * mini.c: always intern strings references with ldstr at compile time.
19941
19942 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * Makefile.am: add BUILT_SOURCES.
19945
19946 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19947
19948         * driver.c: give a better error message when the assembly to execute
19949         doesn't have an entry point.
19950
19951 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
19952
19953         * Makefile.am: added hack for automake
19954
19955         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
19956         correct sematics.
19957
19958         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
19959
19960 22003-04-07  Martin Baulig  <martin@ximian.com>
19961
19962         * Makefile.am: Added Makefile.am.
19963
19964         * debugger-main.c: Removed, this is now in the debugger where it
19965         belongs.
19966
19967         * mini.pc.in: Call this package `mini' for the moment.
19968
19969
19970
19971
19972
19973
19974
19975
19976
19977
19978
19979
19980
19981
19982