2009-04-06 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2
3         * dwarfwriter.c: Use _ to separate class name 
4         components as gdb can't handle '.'. Represent reference variables
5         as 'class <NAME>&'.
6         
7         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
8
9         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
10         
11         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
12
13         * gc-test.cs: New file with GC stack marking tests.
14         
15         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
16         negative numbers for vfp.
17
18         * basic-float.cs: Add a test.
19         
20 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
21
22         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
23
24 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
25
26         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
27         part of tasklet/continuation support.
28
29 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
30
31         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
32         amd64 opcodes inside an ifdef.
33
34         * dwarfwriter.c: Emit inheritance information for classes, emit fields
35         of complex types.
36         
37         * dwarfwriter.c (emit_type): Emit the class info for classes.
38
39 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
40
41         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
42
43         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
44
45         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
46
47         * ssa.c (mono_ssa_compute): Fix some memory leaks.
48
49 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
50
51         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
52
53         * mini-llvm.c: Update comments.
54
55         * mini.h (COMPILE_LLVM): New macro.
56
57         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
58
59         * ssa.c (mono_ssa_compute): Ditto.
60         
61         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
62         the unwind ops from a DWARF FDE.
63
64         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
65         methods by extracting the dwarf unwind ops from the unwind info generated
66         by LLVM.
67         
68         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
69         calls.
70
71         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
72         addressing modes.
73
74 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
75
76         * Makefile.am (llvm_sources): Enable this.
77
78         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
79         failing back to the JIT if something cannot be handled.
80
81         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
82         compiling with LLVM.
83
84         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
85         compiling with LLVM.
86
87         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
88         compiling with LLVM.
89
90         * mini-ops.h: Add a few opcodes needed by LLVM.
91
92         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
93         has no unwind info.
94
95         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
96         backend.
97
98         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
99
100         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
101
102 2009-04-01  Mark Probst  <mark.probst@gmail.com>
103
104         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
105         ridiculously large methods.
106
107 2009-03-31  Martin Baulig  <martin@ximian.com>
108
109         * debug-debugger.c (debugger_remove_breakpoint): Call
110         mono_debugger_remove_class_init_callback ().
111
112 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
113
114         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
115         right before emitting code, not at the start.
116
117         * mini.c (mono_postprocess_patches): Extract this into a separate function
118         from mono_codegen ().
119
120         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
121         byref types correctly.
122
123 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
124
125         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
126         by the last change.
127
128 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
129
130         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
131         indirect calls, this avoids problems where get_vcall_slot () would get
132         confused by the native code for the instruction preceeding the call.
133         (mono_arch_get_vcall_slot): Simplify this.
134         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
135
136         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
137         register allocator now seems to depend on them instead of the data in
138         cpu-<ARCH>.md.
139
140         * mini.c (mini_method_compile): Throw the correct type of exception if
141         mono_method_get_header () fails because of a loading error.
142
143 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
144
145         * mini.c (mini_method_compile): Clear the loader error if the method
146         header cannot be decoded.
147
148         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
149         interface methods on proxies correctly.
150
151         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
152         this argument for vtype methods. Add precise liveness info for arguments.
153
154         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
155         LIVERANGE_START/END opcodes.
156
157         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
158         for arguments and values in registers.
159
160 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
161
162         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
163         return a valuetype. Fixes #487518.
164
165         * iltests.il: Add a test.
166         
167         * aot-compiler.c: Use mono_thread_create () to create helper threads.
168
169         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
170         closed over a null reference correctly.
171
172 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
173
174         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
175
176 2009-03-25  Mark Probst  <mark.probst@gmail.com>
177
178         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
179         allocated to the same registers as fixed sregs.
180
181 2009-03-24  Mark Probst  <mark.probst@gmail.com>
182
183         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
184         ATOMIC_CAS_IMM ops.
185
186         * method-to-ir.c: Handle more cases for
187         Interlocked.CompareExchange.
188
189         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
190         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
191         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
192
193 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
194
195         * aot-runtime.c (decode_method_ref): Fix a warning.
196
197         * unwind.c (mono_unwind_frame): Ditto.  
198
199 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
200
201         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
202         (mono_compile_assembly): Enable the binary writer for full-aot as well.
203
204         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
205         fix the handling of large values in the ALU_PC_G0_NC relocation.
206
207 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
208
209         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
210
211 2009-03-22  Mark Probst  <mark.probst@gmail.com>
212
213         * method-to-ir.c (mono_spill_global_vars): Support for ternary
214         ops.
215
216 2009-03-22  Mark Probst  <mark.probst@gmail.com>
217
218         * method-to-ir.c: MINI_OP3 needs a comma.
219
220         * method-to-ir.c, mini.h, mini.c: Remove
221         mono_init_op_sreg_counts ().
222
223 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
224
225         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
226         OP_JMP.
227         
228         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
229         assertion.
230
231         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
232
233         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
234         code somewhat.
235
236 2009-03-21  Mark Probst  <mark.probst@gmail.com>
237
238         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
239         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
240         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
241         operations.
242
243 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
244
245         * driver.c: Change location of gc_wrapper.h.
246
247         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
248         inside finally clauses correctly. Fixes #485721.
249
250         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
251         after the change above.
252
253         * exceptions.cs: Add a test.
254         
255 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
256
257         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
258
259         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
260         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
261         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
262
263         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
264         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
265
266 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
267
268         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
269         Simplify logic for ensure_method_is_allowed_to_call_method. 
270         Handle wrappers on callers.
271
272 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
273
274         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
275         them don't run yet.
276
277         * basic-simd.cs: Fix the names of some test methods.
278
279 2009-03-18  Geoff Norton  <gnorton@novell.com>
280
281         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
282
283 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
284
285         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
286
287 2009-03-17  Jb Evain  <jbevain@novell.com>
288
289         * driver.c: remove now uneeded call to mono_gc_base_init before
290         mono_profiler_load.
291
292 2009-03-17  Jb Evain  <jbevain@novell.com>
293
294         * dwarfwriter.c (token_handler): handle more cases.
295
296 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
297
298         * method-to-ir.c: Remove more dead code (that was required only
299         because of method_is_safe). Fix compiler warnings.
300
301 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
302
303         * method-to-ir.c: Remove unneeded/useless method_is_safe
304         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
305
306 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * mini.c (mini_method_compile): Print the method been compiled with
309         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
310         for people not familiar with the runtime.
311
312 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
313
314         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
315         a managed object which is later put into a GList. Return its class instead.
316
317         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
318         stack slots when using sgen.
319
320 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
321
322         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
323
324 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
325
326         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
327         > so it works on the first vreg as well.
328
329 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
330
331         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
332         trigger randomly.
333
334         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
335         
336         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
337         implement GArray.
338
339 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
340
341         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
342         native->IL offset mapping.
343
344 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
345
346         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
347
348         * basic.cs: Add a test.
349
350 2009-03-11  Mark Probst  <mark.probst@gmail.com>
351
352         * mini-x86.c (mono_arch_output_basic_block): Use different
353         registers in case the ones we want to overwrite are used by the
354         other operand.  Fixes regression in #480807.
355
356 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
357
358         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
359
360         * dwarfwriter.c (emit_line_number_info): The line number info for
361         IL code was off by one. Fix that.
362
363         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
364         stack.
365
366 2009-03-09  Mark Probst  <mark.probst@gmail.com>
367
368         Contributed under the terms of the MIT/X11 license by Steven
369         Munroe <munroesj@us.ibm.com>.
370
371         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
372         Fixes #483462.
373
374 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
375
376         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
377         as well.
378
379 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
380
381         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
382         the delegate ctor handling code. Fixes #482638.
383         
384         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
385         #481458.
386
387         * iltests.il.in: Add a test.
388         
389         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
390         mini-posix.c.
391
392 2009-03-05  Mark Probst  <mark.probst@gmail.com>
393
394         * mini-trampolines.c (mono_create_jump_trampoline): If the method
395         is shared generic code, return the trampoline, even if the method
396         has already been compiled.  Fixes #479763.
397
398         * mini.c, mini.h: New function
399         mono_jit_find_compiled_method_with_jit_info() which is the same as
400         mono_jit_find_compiled_method() but also returns the jit info.
401
402 2009-03-05  Mark Probst  <mark.probst@gmail.com>
403
404         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
405         for methods which actually have one.  For all other methods, make
406         sure the this argument var is live the whole method.
407
408         * mini.c (mini_method_compile): Every shared method has a
409         this/vtable/mrgctx info.  Fixes #480807.
410
411 2009-03-05  Mark Probst  <mark.probst@gmail.com>
412
413         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
414         generic/imt thunks where some entries branch through the vtable,
415         while other entries branch directly.
416
417 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
418
419         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
420
421         * mini-windows.c: Ditto.
422         
423         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
424         ctors.
425
426 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
427
428         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
429         down an assert.
430
431 2009-03-04  Mark Probst  <mark.probst@gmail.com>
432
433         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
434         #481403.
435
436 2009-03-04  Mark Probst  <mark.probst@gmail.com>
437
438         * exceptions-x86.c: Include debug-mini.h - fixes build.
439
440 2009-03-04  Martin Baulig  <martin@ximian.com>
441
442         * debug-mini.c: Clean up the exception API and add documentation.
443         (mono_debugger_handle_exception): New public method; this is
444         called when throwing an exception or encountering an unhandled one.
445         (mono_debugger_call_exception_handler): Formerly known as
446         mono_debugger_handle_exception(); this is used to tell the
447         debugger that we're about to invoke an exception handler.
448
449 2009-03-04  Martin Baulig  <martin@ximian.com>
450
451         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
452         ../metadata/mono-debug-debugger.c; save and reset exception state.
453
454 2009-03-02  Martin Baulig  <martin@ximian.com>
455
456         * debug-mini.c: Moved the debugger exception handling here from
457         ../metadata/mono-debug-debugger.c.
458
459         * debug-mini.h
460         (MonoDebuggerExceptionAction): New exception typedef.
461
462         * debug-mini.c
463         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
464
465         * exceptions-amd64.c
466         (mono_amd64_throw_exception): Use the new debugger exception
467         handling code.
468
469         * mini-exceptions.c
470         (mono_handle_exception_internal): Don't call
471         mono_debugger_unhandled_exception() here.
472
473 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
474
475         * mini.c aot-compiler.c: Update after the changes to 
476         mono_marshal_get_runtime_invoke ().
477
478         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
479         Virtual generic methods might not have method->slot set, work around
480         that.
481
482         * generics.cs: Add a test.
483
484 2009-03-02  Geoff Norton  <gnorton@novell.com>
485
486         * mini.c:
487         * driver.c: Allow signal chaining of SIGFPE as well.
488
489 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
490
491         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
492         this since it now receives the method not its generic context in the
493         IMT reg.
494
495         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
496         generic/imt thunks where some entries branch through the vtable, while
497         other entries branch directly.
498
499         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
500
501         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
502         support for interface methods as well.
503
504         * mini-trampolines.c: Add support for virtual generic methods in interfaces
505         using the normal IMT thunks.
506
507         generics.cs: Add new tests.
508         
509         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
510         the generic inst to the generic imt thunks. This fixes AOT support, 
511         improves consistency with the normal IMT thunks, and makes it easier to
512         add support for interface generic virtual methods later.
513
514         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
515         
516 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
517
518         * driver.c (mono_set_signal_chaining): New public API function to enable
519         signal chaining on POSIX platforms.
520
521         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
522         (si@lindenlab.com) to implement signal chaining. The original patch was
523         contributed under the MIT X/11 license:
524         https://bugzilla.novell.com/show_bug.cgi?id=318894
525
526 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
527
528         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
529         too until it can be made to run on amd64.
530
531 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
532
533         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
534         to  get_generic_context_from_code () + get_call_info () if possible.
535
536 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
537
538         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
539         suspend-on-sigsegv functionality.
540
541         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
542         to suspend when a native SIGSEGV is received. This is useful for debugging
543         crashes which don't happen under gdb, since a live process contains more
544         information than a core file.
545
546         * mini-exceptions.c (mono_print_thread_dump): Use 
547         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
548
549         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
550
551         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
552         
553         * basic-float.cs: Disable the tests which currently fail on amd64.
554
555         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
556         value to mono_arch_patch_callsite () to fix crashes.
557         
558         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
559
560 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
561
562         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
563         nop code by patching the call address to point to the nullified class init
564         trampoline, as the former does not seem to be safe on SMP machines.
565
566 2009-02-23  Mark Probst  <mark.probst@gmail.com>
567
568         * mini-ops.h: Fix the argument types for a few x86 opcodes where
569         they were wrong.
570
571 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
572
573         * basic-float.cs basic-calls.cs: Fix warnings.
574
575 2009-02-22  Mark Probst  <mark.probst@gmail.com>
576
577         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
578         correct frame pointer in the LMF.  Should fix #478394.
579
580 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
581
582         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
583
584         * image-writer.c: Make the binary writer less verbose.
585
586 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
587
588         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
589         are called from runtime invoke wrappers.
590
591 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
592
593         * cpu-ppc.md (store_memindex): Increase the size of this.
594
595 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
596
597         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
598
599         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
600
601         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
602         OP_LCONV_TO_R_UN.
603
604         Last fix for of #467201.
605
606
607 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
608
609         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
610
611         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
612         and long_conv_to_r8_2:
613
614         Fixed part of #467201.
615
616 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
617
618         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
619
620         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
621         conversion to 32 bits.
622
623         * cpu-x86.md: Increase the size of int_conv_to_r4.
624
625         * basic-float.cs: Add a test for this.
626
627         Fixed part of #467201.
628
629 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
630
631         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
632
633         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
634         conversion to 64 bits.
635
636         * basic-float.cs: Add a test for this.
637
638         Fixed part of #467201.
639
640 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
641
642         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
643
644         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
645         This behavior is compatible with MS.
646
647         * iltest.il.in: Add a test for this.
648
649         Fixed part of #467201.
650
651 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
652
653         Extracted from a patch by Kornél Pál <kornelpal@gmail.com>.
654
655         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
656         change the precision of the value.
657
658         * cpu-x86.md: Define len for float_conv_to_r4.
659
660         * basic-float.cs: Add a test for this.
661
662         Fixed part of #467201.
663
664 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
665
666         * mini.c: Adjust locking order to the new semantics where the loader lock
667         comes first.
668
669 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
670
671         * aot-runtime.c:
672         * mini-amd64.c:
673         * mini-arm.c:
674         * mini-ia64.c:
675         * mini-mips.c:
676         * mini-ppc.c:
677         * mini-sparc.c:
678         * mini-trampolines.c:
679         * mini-x86.c:
680         * mini.c:
681         * tramp-alpha.c:
682         * tramp-amd64.c:
683         * tramp-arm.c:
684         * tramp-hppa.c:
685         * tramp-ia64.c:
686         * tramp-mips.c:
687         * tramp-ppc.c:
688         * tramp-s390.c:
689         * tramp-s390x.c:
690         * tramp-sparc.c:
691         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
692
693 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
694
695         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
696         as it is incorrect.
697
698 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
699
700         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
701         for cctors if needed.
702
703 2009-02-17  Mark Probst  <mark.probst@gmail.com>
704
705         * mini-ppc.c: Fix build on Darwin.
706
707 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
708
709         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
710         version instead of 3 as valgrind doesn't like version 3.
711
712         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
713
714         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
715         usable for hashing methods.
716         (emit_extra_methods): Use the new hash to avoid putting every method in the
717         same hash bucket.
718
719         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
720
721         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
722         whenever a method ref could match a method.
723         
724         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
725         test to fail.
726         
727         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
728         methods refs.
729
730         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
731
732         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
733         the encoding buffer.
734
735         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
736         mono_method_get_header () on inflated methods as an optimization.
737
738 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
739
740         * ssa.c (fold_ins): Fix another crash if the instruction following the
741         switch was optimized away.
742
743 2009-02-16  Mark Probst  <mark.probst@gmail.com>
744
745         Contributed under the terms of the MIT/X11 license by Steven
746         Munroe <munroesj@us.ibm.com>.
747
748         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
749
750 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
751
752         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
753         around the mono_domain_alloc calls, it is now done by the functions
754         themselves.
755
756         * aot-compiler.c (compile_method): Only add wrappers referenced by
757         the method if compiling with full AOT.
758         (mono_compile_assembly): Error out if --aot=full is specified on
759         a platform where it is not supported.
760
761         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
762         on ARM too.
763
764         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
765         AOT support.
766
767         * aot-runtime.c (load_named_code): Handle 
768         mono_arm_throw_exception_by_token.
769
770         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
771
772         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
773         unaligned.
774
775         * Makefile.am (fullaotcheck): Exit if a test fails.
776
777         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
778         on ARM.
779         (mono_compile_assembly): Handle the assembler failing.
780
781         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
782         accepting subsections of .bss.
783
784         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
785         was optimized away.
786
787         * aot-compiler.c: Remove some unused includes.
788         
789         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
790         now in MonoImageWriter.
791
792         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
793         code sequence which matches a non-virtual call. Fixes #472654.
794
795 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
796
797         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
798         xdebug code.
799         
800         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
801         use the image/dwarf writers directly.
802
803         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
804         field.
805
806         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
807         MonoDwarfWriter.
808
809         * image-writer.h: Fix some typos.
810
811         * dwarfwriter.h dwarfwriter.c: New files.
812         
813         * aot-compiler.c: Extract the DWARF info writing functionality into a 
814         separate module.
815
816         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
817         argument to return unwind info.
818
819         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
820
821         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
822         
823         * aot-runtime.c (decode_method_ref): Add a case for 
824         MONO_AOT_METHODREF_WRAPPER_NAME.
825
826         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
827         for AOT.
828
829         * aot-compiler.c (encode_method_ref): Use the new constants.
830
831         * aot-runtime.c (decode_method_ref): Ditto.
832
833         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
834         be compiled, not the icall itself.
835
836 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
837
838         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
839         using decode_method_ref ().
840
841         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
842         convert it to an in32. Fixes #475859.
843
844         * arrays.cs: Add a test.
845
846 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
847
848         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
849         OP_LCONV_TO_U2.
850
851         * basic-long.cs: Add a test.
852
853 2009-02-12  Mark Probst  <mark.probst@gmail.com>
854
855         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
856         remove the frame pointer in leaf methods which don't receive any
857         arguments, don't throw exceptions and don't do dynamic stack
858         allocations.
859
860 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
861
862         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
863         the fail_tramp changes. Hopefully fixes #475132.
864
865 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
866
867         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
868         instead of mono_metadata_signature_dup_full.
869
870 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
871
872         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
873         for processing jump tables. Fixes #473787.
874
875 2009-02-11  Mark Probst  <mark.probst@gmail.com>
876
877         * mini-generic-sharing.c: mini_method_get_context() just calls
878         mono_method_get_context_general() now.
879
880         * mini.c, mini.h: Moved get_object_generic_inst(),
881         construct_object_context_for_method() and
882         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
883
884 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
885
886         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
887         basic block fell through to its successor bblock without a branch. Fixes
888         #474718.
889
890         * iltests.il.in: Add a test.
891         
892         * aot-compiler.c (encode_method_ref): Encode methods of array types.
893         (can_encode_patch): We can now handle arrays of generic parameters and
894         array methods.
895
896         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
897
898         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
899         the AOT file to avoid some #ifdefs in aot-runtime.c
900
901         * mini.h: Bump AOT file format version.
902
903 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
904
905         * Makefile.am (fullaotcheck): Make this run the tests.
906
907         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
908
909 2009-02-10  Mark Probst  <mark.probst@gmail.com>
910
911         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
912         individually.  Fixes #473482.
913
914 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
915
916         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
917
918 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
919
920         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
921         (mono_compile_assembly): Hush compile warnings about
922         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
923         code path.
924
925 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
926
927         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
928
929         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
930
931         * aot-compiler.c: Fix arm support.
932
933         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
934         img_writer_emit_unset_mode () function.
935
936         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
937         (mono_unwind_get_dwarf_pc_reg): Ditto.
938
939         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
940         Move almost all platform specific code to a set of arch_ functions, 
941         and document them to ease porting.
942         
943         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
944
945         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
946
947         * aot-compiler.c: Extract the image writing functionality into a separate
948         module to reduce the size of this file.
949
950 2009-02-09  Geoff Norton  <gnorton@novell.com>
951
952         * mini-s390.c: Fix the signature of emit_sig_cookie.
953
954 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
955
956         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
957
958         * aot-runtime.c (is_shared_got_patch): Ditto.
959
960         * aot-runtime.c (load_named_code): Cope with the fact that 
961         decode_got_entry () won't decode the patch fully if its corresponding got
962         entry is already filled.
963         
964         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
965         Initialize *ji.
966         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
967
968         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
969         as the moving pointer instead of 'buf' for consistency with the rest of the
970         codebase.
971         (mono_arch_create_monitor_exit_trampoline): Ditto.
972
973         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
974         generic_class_init trampolines.
975         (add_generic_class): Extract some code from add_generic_instances () into a
976         separate function so it can be called from other places too.
977         (compile_method): Call add_generic_class () for the classes of inflated methods
978         referenced by the method.
979         (can_encode_patch): Allow references to generic parameters.
980
981         * aot-runtime.c: Add support the patches required by the new trampolines.
982         
983         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
984         support.
985
986         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
987         full-aot support.
988
989         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
990         this from get_throw_pending_exception, make the signature full aot compatible.
991
992         * Makefile.am (fullaotcheck): New target to run full-aot tests.
993
994         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
995
996         * exceptions.cs: Add a test.
997
998 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
999
1000         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
1001         use the DWARF_DATA_ALIGN constant instead.
1002
1003         * exception-<ARCH>.c: Update after the above change.
1004
1005         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
1006         dwarf unwinder.
1007
1008         * mini-arm.c: Enable the dwarf unwinder.
1009
1010         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
1011         instead of mono_class_setup_vtable ().
1012
1013 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1014
1015         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
1016         dwarf unwinder.
1017
1018         * mini-x86.h: Enable the dwarf unwinder.
1019
1020 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
1021
1022         Fix mcs/tests/test-7.cs
1023         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
1024         2009-02-03.
1025
1026 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini.c (print_jit_stats): Remove some unused statistics.
1029
1030 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
1033
1034 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1035
1036         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
1037         the method we get from mono_object_get_virtual_method() because
1038         that function does it properly, now.
1039
1040 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
1043         opcodes. Fixes #472775.
1044
1045 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1046
1047         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
1048         fact that mono_find_jit_info() sometimes returns the context
1049         corresponding to the jit info in new_ctx.  Fixes #472600.
1050
1051 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
1054         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
1055         klass->enum_basetype directly.
1056
1057         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
1058         enum subtypes.
1059
1060         * unwind.c: Avoid 0 sized arrays.
1061
1062 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
1065         size on systems with 64k pages. Fixes #471389.
1066
1067 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1068
1069         Contributed under the terms of the MIT/X11 license by Steven
1070         Munroe <munroesj@us.ibm.com>.
1071
1072         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
1073         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
1074         necessary.
1075
1076 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1077
1078         Contributed under the terms of the MIT/X11 license by Steven
1079         Munroe <munroesj@us.ibm.com>.
1080
1081         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
1082         comparison fix.
1083
1084         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
1085         The trampoline can be longer on PPC64.
1086
1087 2009-02-04  Mark Probst  <mark.probst@gmail.com>
1088
1089         Contributed under the terms of the MIT/X11 license by Steven
1090         Munroe <munroesj@us.ibm.com>.
1091
1092         * mini-ppc.c: Compiler warning fixes and trivial code
1093         simplifications.
1094
1095 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
1098         ins->dreg which could be a hardware register, not a vreg.
1099
1100         * aot-compiler.c (emit_method_dwarf_info): Ditto.
1101         
1102         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
1103         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
1104
1105         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
1106         
1107         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
1108         ->dreg, that is not the vreg we are looking for.
1109
1110         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
1111
1112         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
1113         LIVERANGE_END.
1114
1115         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
1116         strange crashes.
1117
1118 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
1121
1122         * aot-compiler.c (emit_line_number_info): Fix line number emission when
1123         the line diff is 0.
1124
1125         * aot-compiler.c: Add xdebug support on x86.
1126
1127         * unwind.c: Add x86 support.
1128         
1129         * aot-compiler.c (emit_exception_debug_info): Control the emission of
1130         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
1131
1132         * mini.c (mini_method_compile): Ditto.
1133         
1134         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
1135         the variable index.
1136
1137         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
1138         which mimic .push_section/.pop_section in GAS.
1139         
1140         * aot-compiler.c: Emit precise live range information for variables.
1141
1142         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
1143
1144         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
1145         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
1146         them.
1147
1148         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
1149         the live ranges of variables.
1150
1151         * mini.h (struct MonoMethodVar): Add two fields containing the live range
1152         of the variable in terms of native offsets.
1153
1154 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
1155
1156         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
1157         
1158 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1159
1160         Contributed under the terms of the MIT/X11 license by Steven
1161         Munroe <munroesj@us.ibm.com>.
1162
1163         * exceptions-ppc.c (restore_regs_from_context): Correct operand
1164         order (offset then base reg) for ppc_load_multiple_regs.
1165         (emit_save_saved_regs) Correct operand order for
1166         ppc_store_multiple_regs.
1167         (mono_arch_get_call_filter): Correct operand order for
1168         ppc_load_multiple_regs.
1169
1170         * mini-ppc.c (emit_memcpy): Fix operand order for
1171         ppc_load_reg_update and ppc_store_reg_update.
1172         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
1173         (mono_arch_emit_epilog): Correct operand order for
1174         ppc_load_multiple_regs.
1175
1176         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
1177         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
1178
1179 2009-02-02  Mark Probst  <mark.probst@gmail.com>
1180
1181         * cpu-ppc64.md: Fixed storer4_memindex length.
1182
1183 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
1186         line number info.
1187         
1188         * aot-compiler.c (emit_line_number_info): Optimize this.
1189
1190 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
1191
1192         * aot-compiler.c: Disassemble tokens in the IL disassembly.
1193         
1194         * aot-compiler.c: Add debug info for methods without debug info by
1195         emitting an IL file and having the line number info referencing that file.
1196
1197         * aot-compiler.c: Optimize the size of the generated line number info.
1198
1199         * aot-compiler.c: Emit line number info in xdebug mode.
1200
1201         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
1202         million arguments.
1203
1204 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
1205
1206         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
1207
1208         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
1209         is used.
1210
1211 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * basic-calls.cs: Test for the weird crash found on arm.
1214         
1215 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * cpu-arm.md: Increase the size of storer8_membase_reg and
1218         loadr8_membase_reg to 24 bytes to accomodate the extra add.
1219
1220         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
1221         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
1222         reg to LR otherwise we'll be loading/storing from just the offset.
1223
1224 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1225
1226         Question: if we are storing gint32's inside the "*native_offset",
1227         should we change the signature to "gint32 *native_offset" to
1228         ensure that we do not have type definition problems?
1229         
1230         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
1231         an int * as this is what the other function expects, causes
1232         problems with Freescale's compiler that defined int32_t to be a
1233         long and makes int incompatible 
1234
1235 2009-01-30  Miguel de Icaza  <miguel@novell.com>
1236
1237         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
1238         filename conflict with bjam.
1239
1240 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1241
1242         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
1243         as it might use decomposed ops.
1244
1245 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
1248
1249         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
1250         is defined.
1251
1252         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
1253
1254         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
1255         offsets.
1256
1257         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
1258         way registers are stored in MonoContext on arm.
1259
1260         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
1261         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
1262
1263         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
1264
1265         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
1266
1267         * mini.c (mini_init): Register mono_isfinite.
1268
1269         * jit-icalls.c (mono_isfinite): New jit icall.
1270
1271         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
1272         
1273         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
1274         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
1275         the parent frame.
1276
1277 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
1280         separate frame and stack pointers, so we must use FP to find the register
1281         spill area.
1282         The FP reg is retrieved from the MonoContext::regs array.
1283
1284 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
1287         as FPA requires it.
1288
1289 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
1290
1291         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
1292         return R4 and R8 when not running under softfloat.
1293
1294         Fixes basic-calls.exe
1295
1296 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini-arm.c: Implement some overflow opcodes.
1299
1300 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1301
1302         * ssa.c: handle another alloca.h
1303
1304         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
1305         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
1306         MONO_ARCH_USE_SIGACTION. 
1307
1308         * aot-runtime.c, mini-exceptions.c: Replace platform define with
1309         capability defines.
1310
1311         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
1312
1313         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
1314         PPC targets as sigaction does not exist on all platforms, define
1315         this on a per-platform basis.
1316
1317         Instead of erroring out if the platform is not defined, include
1318         mini-ppc-os.h, and expect that the OS specific setting provides
1319         the required information.   
1320
1321 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * aot-compiler.c: Fix --enable-minimal=aot.
1324
1325 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
1328         previous change.
1329
1330 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * exceptions-arm.c: Fix warnings.
1333
1334         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
1335         ARM.
1336
1337         * mini-x86.c: Fix --enable-minimal=jit build.
1338
1339         * mini.c: Really fix --enable-minimal=jit build.
1340         
1341         * mini.c (construct_object_context_for_method): Move this outside
1342         the DISABLE_JIT block to fix the --enable-minimal=jit build.
1343
1344         "Backported" of r124984 from 2.0 branch.
1345         
1346         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
1347
1348         "Backport" of r124977 + r124978 from 2.0 branch.
1349         
1350         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
1351         to avoid calling mono_exception_from_token () from the throw trampoline.
1352         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
1353         for throwing corlib exceptions, this fixes full-aot support for corlib
1354         exceptions.
1355
1356         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
1357
1358 2009-01-29  Miguel de Icaza  <miguel@novell.com>
1359
1360         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
1361         part of the changes to split the code in mini into operating
1362         system specific files.
1363
1364         This patch was done by copying mini.c to the respective files to
1365         preserve SVN history.
1366
1367 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
1370
1371 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
1374         remoting-invoke-with-check wrappers of shared methods.
1375
1376         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
1377
1378 2009-01-27  Mark Probst  <mark.probst@gmail.com>
1379
1380         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
1381         optimization if the top of stack is the last instruction in the
1382         bblock.  Otherwise it might have been used after its definition.
1383         Fixes #469742.
1384
1385 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
1388         method as well when get_vcall_slot () fails to match a code sequence.
1389
1390         * mini-arm.c: Fix the android build, which doesn't have
1391         __aeabi_read_tp.
1392
1393 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
1396         the s390x build.
1397
1398 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
1399
1400         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
1401
1402 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
1405         and put its id into jinfo->used_regs. This is only used on amd64,
1406         which is currently the only platform generating unwind info.
1407
1408         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
1409         the dwarf unwinder. This is required to correctly handle async exceptions
1410         like thread abort and stack overflows, which can happen while a method
1411         is in the middle of its prolog or epilog.
1412         
1413         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
1414         the unwind info belonging to an AOTed method.
1415
1416         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
1417         into cfg->unwind_ops.
1418         
1419         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
1420
1421         * mini.c (mini_init): Call mono_unwind_init ().
1422         (mini_cleanup): Call mono_unwind_cleanup ().
1423
1424         * unwind.c: Add functions for managing a set of unwind info entries, allowing
1425         unwind info to be shared between methods.
1426
1427         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
1428         saved in the LMF.
1429
1430         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
1431         get_throw_pending_exception () to avoid initialization races.
1432
1433         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
1434         mono_arch_exceptions_init () function.
1435
1436         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
1437
1438 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * mini.c (mono_get_domain_intrinsic): New helper function.
1441         (mono_get_thread_intrinsic): Ditto.
1442
1443         * mini-arm.c mini-ia64.c: Use the new helper functions.
1444         
1445         * method-to-ir.c (mono_method_to_ir): Fix the comment for
1446         the last constrained_call change, since it is needed in the non-AOT
1447         case as well.
1448
1449         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
1450         
1451         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
1452         mono_get_lmf_addr () on arm eabi linux.
1453
1454 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
1457         code sequence which matches a non-virtual call.
1458
1459 2009-01-23  Mark Probst  <mark.probst@gmail.com>
1460
1461         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
1462         stack pointer (r1).
1463
1464 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
1467         runtime-invoke wrappers, since they are also shared based on signature.
1468
1469 2009-01-22  Mark Probst  <mark.probst@gmail.com>
1470
1471         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
1472         info from the (correct) context.
1473
1474 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
1477         
1478         * unwind.c (mono_unwind_frame): New function to unwind through a frame
1479         using dwarf unwinding info. Not yet used.
1480
1481         * mini.c (mini_init): When using xdebug, disable freeing of domains.
1482
1483 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1484
1485         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
1486         descriptors.
1487
1488         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
1489         special case and handle mono_arch_delegate_invoke_impl() returning
1490         function descriptors.
1491
1492         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
1493         trampolines return function descriptors, too.
1494
1495 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * method-to-ir.c (handle_alloc): Avoid generic instances in the
1498         out_of_line optimization.
1499
1500 2009-01-21  Martin Baulig  <martin@ximian.com>
1501
1502         * mini.h
1503         (MonoCompile): Added `disable_deadce_vars' to disable removing
1504         unused variables.
1505
1506         * mini.c
1507         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
1508         inside the debugger.
1509
1510         * liveness.c (mono_analyze_liveness): Don't remove any unused
1511         variables if `cfg->disable_deadce_vars' is set.
1512
1513 2009-01-21  Mark Probst  <mark.probst@gmail.com>
1514
1515         * method-to-ir.c: Only apply exception constructor optimization if
1516         the the method actually belongs to an exception class.  Fixes
1517         #467456.
1518
1519 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
1522         change inside a #ifdef __mono_ppc64__.
1523
1524         * aot-compiler.c (compile_method): Remove the previous limitation.
1525
1526         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
1527         on type variables in AOTed code.
1528         
1529         * aot-compiler.c (compile_method): Skip generic methods having type 
1530         constraints on their generic parameters.
1531
1532         * aot-compiler.c (compile_method): Check for methods which cannot be
1533         encoded inside RGCTX_FETCH patches as well.
1534
1535         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
1536         build.
1537
1538 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1539
1540         * method-to-ir.c: Force the vtable variable in shared generic code
1541         for the case that they might show up on a stack trace where they
1542         are needed.
1543
1544         * mini-exceptions.c: Save and use generic sharing info as well as
1545         IP in stack traces to resolve shared generic instantiations.
1546
1547 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
1550         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
1551
1552 2009-01-20  Mark Probst  <mark.probst@gmail.com>
1553
1554         * method-to-ir.c: Do generic sharing for array constructors.
1555
1556 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
1557
1558         * mini-exceptions.c (mono_print_thread_dump): Add information
1559         about the thread state using wapi_current_thread_desc.
1560
1561 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563         * basic-simd.cs: Tests for the new constructors. 
1564
1565 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
1566
1567         * mini-ops.h: Added OP_EXPAND_*
1568
1569         * cpu-x86.md: Same.
1570
1571         * mini-x86.c (mono_arch_output_basic_block): Same.
1572         
1573         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
1574
1575 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * iltests.il.in: Add a test for #467385.
1578
1579 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
1582         thread been cleaned up is not the same currently in execution.
1583
1584         Fixes appdomain-unload crashes on windows, osx and linux variants
1585         without the __thread keyword.
1586
1587 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
1590         (koush@koushikdutta.com). Implement this for android.
1591
1592         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
1593         begins with a digit.
1594
1595         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
1596         mono_marshal_get_write_barrier ().
1597
1598 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1599
1600         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
1601         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
1602         that pass them on a register pair.
1603
1604         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
1605         test was crashing due to that.
1606
1607 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
1608
1609         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
1610         trampoline code. Include ucontext.h only if available.
1611
1612 2009-01-15  Mark Probst  <mark.probst@gmail.com>
1613
1614         * mini.c: mono_domain_lookup_shared_generic() takes an open method
1615         and doesn't check whether it's sharable, like it was before
1616         removing the shared generics hash.  This brings IronPython
1617         performance back to what it was before that change.
1618
1619 2009-01-14  Mark Probst  <mark.probst@gmail.com>
1620
1621         * method-to-ir.c: Handle delegate invocation optimization earlier,
1622         otherwise it would be handled (much more slowly) by the
1623         final/sealed optimization.
1624
1625 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
1628         domain is not set. Fixes #465864.
1629
1630 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1631
1632         * method-to-ir.c: Don't stop sharing of generic methods with catch
1633         clauses - we already handle those.
1634
1635 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1636
1637         * mini.c, mini.h: lookup_generic_method() is now
1638         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
1639         making the shared_generics_hash obsolete.
1640
1641 2009-01-12  Mark Probst  <mark.probst@gmail.com>
1642
1643         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
1644         use the red zone.  Make room on the stack first and then use it,
1645         not the other way around.
1646
1647 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * mini.c (mini_init): Call mono_xdebug_init ().
1650
1651         * aot-compiler.c (mono_xdebug_init): Make this non-static.
1652
1653 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * TestDriver.cs: Add an --iter argument to run tests multiple times.
1656
1657         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
1658         trampolines.
1659
1660         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
1661         debug+unwind info for trampolines.
1662
1663         * mini.c (mono_create_unwind_op): New helper function.
1664
1665         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
1666
1667 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * aot-compiler.c: Fix the build.
1670
1671 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1672
1673         * Makefile.am: Update dtrace-prelink.sh location.
1674
1675 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
1678         optimization. Fixes #464520.
1679
1680 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
1681
1682         * mini-amd64.c : Adding code to save/restore non-volatile registers
1683            on Winx64.
1684
1685         * exceptions-amd64.c : Adding code to save/restore non-volatile 
1686           registers on Winx64.
1687
1688         Contributed under MIT/X11 license.
1689
1690 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
1693         __GNUC_MINOR__ which can break when the major version changes.
1694
1695 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1696
1697         * basic-simd.cs: Add tests for usage of the sizeof opcode.
1698
1699 2009-01-07  Geoff Norton  <gnorton@novell.com>
1700
1701         * helpers.c:  Allow mono -v -v -v to work on darwin.
1702
1703 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
1704
1705         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
1706           pattern. 
1707
1708         Contributed under MIT/X11 license.
1709
1710 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
1713         instead of directly accessing type->data.klass. Fixes #462016.
1714         (mono_allocate_stack_slots_full): Ditto.
1715
1716         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
1717         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
1718
1719         * aot-compiler.c (emit_plt): Fix ARM build.
1720
1721 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
1722
1723         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
1724         
1725         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
1726         change.
1727
1728         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
1729         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
1730         #463357.
1731
1732         * iltests.il.in: Add a regression test.
1733
1734 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1735
1736         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
1737
1738 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1739
1740         * basic-simd.cs: Add a regression test for #462457.
1741
1742 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1743
1744         * mini-ops.h: Add a definition of XPHI.
1745
1746         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
1747
1748         * ssa.c (op_phi_to_move): Handle XPHI.
1749
1750         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
1751
1752         Fixes #462457
1753
1754 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
1757
1758 2008-12-31  Geoff Norton  <gnorton@novell.com>
1759
1760         * mini-ppc.c: The prolog size allocated can be too small for darwin
1761         ppc32 under certain circumstances.  Also fix a small logic bug.
1762
1763 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
1766         while loading AOT methods.
1767
1768         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
1769         since only the former is nulled out after a successful cast. This prevents
1770         crashes with rethrown exceptions when using --debug=casts.
1771
1772 2008-12-24  Mark Probst  <mark.probst@gmail.com>
1773
1774         * mini.h: New macro for checking whether a method is final,
1775         i.e. whether the method or its class is marked final.
1776
1777         * method-to-ir.c: Use the new macro for all final-checks
1778         consistently.  Fixes the crash in the System.ServiceModel tests.
1779
1780 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1781
1782         * mini-exceptions.c (get_exception_catch_class): Corrected another
1783         overly strict assertion.
1784
1785 2008-12-23  Mark Probst  <mark.probst@gmail.com>
1786
1787         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
1788         Clobbering it is not allowed because the caller might use it as
1789         the vtable register in the interface call.
1790
1791 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1792
1793         * mini-exceptions.c (get_exception_catch_class): Corrected an
1794         overly strict assertion.
1795
1796 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
1797         
1798         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
1799
1800         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
1801
1802         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
1803
1804         * cpu-mips.md: correct lengths for certain long_ opcodes.
1805
1806         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
1807
1808         * 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().
1809         
1810 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1811
1812         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
1813         
1814 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
1815         
1816         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
1817         
1818 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
1819
1820         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
1821         next basic block.
1822         
1823 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
1824
1825         * 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
1826
1827         * 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)
1828         
1829 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
1830         
1831         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
1832         
1833 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
1836         gshared code. Fixes #458947.
1837
1838         * generics.cs: Add a test.
1839
1840 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1841         
1842         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1843         
1844         * mini-mips.c: first pass n32 code generation.
1845
1846         * mini-mips.h: datatypes and defines for n32 support.
1847
1848         * exceptions-mips.c: first pass n32 code generation.
1849         
1850         * tramp-mips.c: first pass n32 code generation.
1851         
1852         * cpu-mips.md: add long_ opcodes.
1853         
1854 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
1855
1856         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1857
1858         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1859         
1860         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1861         
1862         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1863
1864         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1865
1866         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1867
1868         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1869
1870         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
1871
1872         * helpers.c: for mips/n32, don't pass -mips32 to objdump
1873
1874 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
1877
1878 2008-12-12  Andrés G. Aragoneses  <aaragoneses@novell.com>
1879
1880         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
1881
1882 2008-12-12  Mark Probst  <mark.probst@gmail.com>
1883
1884         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
1885         descriptors for helper functions directly in front of the code.
1886
1887 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1888
1889         * method-to-ir.c: Removed an unnecessary assertion.
1890
1891 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * method-to-ir.c: Merge SGEN changes from the old JIT.
1894
1895 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * driver.c (compile_all_methods_thread_main): Handle failure of
1898         mono_get_method ().
1899
1900 2008-12-10  Mark Probst  <mark.probst@gmail.com>
1901
1902         * mini-ppc.c: Merged with mini-ppc64.c.
1903
1904         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
1905
1906         * Makefile.am: Use the same sources for PPC and PPC64.
1907
1908         * mini-ppc64.c: Removed.
1909
1910 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1911
1912         * branch-opts.c (remove_block_if_useless): Extract fall through detection
1913         code to mono_bb_is_fall_through.
1914         
1915         * branch-opts.c (mono_remove_critical_edges): Same.
1916
1917 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
1920         expect that an OP_BR_REG will be there.
1921
1922 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
1923
1924         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
1925         for the many branch ops. The original check miss OP_BR_REG.
1926
1927         Fixes #457574.
1928         
1929 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1930
1931         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
1932
1933 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
1936         while holding the aot lock.
1937
1938 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1939
1940         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
1941         
1942 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1943
1944         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
1945           to release all runtime callable wrappers held by the runtime.
1946
1947         Contributed under MIT/X11 license.
1948
1949 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1950
1951         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
1952           for Winx64.
1953
1954         Contributed under MIT/X11 license.
1955
1956 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
1959         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
1960
1961 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
1962
1963         * cpu-mips.md: fix ckfinite length
1964
1965         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
1966         (mono_arch_lowering_pass): cleanup, rearrange for clarity
1967         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
1968         
1969 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
1970
1971         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
1972         
1973 2008-12-08  Geoff Norton  <gnorton@novell.com>
1974
1975         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
1976         size by 8 bytes as well.
1977
1978 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1979
1980         * basic-simd.cs: Fix method names for Vector16b.
1981         
1982 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1983
1984         * basic-simd.cs: Fix method names for Vector16sb.
1985
1986 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1987
1988         * basic-simd.cs: Fix method names for Vector8us.
1989         
1990 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1991
1992         * basic-simd.cs: Fix method names for Vector8s.
1993         
1994 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * basic-simd.cs: Fix method names for Vector4ui.
1997
1998 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
1999
2000         * basic-simd.cs: Fix method names for Vector2l.
2001
2002 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         * basic-simd.cs: Fix method names for Vector2d.
2005
2006 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2007
2008         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
2009         that are extension methods.
2010
2011 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
2012
2013         * basic-simd.cs: Fix method names for Vector4f.
2014
2015 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
2018         as such. Fixes #456669.
2019
2020 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2021
2022         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
2023         
2024 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
2025
2026         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
2027         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
2028         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
2029         (mips_adjust_stackframe): handle FP spills
2030                 
2031         * mini-ops.h: add mips_mtc1_s2
2032         
2033         * cpu-mips.md: add mips_mtc1_s2
2034         
2035 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * unwind.c: New file, move the unwind info encoding functions here from
2038         aot-compiler.c, so they could be used at runtime too.
2039
2040 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2041
2042         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
2043         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
2044         
2045 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
2046
2047         * mini-mips.c: cleanup warnings
2048         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
2049         (mips_adjust_stackframe): handle case of taking the address of stack locals
2050         
2051 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2052
2053         * aot-compiler.c: Implement a few functions missing from the asm writer.
2054         (emit_method_code): Only write symbols for methods when using the bin
2055         writer, since the assembler can't deal with the characters in our method
2056         names.
2057
2058         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
2059
2060         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
2061         call.
2062
2063         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
2064         a bit to also restore %rax.
2065
2066 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2067
2068         * mini-ppc.c: Some simple merges from mini-ppc64.c.
2069
2070 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
2073         arguments.
2074
2075 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2076
2077         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
2078
2079         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
2080         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
2081
2082         * exceptions-ppc64.c: Removed.
2083
2084         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
2085
2086 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2087
2088         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
2089         tramp-ppc64.c.
2090
2091         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
2092
2093         * tramp-ppc64.c: Removed.
2094
2095 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
2096
2097         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
2098         the TYPESPEC table.
2099
2100 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2101
2102         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
2103
2104         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
2105         mini-ppc.h instead of mini-ppc64.h.
2106
2107         * mini-ppc64.h: Removed.
2108
2109 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2110
2111         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
2112         
2113         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
2114         
2115 2008-12-05  Mark Probst  <mark.probst@gmail.com>
2116
2117         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
2118         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
2119         code easier.
2120
2121 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2122
2123         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
2124
2125 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2126
2127         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
2128
2129 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2130
2131         * basic-simd.cs: Tests for operator == and != on Vector4f.
2132
2133 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2134
2135         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
2136
2137         * simd-intrinsics.c: Kill useless enum.
2138
2139 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2140
2141         * cpu-mips.md: add long_conv_to_ovf_i4_2
2142         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
2143
2144 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2145
2146         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
2147         
2148         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
2149
2150 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2151
2152         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
2153         
2154 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2155
2156         * basic-simd.cs: Add tests for new methods.
2157
2158 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2159
2160         * simd-intrinsics.c: Add support for operator == and !=
2161         on Vector4(u)i.
2162
2163         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
2164
2165 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
2166
2167         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
2168
2169 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
2172
2173         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
2174         MONO_PATCH_INFO_ICALL_ADDR.
2175
2176         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
2177
2178         * aot-compiler.c: Resurrect full-aot support.
2179
2180 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2181
2182         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
2183         
2184 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
2185
2186         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
2187         
2188 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
2189
2190         * basic-simd.cs: Fix tests to work under ppc.
2191         Remove tests for methods that will be removed.
2192
2193 2008-12-03  Mark Probst  <mark.probst@gmail.com>
2194
2195         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
2196         generic type (via a typedef or typeref) correctly.
2197
2198 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
2201         diagnose an assertion failure.
2202
2203 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2204
2205         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
2206         Fix trampoline size.
2207
2208         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
2209         conversion opcodes are implemented natively instead via emulation.
2210
2211 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2212
2213         * cpu-mips.md: remove mips_xori
2214
2215         * mini-ops.h:  remove mips_xori
2216
2217         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
2218
2219         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
2220         
2221         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
2222         
2223 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2224
2225         * cpu-mips.md: fix instruction lengths.
2226
2227         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
2228
2229         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
2230
2231         * mini-ops.h: fix slti / sltiu op profiles.
2232         
2233 2008-12-02  Martin Baulig  <martin@ximian.com>
2234
2235         * method-to-ir.c (mono_method_to_ir): Disable debugging
2236         information for the init locals block to make the debugger stop
2237         after all locals have been initalized.
2238
2239 2008-12-02  Martin Baulig  <martin@ximian.com>
2240
2241         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
2242         running inside the debugger.
2243
2244 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
2245
2246         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
2247         is enabled.
2248
2249         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
2250         alu->alu imm optimization which only shows if deadce is disabled.
2251
2252         * aot-compiler.c: Rename the function names for the binary and asm writers
2253         so they can coexist in the same process. Rework the xdebug code to use the
2254         asm writer. This avoids the need to call into the runtime to dump the
2255         debugging info. Add more debugging info for types.
2256
2257         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
2258
2259         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
2260         cpu description tables, they can't occur in cpu-<ARCH>.md.
2261
2262         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
2263         the stack in CEE_LDFLDA. Fixes #450542.
2264
2265         * generics.cs: Add a new test.
2266
2267 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
2268
2269         * mini-ops.h: updated MIPS opcodes
2270         * mini-mips.c: decompose long opts
2271         * mini-mips.h: decompose long opts
2272         
2273 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
2274
2275         * cpu-mips.md: fix length on int_rem_un
2276         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
2277         
2278 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
2281
2282         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
2283
2284 2008-11-29  Martin Baulig  <martin@ximian.com>
2285
2286         * mini-exceptions.c (mono_handle_native_sigsegv): Check
2287         mono_debug_using_mono_debugger() in addition to the
2288         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
2289
2290 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2291
2292         * mini-ops.h: updated more MIPS opcodes
2293         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
2294         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
2295         
2296 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2297
2298         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
2299
2300 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2301
2302         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
2303         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
2304         * mini-ops.h: correct selected mips opcode entries
2305         
2306 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2307
2308         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
2309         make them work.
2310
2311 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2312
2313         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
2314
2315 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
2316
2317         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
2318         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
2319         * mini-mips.h: disable IMT
2320         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
2321         
2322 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2323
2324         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
2325
2326 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2327
2328         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
2329
2330 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
2333         consistency.
2334
2335 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2336
2337         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2338         for Set/GetVector aligned versions.
2339
2340 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * basic-simd.cs: Add tests for Get/SetVector.
2343
2344 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2345
2346         * mini.c: Removed g_slist_append_mempool().  Now in
2347         metadata/mempool.c.
2348
2349 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2350
2351         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
2352         size properly and make the bounds check optional.
2353
2354         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
2355         for SetVector and IsAligned.
2356
2357 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * mini.c: Remove unused mono_normalize_opcodes () function.
2360
2361 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2362
2363         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
2364         using the new atomic add ops now.
2365
2366         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
2367         add.
2368
2369 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2370
2371         * mini-ppc64.c: Several fixes.
2372
2373 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2374
2375         * cpu-mips.md: added jump_table
2376         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
2377
2378 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2379
2380         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
2381
2382 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2383
2384         * mini-ops.h: corrected a handful of MIPS opcodes.
2385
2386 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2387
2388         * aot-compiler.c: MIPS to use ELF writer
2389
2390 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
2391
2392         * mini-codegen.c: remove MIPS specific assert.
2393
2394 2008-11-25  Mark Probst  <mark.probst@gmail.com>
2395
2396         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
2397         fixes.  PPC64 now passes most of the runtime regressions.
2398
2399 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
2402         volatile intervals a bit.
2403
2404 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2405
2406         * basic-long.cs: New test case.
2407
2408 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2409
2410         * mini.c (mini_method_compile): Disable globalra for large methods for 
2411         now.
2412
2413         * regalloc2.c (order_moves): Add fp support.
2414
2415         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
2416         source bblock ends with an OP_BR_REG.
2417
2418         * ratests.cs: Add a new test.
2419
2420 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2421
2422         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
2423         sharing.  PPC64 now passes generics.exe.
2424
2425 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2426
2427         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
2428
2429 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
2432         memory when mono_jit_info_table_find () can't find the method in the
2433         LMF case.
2434
2435         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
2436         AOTed code too.
2437         
2438         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
2439         writer too.
2440
2441 2008-11-23  Mark Probst  <mark.probst@gmail.com>
2442
2443         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
2444         Several fixes.  PPC64 now runs exceptions.exe and
2445         devirtualization.exe.
2446
2447 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2448
2449         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
2450         arrays.exe and basic-math.exe.
2451
2452 2008-11-22  Mark Probst  <mark.probst@gmail.com>
2453
2454         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
2455         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
2456
2457 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2458
2459         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
2460
2461 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2462
2463         * method-to-ir.c: Move bounds checking macros to ir-emit.h
2464
2465         * ir-emit.h: Move macros from method-to-ir.c to here.
2466
2467 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
2468
2469         * mini-ops.h: Correct the long simd ops to use LREG.
2470
2471 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
2474         
2475         * mini-ops.h: Correct the dreg type of a few long opcodes.
2476
2477         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
2478         Add netbsd support.
2479
2480 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
2481
2482         * mini-ppc.c: remove negative stack references in epilog
2483         for platforms that don't support the red zone.
2484
2485 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2486
2487         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
2488         point regs.  Now PPC64 passes basic-calls.exe.
2489
2490 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * basic-simd.cs: Add tests for accessors of Vector2l.
2493
2494 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2495
2496         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
2497
2498         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
2499         
2500         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
2501
2502 2008-11-21  Mark Probst  <mark.probst@gmail.com>
2503
2504         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
2505         PPC64 passes basic-long.exe.
2506
2507 2008-11-20  Mark Probst  <mark.probst@gmail.com>
2508
2509         * decompose.c: Decompose carry and overflow add on PPC64 like on
2510         other 64 bit archs.  Don't decompose sub at all on PPC64.
2511
2512         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
2513         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
2514         basic-long.exe.
2515
2516 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2517
2518         * basic-simd.cs: Add tests for accessors of Vector2d.
2519
2520 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2521
2522         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
2523
2524         * cpu-x86.md: Same.
2525
2526         * mini-x86.c (mono_arch_output_basic_block): Same.
2527         
2528         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
2529
2530 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2531
2532         * basic-simd.cs: Add tests for accessors of Vector4f.
2533
2534 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
2537
2538         * cpu-x86.md: Same.
2539
2540         * mini-x86.c (mono_arch_output_basic_block): Same.
2541         
2542         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
2543
2544 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2545
2546         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
2547
2548 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2549
2550         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
2551
2552         * cpu-x86.md: Same.
2553
2554         * mini-x86.c (mono_arch_output_basic_block): Same.
2555         
2556         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
2557
2558 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
2561
2562 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2563
2564         * simd-intrinsics.c: Enable setters for Vector16sb.
2565
2566 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
2567
2568         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
2569
2570         * cpu-x86.md: Same.
2571
2572         * mini-x86.c (mono_arch_output_basic_block): Same.
2573         
2574         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
2575
2576 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
2577
2578         * simd-intrinsics.c: Implement setter for Vector8us.
2579
2580 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2581
2582         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
2583         for dead variables.
2584
2585 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2586
2587         * mini-ppc.c: remove references to the red zone in the prolog
2588         (for systems that don't support it).
2589
2590 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2591
2592         * cpu-ppc64.md: Fixed a few instruction lengths.
2593
2594         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
2595         now.
2596
2597 2008-11-19  Mark Probst  <mark.probst@gmail.com>
2598
2599         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
2600         basic.exe now.
2601
2602 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
2603
2604         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
2605
2606 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
2607
2608         * mini-ops.h: Added OP_INSERT_I2.
2609
2610         * cpu-x86.md: Same.
2611
2612         * mini-x86.c (mono_arch_output_basic_block): Same.
2613         
2614         * simd-intrinsics.c: Implement setter for Vector8s.
2615
2616         * simd-methods.h: Add the names of get setters of Vector8s.
2617
2618 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2619
2620         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
2621         
2622         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
2623         parameters.
2624
2625         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2626
2627 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2628
2629         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
2630         for PPC64.  An empty program runs now.
2631
2632 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
2635
2636         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
2637         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
2638         info for JITted code is emitted into a shared library, loadable into gdb.
2639
2640 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2641
2642         * Makefile.am: Changes to build PPC64.
2643
2644         * mini-arch.h: Include mini-ppc64.h on PPC64.
2645
2646 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2647
2648         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
2649         in PPC code up to r119147.
2650
2651 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2652
2653         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2654         cpu-ppc64.md: Changes for PPC64.
2655
2656         Based on code submitted by andreas.faerber@web.de at
2657         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
2658         X11/MIT license.
2659
2660 2008-11-18  Mark Probst  <mark.probst@gmail.com>
2661
2662         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
2663         cpu-ppc64.md: Copied from the corresponding PPC files from
2664         r118846.
2665
2666 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
2667
2668         * mini-ops.h: Added OP_ROUND.
2669
2670         * cpu-x86.md: Added round.
2671
2672         * mini-x86.c: Added support for intrinsicing Math.Round (double).
2673
2674         * basic-math.cs: Added test_0_round to test rounding.
2675
2676         Contributed under MIT/X11 license.
2677
2678 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
2679
2680         * aot-compiler.c : Fix the Winx64 build.
2681
2682         Contributed under MIT/X11 license.
2683
2684 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2685
2686         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
2687         in OP_EXTRACT_R8 to avoid possible stack corruption.
2688
2689 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         * mini-ops.h: Added OP_EXTRACT_R8/I8.
2692
2693         * cpu-x86.md: Added extract_r8.
2694
2695         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
2696         
2697         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
2698         a couple of OP_EXTRACT_I4.
2699
2700         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
2701
2702         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
2703
2704 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
2705
2706         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
2707         and not 4.1. 
2708
2709 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
2712         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
2713
2714         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
2715         are not needed any more.
2716
2717         * mini.h: Remove the unused INS_LIST macros.
2718
2719         * mini.c (mini_method_compile): Remove a disable globalra case which is no
2720         longer needed.
2721
2722         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
2723         ir-emit.h.
2724
2725         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
2726         mono_alloc_ireg () instead.
2727
2728         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
2729         macros.
2730
2731         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
2732         on amd64.
2733
2734         * aot-runtime.c (load_aot_module): Disable AOT when running under
2735         CAS.
2736
2737         * mini-amd64.h: Change the monitor fastpath defines to check for
2738         !PLATFORM_WIN32 so they work on *bsd too.
2739
2740         * mini.h mini.c mini-hhpa.c: Remove more unused code.
2741
2742         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
2743
2744         * mini.h (MonoCompile): Remove new_ir flag.
2745
2746         * regalloc.h regalloc.c: Remove unused code.
2747
2748         * cpu-*.md: Remove more unused opcodes.
2749
2750         * simple-cee-ops.h simple-mini-ops.h: Removed.
2751
2752         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
2753         
2754 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * aliasing.h: Removed.
2757
2758         * *.c: Remove references to aliasing.h and inssel.h.
2759
2760         * mini.c: Remove additional unused functions.
2761
2762         * mini-ops.h cpu-*.md: Remove unused opcodes.
2763
2764 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2765
2766         Remove the old JIT code.
2767
2768         * inssel*.brg: Removed.
2769
2770         * ssa.c abcremoval.c aliasing.c: Removed.
2771
2772         * ssa2.c: Renamed to ssa.c.
2773
2774         * abcremoval2.c: Renamed to abcremoval.c.
2775
2776         * *.c: Removed all !cfg->new_ir code.
2777
2778         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
2779         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
2780
2781         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
2782         
2783 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
2786         to simplify the code and cut back on the number of global symbols in the AOT
2787         file.
2788         
2789         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
2790
2791 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
2792
2793         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
2794         with the got/got_info tables.
2795
2796         * mini.h: Bump AOT file format version.
2797         
2798         * unwind.h: New file, contains definitions for stack unwinding.
2799
2800         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
2801         to cfg->unwind_ops.
2802         
2803         * aot-compiler.c: Generalize the emitting of unwind information to use the
2804         information in cfg->unwind_ops.
2805
2806         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
2807
2808         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
2809         AOT method frames. Enable writing symbols for methods by default.
2810
2811 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
2814         and make it work with vectors of element sizes 1, 2 and 4.
2815
2816         * simd-intrinsics.c: Enable getter for all vectors with element size
2817         1, 2 or 4.
2818
2819         * simd-methods.h: Add the names of other getters.
2820
2821         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
2822
2823         * cpu-x86.md: Same.
2824
2825         * mini-x86.c: Same.
2826
2827 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
2828
2829         * mini-ppc.h: portability fix.
2830
2831 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2832
2833         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
2834         buggy and will overwrite it.
2835
2836 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2837
2838         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
2839         Use it to emit local symbols for all methods so AOTed methods show up with
2840         their full name in gdb/valgrind output.
2841
2842 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
2843
2844         * mini-ppc.c: portability fixes.
2845
2846 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
2849         entries out of the if (!generic_shared...) code so it is always done.
2850         (mono_class_init_trampoline): Do the patching when running under valgrind
2851         too, newer versions of valgrind have no problems with it.
2852
2853 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2854
2855         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
2856         further sections.
2857
2858 2008-11-13  Mark Probst  <mark.probst@gmail.com>
2859
2860         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
2861         filters.
2862
2863 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2864
2865         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
2866
2867 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2868
2869         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
2870
2871         * cpu-x86.md: Same.
2872
2873         * mini-x86.c: Same.
2874
2875         * simd-intrinsics.c: Same.
2876
2877 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2878
2879         * simd-intrinsics.c: Enable constructor intrinsics for all types.
2880
2881 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2882
2883         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
2884         to work with more Vector types.
2885
2886 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
2887
2888         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
2889         store the elemens directly instead of using and intermediate.
2890
2891 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
2892
2893         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
2894
2895         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
2896         to preserve %eax for aot plt trampolines.
2897
2898         * aot-compiler.c (compile_method): Don't skip synchronized methods.
2899         (encode_method_ref): Flag synchronized methods so they won't go through
2900         the AOT trampoline.
2901
2902         * aot-compiler.c: Additional work to support AOTing synchronized methods/
2903         wrappers.
2904
2905         * cpu-ia64.md (jmp): Increase max length.
2906
2907 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
2910         open generic classes.
2911
2912         * aot-compiler.c: Enable the ELF writer on ELF platforms.
2913
2914         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
2915         box+brtrue optimization since it causes test failures on x86.
2916
2917 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2918
2919         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
2920
2921         * cpu-x86.md: Same.
2922
2923         * mini-x86.c: Same.
2924
2925         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
2926         for simd ctor values. 
2927
2928         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
2929         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
2930
2931 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
2932
2933         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
2934         LogicalRightShift.
2935
2936         * simd-instrincs.c: Same.
2937
2938         * basic-simd.cs: Same.
2939
2940 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * ratests.cs: Add more tests.
2943
2944         * regalloc2.c (add_spill_code): Handle more corner cases.
2945
2946 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2947
2948         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
2949         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
2950         both the source an destination of an instruction.
2951
2952 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
2953
2954         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
2955         wapihandles.c: more portability changes.
2956
2957 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
2958
2959         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
2960         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
2961         safe to execute in a signal handler and the kernel provides better
2962         the info in /proc/self/smaps. Avoid the assert on sigaction during
2963         cleanup.
2964
2965 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
2966
2967         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
2968         do the bblock linking hack if it is actually needed.
2969
2970         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
2971         up linking.
2972
2973         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
2974         crash problem is fixed.
2975
2976         * branch-opts.c (mono_remove_critical_edges): Link up newly added
2977         bblocks.
2978
2979         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
2980         for catch clauses.
2981         (mini_method_compile): Set the starting value of next_vreg to 
2982         MAX_IREGS + MAX_FREGS when using globalra.
2983
2984         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
2985         filter clauses with BB_EXCEPTION_HANDLER.
2986
2987         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
2988
2989 2008-11-10  Mark Probst  <mark.probst@gmail.com>
2990
2991         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
2992         space for stdcall.  Fixes regressions on Win32.
2993
2994 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
2997         bblocks.
2998         (linear_scan): Remove an assert which doesn't seem to be needed.
2999
3000         * local-propagation.c (mono_local_deadce): Avoid a call to
3001         MONO_DELETE_INS which would screw up the instruction linking.
3002
3003         * mini.c (mono_decompose_op_imm): Make this work with globalra.
3004
3005         * regalloc2.c: Upgrade to work the current JIT code.
3006
3007 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
3010         case.
3011
3012         * aot-runtime.c: Remove some dead code.
3013
3014         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
3015         consistency.
3016         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
3017
3018         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
3019         trampolines using sscanf since atoi doesn't work on large unsigned values.
3020
3021         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
3022         Initialize code_size.
3023
3024 2008-11-08  Mark Probst  <mark.probst@gmail.com>
3025
3026         * method-to-ir.c (mini_emit_inst_for_method): Make
3027         Interlocked.CompareExchange work for Int arguments on 32 bit
3028         archs, as well.
3029
3030 2008-11-07  Mark Probst  <mark.probst@gmail.com>
3031
3032         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
3033
3034 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
3035
3036         * main.c Fix MSVC build.
3037
3038         Contributed under MIT/X11 license.
3039
3040 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3041
3042         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
3043         alignment larger than 8 bytes are aligned correctly, too.
3044
3045         * mini.c: Honor the min_align field of MonoClass when laying out
3046         the stack.
3047
3048 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
3051
3052         * aot-compiler.c (emit_plt): Fix a warning.
3053         
3054         * aot-compiler.c: Implement ARM support in the binary writer.
3055
3056 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3057
3058         * basic-simd.cs: Add test for getter with byref arg.
3059         Fix the naming of a few tests.
3060         Add missing checks to a test.
3061
3062 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
3065
3066         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
3067         most of the full-aot support for monitor enter/exit trampolines.
3068
3069         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
3070         enter/exit trampoline creation functions.
3071
3072         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
3073         make dist.
3074
3075 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
3076
3077         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
3078         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
3079         implement the needed functionality without adding crap to the runtime.
3080
3081 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
3084         non-x86 builds.
3085
3086         * mini.c (mono_build_date): New global version holding the build date in
3087         string format.
3088         
3089         * Makefile.am (buildver.c): Generate a file containing the build date.
3090
3091         * main.c: Set the build date from the generated file.
3092
3093         * mini.c (mono_get_runtime_build_info): New helper function returning build
3094         information in a string format.
3095         
3096         * driver.c (mono_main): Print the build date in --version.
3097
3098         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
3099         file when the bind-to-runtime-version option is used.
3100
3101 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3102
3103         * simd-intrinsics.c: Fix bug when using getters and byref args. 
3104
3105 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3106
3107         * simd-methods.h: Rename prefetch methods.
3108
3109         * simd-intrinsics.c: Same.      
3110
3111 2008-11-05  Mark Probst  <mark.probst@gmail.com>
3112
3113         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
3114         sizes.
3115
3116 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3117
3118         * aot-compiler.c: Use the bundled elf header files instead of depending on
3119         the system one.
3120         
3121         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
3122         mempool.
3123
3124         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
3125         on every call.
3126
3127 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
3128
3129         * cpu-x86.md: Add store nta ops.
3130
3131         * mini-ops.h: Same.
3132
3133         * mini-x86.c: Same.
3134
3135         * mini.h: Add an enum for simd prefetch modes.
3136
3137         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
3138         of store. Use the changed code to support store nta.
3139
3140         * simd-intrinsics.c: Add prefetch ops for all vector types.
3141
3142 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
3145         threads.
3146         
3147         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
3148         names.
3149
3150         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
3151         trampolines.
3152
3153 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3154
3155         * mini-x86.c: Fixed commit.
3156
3157 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * aot-compiler.c (emit_plt): Align the plt section only on x86.
3160
3161 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3162
3163         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
3164         and MONITOR_EXIT, for the ASM fastpaths.
3165
3166         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
3167         available.
3168
3169         * mini.c, patch-info.h: Signature and patch infos for
3170         Monitor.Enter/Exit trampolines.
3171
3172         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
3173
3174         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
3175         Monitor.Enter/Exit ASM fastpath for Linux.
3176
3177 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3178
3179         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
3180
3181         * objects.cs: Add a new test.
3182         
3183         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
3184
3185         * aot-runtime.c (load_method): Run class initialization in the PLT case even
3186         if MONO_LOG_LEVEL is set.
3187
3188         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
3189
3190         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
3191
3192         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
3193         
3194         * aot-compiler.c: Change the relocation code to use virtual addresses instead
3195         of file offsets. Align the sections belonging to the data segment to 
3196         PAGESIZE.
3197
3198 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
3201         elf.h. Port it to amd64.
3202
3203 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3204
3205         * driver.c: Enable SIMD by default.
3206
3207 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3208
3209         * cpu-x86.md: Add prefetch op.
3210
3211         * mini-ops.h: Same.
3212
3213         * mini-x86.c: Same.
3214
3215         * mini.h: Add an enum for simd prefetch modes.
3216
3217         * simd-methods.h: Add prefetch function names.
3218
3219         * simd-intrinsics.c: Add prefetch ops for all vector types.
3220
3221 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * aot-compiler.c (emit_bytes): Speed this up a little.
3224
3225 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3226
3227         * aot-compiler.c: Add JIT time etc. statistics.
3228         
3229         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
3230
3231         * mini.h (MonoCompile): Add 'got_offset' field.
3232
3233         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
3234         method_got_offsets array.
3235
3236         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
3237         wrappers.
3238
3239         * aot-compiler.c (compile_method): Add generic method instances referenced
3240         by the method to the list of methods to be compiled, this is required so if
3241         A<T> references B<T>, and another assembly references A<int>, then it will
3242         also get a copy of B<int>.
3243
3244         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
3245         when checking for monitor enter/exit.
3246
3247 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3248
3249         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
3250         for Monitor.Enter and Monitor.Exit if enabled.
3251
3252         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
3253         Solaris.
3254
3255 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
3258         of an OP_MOVE. Fixes #440046.
3259
3260         * basic-long.cs: Add a new test.
3261
3262 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3263
3264         * mini.h: Add synchronization note for the managed counter-part.
3265
3266         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
3267         returns the simd caps of the current cpu.
3268
3269 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
3270
3271         * basic-simd.cs: Remove Console.WriteLine.
3272
3273 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3274
3275         * basic-simd.cs: New tests for Vector2ul.
3276
3277 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3278
3279         * simd-intrinsics.c: Add new vector type Vector2ul.
3280
3281 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3282
3283         * basic-simd.cs: New tests for Vector2l.
3284
3285 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         * cpu-x86.md: Add long version of most packed int ops.
3288
3289         * mini-ops.h: Same.
3290
3291         * mini-x86.h: Same.
3292
3293         * simd-intrinsics.c: Add new vector type Vector2l.
3294
3295 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
3298
3299         * simd-methods.h: Remove SN_op_BitwiseXor.
3300
3301 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
3304         alignment.
3305
3306 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3307
3308         * basic-simd.cs: Test for Vector2d.
3309
3310         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
3311         value.
3312
3313 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         * cpu-x86.md: Add double version of all packed float ops.
3316
3317         * mini-ops.h: Same.
3318
3319         * mini-x86.h: Same.
3320
3321         * simd-intrinsics.c: Add new vector type Vector2d.
3322
3323         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
3324
3325         * simd-methods.h: Add Duplicate.
3326
3327 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3328
3329         * basic-simd.cs: Test for packing with signed saturation.
3330
3331 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
3334         found in the TYPESPEC table.
3335
3336 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
3339         too.
3340
3341         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3342
3343         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
3344         instead of the RVA, since the RVA can be changed by tools like the cil 
3345         stripper.
3346
3347         * method-to-ir.c (mono_method_to_ir2): Ditto.
3348
3349         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
3350         (deserialize_variable): Ditto.
3351
3352 2008-10-25  Martin Baulig  <martin@ximian.com>
3353
3354         * debug-mini.c (write_variable): Use
3355         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
3356
3357 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3358
3359         * cpu-x86.md: Add unsigned variants of packd and packw.
3360
3361         * mini-ops.h: Same.
3362
3363         * mini-x86.h: Emit the right instruction for packd and packw.
3364         Add unsigned variants of packd and packw.
3365
3366         * simd-intrinsics.c: Packd and packw were used in place of their
3367         unsigned variants. Change that.
3368         Add intrinsics for (Signed)PackWithSignedSaturation.
3369
3370         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
3371
3372 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3373
3374         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
3375
3376 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3377
3378         * mini-ops.h: Remove dword packed add/sub with saturation ops.
3379
3380         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
3381
3382         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
3383         sse instructions.
3384
3385         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
3386
3387 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3388
3389         * method-to-ir.c, mini.c: Special casing for the synchronized
3390         wrapper for the ldtoken+GetTypeFromHandle case.
3391
3392 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * mini.c (mono_replace_ins): Move this to branch-opts.c.
3395
3396         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
3397         created/split bblocks.
3398
3399 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3400
3401         * mini-ops.h: Add packed signed mul high.
3402         
3403         * cpu-x86.md: Same.
3404
3405         * mini-x86.c (mono_arch_output_basic_block): Same.
3406
3407         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
3408
3409         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
3410
3411 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3412
3413         * basic-simd.cs: Tests for Vector16sb.
3414
3415 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
3416
3417         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
3418
3419 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * mini-ops.h: Add packed signed min, max and compare greater.
3422         
3423         * cpu-x86.md: Same.
3424
3425         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
3426         saturation.
3427
3428         * simd-methods.h: Add CompareGreaterThan.
3429
3430         * simd-methods.h: Remove CompareEquals.
3431
3432         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
3433
3434         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
3435
3436         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
3437         CompareEqual.
3438
3439 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * basic-simd.cs: Fix tests due to change in the API.
3442
3443 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3444
3445         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
3446
3447 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3448
3449         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
3450
3451         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
3452         inst_offset as this has invalid values for LDADDR.
3453
3454 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3455
3456         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3457
3458         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
3459
3460 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
3463         for accessing field->data.
3464
3465 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3466
3467         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
3468
3469 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
3470
3471         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
3472
3473         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
3474
3475 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * dominators.c (mono_compute_natural_loops): Allocate GList enties
3478         from the cfg mempool.
3479
3480 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3481
3482         * basic-simd.cs: Tests for new methods in Vector8us.
3483
3484 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
3485
3486         * mini-ops.h: Add multiply and store high.
3487         
3488         * cpu-x86.md: Same.
3489
3490         * mini-x86.c (mono_arch_output_basic_block): Same.
3491
3492         * simd-methods.h: Same.
3493
3494         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
3495         and CompareEqual.
3496
3497 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
3500         mono_class_setup_vtable ().
3501
3502         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
3503         mono_class_get_vtable_entry () for accessing klass->vtable.
3504
3505         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
3506
3507         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
3508         found.
3509
3510         * method-to-ir.c (mono_save_token_info): Don't save references made from
3511         wrappers.
3512
3513         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
3514         of generic instances.
3515
3516         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
3517
3518 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3519
3520         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
3521         OP_JMP depends on the method signature.  Calculate it properly.
3522
3523 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3524         
3525         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
3526         called directly.
3527
3528         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
3529         instances.
3530         (emit_extra_methods): Add another table mapping method indexes to 
3531         offsets in the extra_method_info table.
3532
3533         * mini.h: Bump AOT file format version.
3534         
3535         * aot-runtime.c: Merge most of the code from mono_aot_get_method
3536         and mono_aot_get_method_from_token () into one function.
3537
3538 2008-10-19  Mark Probst  <mark.probst@gmail.com>
3539
3540         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
3541         separate counter.
3542
3543 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
3544
3545         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
3546         methods.
3547
3548         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
3549         disable_aot.
3550
3551         * mini.c (mono_patch_info_equal): Compare the generic context as well.
3552
3553         * mini.h: Bump aot file format version.
3554
3555         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
3556         AOT file can contain native code for methods which are not in the METHOD
3557         table. Generate code for non-sharable generic instances of generic methods
3558         found in the METHODSPEC table.
3559         
3560         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
3561         encoding generic type handles.
3562
3563         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
3564         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
3565
3566         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
3567         macros + MONO_ADD_INS.
3568
3569         * mini.c (mono_jump_info_token_new2): New function which takes a generic
3570         context as well.
3571
3572         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
3573
3574         * mini.h: Bump aot file format version.
3575
3576         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
3577
3578 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3579
3580         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
3581         platforms, with definable stack alignment value.  Set to 16 now
3582         for all platforms.
3583
3584         * mini.c, mini.h, driver.c: Command line option for disabling
3585         stack alignment.
3586
3587 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * basic-simd.cs: Tests for new methods in Vector4ui.
3590
3591 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3592
3593         * mini-ops.h: Add packed int shuffle.
3594         
3595         * cpu-x86.md: Same.
3596
3597         * mini-x86.c (mono_arch_output_basic_block): Same.
3598
3599         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
3600         extract mask, max, min, shuffle.
3601
3602         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
3603
3604 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
3605
3606         * basic-simd.cs: Tests for new methods in Vector8us.
3607
3608 2008-10-17  Mark Probst  <mark.probst@gmail.com>
3609
3610         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
3611         RuntimeTypeHandle, not a TypedReference.
3612
3613 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
3614
3615         * simd-intrinsics.c: remove relocations.
3616
3617 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
3620         optimizations from the x86 backend.
3621
3622 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
3623
3624         * simd-methods.h, simd-intrinsics.c: debloat method names and
3625         prepare for no relocations.
3626
3627 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3628
3629         * mini-ops.h: Add packed min/equal and sum of absolute differences.
3630         
3631         * cpu-x86.md: Same.
3632
3633         * mini-x86.c (mono_arch_output_basic_block): Same.
3634
3635         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
3636         extract mask, max, min and sum of absolute differences.
3637
3638         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
3639         method name.
3640
3641 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3642
3643         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
3644         Renamed one test for consistency.
3645
3646 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3647
3648         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
3649         fix to the code that deal with other blocks.
3650
3651 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3652
3653         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
3654
3655 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
3656
3657         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
3658         that deals with vreg interference. Explicitly check for OP_LDADDR to be
3659         able to process the source reg.
3660
3661 2008-10-16  Martin Baulig  <martin@ximian.com>
3662
3663         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
3664
3665         * inssel.brg: Add `OP_HARD_NOP'.
3666
3667         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
3668
3669         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
3670         `OP_HARD_NOP' instruction when running inside the debugger.
3671
3672         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
3673         `OP_HARD_NOP' instruction when running inside the debugger.
3674
3675 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3676
3677         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
3678         now works. The issue with the regalloc tripping up no longer
3679         happens.
3680
3681         * simd-intrinsics.c (load_simd_vreg): Same.
3682
3683 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3684         
3685         * basic-simd.cs: Tests for new Vector8ui methods.
3686
3687 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3688
3689         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
3690         only for type. This fixes crashes where MonoInst::klass is checked
3691         for ops of type != VTYPE or OBJ.
3692
3693         * simd-intrinsics.c (load_simd_vreg): Same.
3694
3695 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
3696
3697         * mini-ops.h: Add ops for packed shuffle/max/avg and
3698         extract mask.
3699         
3700         * cpu-x86.md: Same.
3701
3702         * mini-x86.c (mono_arch_output_basic_block): Same.
3703
3704         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
3705         extract mask.
3706
3707         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
3708         to emit extract mask op.
3709
3710         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
3711         to emit word shuffles.
3712
3713 2008-10-15  Mark Probst  <mark.probst@gmail.com>
3714
3715         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
3716         the largest alignment needed by a variable, but at least
3717         sizeof(gpointer).
3718
3719 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3720
3721         * basic-simd.cs: Tests for the fixes in the last commit.
3722
3723 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3724
3725         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
3726         no longer handles STACK_PTR input.
3727
3728         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
3729
3730         * simd-intrinsics.c (load_simd_vreg): New function that works like 
3731         get_simd_vreg   but handles STACK_PTR input.
3732
3733         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
3734         as the input can be an arbitrary pointer.
3735
3736         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
3737         LDADDR local optimization directly otherwise use a store op.
3738
3739 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3740
3741         * basic-simd.cs: Tests for dup low and dup high.
3742
3743 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
3744
3745         * mini-ops.h: Add dup low and dup high ops.
3746         
3747         * cpu-x86.md: Same.
3748
3749         * mini-x86.c (mono_arch_output_basic_block): Same.
3750
3751         * simd-intrinsics.c (vector4f_intrinsics): Same.
3752
3753 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3754
3755         * basic-simd.cs: Tests for recently added functionality.
3756
3757 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3758
3759         * mini-ops.h: Add remaining sse1 fp ops.
3760         
3761         * cpu-x86.md: Add remaining sse1 fp ops.
3762
3763         * mini-x86.c (mono_arch_output_basic_block): Same.
3764
3765         * mini.h: Add enum for simd FP compare conditions.
3766
3767         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
3768
3769         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
3770         so the backed can generate the appropriate op.
3771
3772 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
3773         This patch squeese one more byte from the SimdIntrinsc struct.
3774
3775         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
3776         a a shift amount intead of simply or'ing it.
3777
3778         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
3779
3780         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
3781         byte so we can have an aditional flags field without increasing struct size.
3782
3783         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
3784         against the simd_supported_versions bitmask.
3785
3786         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
3787
3788 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
3789
3790         * mini.c: remove rawbuffer code (the only use here is unsafe because
3791         it takes locks during signal handling and the kernel now provides much
3792         better info in proc/pid/smaps these days).
3793
3794 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
3797         OP_X86_PUSH_OBJ. Fixes #434620.
3798
3799         * objects.cs: Add a test.
3800         
3801 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
3802
3803         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
3804         that the packuswb/packusdw don't work with unsigned numbers for what
3805         would be negative numbers in signed format.
3806
3807         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
3808         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
3809
3810         * mini-ops.h: Add doubleword forms of many ops and packing ones.
3811
3812         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
3813
3814         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
3815
3816         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
3817
3818         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
3819         add more ops.
3820
3821         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
3822         version as the enum in mini.h.
3823
3824         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
3825         for sse3 ops, check the simd_version field if present. This way the code
3826         works with all versions of sse.
3827
3828 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3829
3830         * simd-intrinsics.c: Fixed intrinsic name typo.
3831
3832         * mini.h: Added missing simd exported function.
3833
3834         * basic-simd.cs: Added tests for Vector4ui.
3835         Fixed broken test for Vector16b.
3836
3837 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
3840         the max length to 64.
3841
3842 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3843
3844         * method-to-ir.c: Only do the fast virtual generic method call for
3845         non-wrapper methods.
3846
3847         * mini.h, mini-trampolines.c: The new generic virtual remoting
3848         trampoline handles virtual method calls via the vtable (as done by
3849         the fast virtual generic method calls) to remoting proxies.
3850
3851         * mini.c (mono_jit_create_remoting_trampoline): For generic
3852         methods reate a generic virtual remoting trampoline.
3853
3854         * mini-amd64.h: Enable fast virtual generic method calls again.
3855
3856 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3857
3858         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
3859         restore registers when doing tail calls.
3860
3861 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3862
3863         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
3864         Vector4ui.
3865
3866 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3867
3868         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
3869
3870 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3871
3872         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
3873
3874 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3875
3876         * basic-simd.cs: Retrofit for API changes.
3877
3878 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3879
3880         * mini-ppc.c: Handle integer stack arguments for tail calls.
3881
3882 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * optflags-def.h: Removed sse3 optimization.
3885
3886         * driver.c: Same.
3887
3888         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
3889         sse3.
3890
3891         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
3892
3893         * mini.h: Added enumeration with simd versions.
3894
3895         * simd-intrinsics.c (emit_intrinsics): Use the new static var
3896         for detecting SSE3.
3897
3898         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
3899
3900         * mini.c (mini_init): Call mono_simd_intrinsics_init.
3901
3902 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3903
3904         * basic-simd.cs: Added tests for Vector8u and Vector16u.
3905
3906         * basic-simd.cs: Fixed test naming.
3907
3908 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3909
3910         * mini-ops.h: Added ops for packed and saturated math, shifts
3911         and packing/unpacking.
3912
3913         * cpu-x86.md: Added descriptors for the above ops.
3914
3915         * mini-x86.c: Added code to emmit the above ops.
3916
3917         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
3918
3919 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * aot-compiler.c (compile_method): Enable AOT for generic code.
3922
3923         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
3924
3925 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
3926
3927         * mini.c: add a workaround for a common screwup that ends up blamed
3928         to mono (other processes blocking signal delivery).
3929
3930 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3931
3932         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
3933         in the LDFLD/STFLD opcodes. Fixes #432673.
3934
3935         * iltests.il.in: Add a new test.
3936
3937 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
3938
3939         * mini-arm.c: attach the thread in unmanaged->managed transitions
3940         using delegates (bug #433148).
3941
3942 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3943
3944        * basic-simd.cs: Use new ShuffleSel constants.
3945
3946 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
3947
3948         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
3949
3950         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
3951         only disable simd intrinsics if no sse2 is detected.
3952
3953         * optflags-def.h: Added sse3.
3954
3955         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
3956         is disabled.
3957
3958 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3959
3960         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
3961         when adding delegate-invoke wrappers.
3962
3963 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * Makefile.am: Reenable the simd tests.
3966
3967 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3968
3969         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
3970           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
3971           other vreg is allocated to that hreg.
3972
3973         Contributed under MIT/X11 license.
3974
3975 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
3978         yet checked in.
3979
3980 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3981
3982         * basic-simd.cs: New test suite for SIMD intrinsics.
3983
3984         * Makefile.am: Added new tests.
3985
3986 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
3987
3988         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
3989
3990         * mini-ops.h: Same.
3991
3992         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
3993
3994         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
3995         using SSE2 aware opcodes.
3996
3997         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
3998         is enabled, this code path is only reachable if conversion ops are emmited after
3999         mono_method_to_ir.
4000
4001         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
4002
4003         This optimization saves 6 bytes per conversion against the old version.
4004
4005 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * aot-compiler.c (compile_method): Don't skip methods referencing 
4008         generic methods without a corresponding entry in token_info_hash, since
4009         encode_method_ref () can handle all generic methods now.
4010
4011         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
4012         generic context is set.
4013         
4014         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
4015         generic sharing of LDTOKEN.
4016
4017 2008-10-06  Mark Probst  <mark.probst@gmail.com>
4018
4019         * mini-amd64.h: Temporarily disabled fast virtual generic method
4020         calls because it breaks the System.Runtime.Remoting tests.
4021
4022 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4023
4024         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
4025
4026         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
4027         so inlining actually works.
4028         (check_inline_caller_method_name_limit): Ditto.
4029
4030 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
4031
4032         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
4033         64 bit safety (from Olaf Hering and Andreas Färber).
4034
4035 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4036         
4037         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
4038         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
4039         unused virtual call support code.
4040
4041         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
4042         
4043         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
4044         which can't use aot trampolines.
4045         (decode_patch): Don't create aot trampolines for methods which can't use
4046         them.
4047
4048         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
4049         use aot trampolines.
4050
4051         * mini.h: Bump AOT image format version.
4052         
4053 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
4056         to save_token_info () since cmethod is inflated for constrained calls.
4057
4058         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
4059
4060 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4061
4062         * Makefile.am: Add build rules for ppc64.
4063         This avoids the build failing at pedump with unresolved symbols
4064         due to lack of arch_sources. Instead it will now fail earlier
4065         due to lack of cpu-ppc64.md.
4066
4067         Contributed under MIT/X11 license.
4068
4069 2008-10-04  Mark Probst  <mark.probst@gmail.com>
4070
4071         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
4072         tail calls.
4073
4074         * iltests.il.in: Add test case for tail call with many arguments.
4075
4076 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
4079         to the fast virtual generic method code until the aot case is fixed.
4080
4081 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4082
4083         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
4084
4085 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4086
4087         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
4088         thunks.
4089
4090 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4091         
4092         * simd-intrinsics.c: Forgot to add this one.
4093
4094         * mini-codegen.c: Fix macro in case SIMD is not supported.
4095
4096 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4097         
4098         This patch land initial JIT support for simd intrinsics.
4099
4100         * mini-x86.h: Added new define to make --enable_minimal work on x86.
4101
4102         * Makefile.am: Added simd-intrinsics.c
4103
4104         * simd-intrinsics.c: New file with simd instrinsic related
4105         code.
4106
4107         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
4108
4109         * cpu-x86.md: Add simd related instructions.
4110
4111         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
4112
4113         * driver.c: Added two new --regression variants.
4114
4115         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
4116
4117         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
4118
4119         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
4120         extract some complicated logic to helper functions.
4121
4122         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
4123
4124         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
4125
4126         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
4127         the specialized simplification pass.
4128
4129         * method-to-ir.c (mono_spill_global_vars): Use new macro.
4130
4131         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
4132
4133         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
4134         table.
4135
4136         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
4137         if MONO_ARCH_NEED_SIMD_BANK is defined.
4138
4139         * mini-ops.h: Added the new simd ops.
4140
4141         * mini-x86.c: Added mono_arch_xregname.
4142
4143         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
4144
4145         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
4146
4147         * mini-x86.h: Define simd related MONO_ARCH macros.
4148
4149         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
4150
4151         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
4152
4153         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
4154         MONO_CLASS_IS_SIMD to deal with simd related IR.
4155
4156         * mini.h (MonoInst): Added spill_var to the backend union.
4157
4158         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
4159
4160         * mini.h: Added forward declarations of the new simd fuctions.
4161
4162         * optflags-def.h: Added new optimization names SIMD.
4163
4164         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
4165
4166         * regalloc.h: Added support for working with 3 register banks.
4167
4168         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
4169
4170         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
4171
4172 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
4173
4174         * mini-exceptions.c: remove 64 bit related ifdef clutter.
4175
4176 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
4179         instead of one on 64 bit systems.
4180
4181         * method-to-ir.c: Remove unused includes.
4182
4183 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
4186         cfg->used_int_regs, since the two are different on arm.
4187
4188 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4189
4190         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
4191         mono_method_get_vtable_index() to get the vtable index.
4192
4193 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4194
4195         * method-to-ir.c (mono_method_to_ir2): Don't create native
4196         wrappers for array methods, because they're never called (and if
4197         they were called they wouldn't work).
4198
4199 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4200
4201         * method-to-ir.c (mono_method_to_ir2): Array methods are
4202         special-cased and must not be invoked indirectly via the (M)RGCTX
4203         when generic sharing is turned on.  Fixes #431413.
4204
4205 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4206
4207         * method-to-ir.c: When generic sharing is active, call
4208         non-interface virtual generic methods via the standard trampoline.
4209
4210         * mini-trampolines.c: Handle virtual generic shared methods.
4211
4212         * mini.h, mini-x86.c, mini-x86.h: New argument for
4213         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
4214         method thunks and which is the trampoline to call if the lookup
4215         fails.  Enable the virtual generic method thunk for x86.
4216
4217         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
4218         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
4219         argument but assert that it's NULL, because these archs don't yet
4220         implement the virtual generic method thunk.  Changes in the IMT
4221         thunk data structures.
4222
4223 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * aot-compiler.c (emit_globals): Avoid invalid characters in
4226         the static linking symbol.
4227
4228         * objects.cs: Add a test for the range check optimization. Fix warnings.
4229
4230         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
4231         optimization from the current JIT.
4232
4233         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
4234         later in decompose_array_access_opts () to allow more optimizations.
4235
4236         * method-to-ir.c (mono_handle_soft_float): Rename this to 
4237         mono_decompose_soft_float () for consistency.
4238
4239         * mini-ops.h: Fix arguments of OP_STRLEN.
4240
4241         * method-to-ir.c (save_cast_details): Extract the cast details saving code
4242         into a separate function.
4243         (reset_cast_details): Ditto.
4244         (handle_unbox): Save cast details. Fixes #431254.
4245
4246         * method-to-ir.c: Remove some obsolete FIXMEs.
4247
4248 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4249
4250         * ir-emit.h (alloc_dreg): Write a warning before crashing.
4251
4252 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4253
4254         * mini-codegen.c: More work on macros to make them
4255         ready for multiple regbanks.
4256
4257 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4258
4259         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
4260
4261         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
4262
4263 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * mini-codegen.c (mono_spillvar_offset): Proper support for
4266         multiple regbanks.
4267
4268 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
4271         the stack overflow changes.
4272
4273 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4274
4275         * mini-codegen.c: Make all bank macros depend on reg_bank.
4276
4277         * mini-codegen.c (mono_local_regalloc): Make free mask
4278         initialization regbank aware.
4279
4280 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4281
4282         * mini-codegen.c (mono_local_regalloc): Extract callee
4283         mask selection to a function and make it regbank aware.
4284
4285 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
4286
4287         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
4288         code to deal with many regbanks.
4289
4290 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * mini-codegen.c: More fp->regbank changes.
4293
4294 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4295
4296         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
4297         of a hardcoded constant.
4298
4299 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
4300
4301         * method-to-ir.c (type_from_stack_type): Fix typo.
4302
4303 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * mini-ia64.c (emit_move_return_value): Convert float return values to
4306         double.
4307
4308         * objects.cs: Add a new test.
4309         
4310         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
4311         VARARG methods to fix an assert later.
4312
4313         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
4314         end so it at least compiles.
4315
4316 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4317
4318         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
4319
4320 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
4321
4322         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
4323         optimization to a new function (emit_optimized_ldloca_ir) and enable
4324         it for both ldloca and ldloca_s.
4325
4326 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
4327
4328         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
4329         gshared CASTCLASS code.
4330
4331         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
4332         amd64, where the libc stack unwinder encounters stack frames referring to
4333         native code in unmapped memory.
4334
4335         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
4336         sharing.
4337
4338         * generics.cs: Add new test.
4339
4340 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
4343         add a check that one of the ARM_FPU_ constants is defined.
4344
4345         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
4346         
4347         * mini-exceptions.c: Fix build on non-altstack platforms.
4348
4349         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
4350         sharing of vtypes.
4351
4352         * ir-emit.h: Add a comment to NEW_PCONST.
4353
4354         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
4355
4356         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
4357
4358         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
4359         after the changes to MonoJitDomainInfo.
4360
4361 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4362
4363         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
4364
4365 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4366
4367         * mini-ppc.c: Compiler warning fixes.
4368
4369 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4370
4371         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
4372         for pinvokes.
4373
4374 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4375
4376         * exceptions-ppc.c, mini-ppc.h: Compile
4377         mono_arch_handle_altstack_exception() on Darwin, too.
4378
4379 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4380
4381         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
4382         work on archs which don't have generic sharing implemented, only
4383         without the vtable_arg.
4384
4385 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4386
4387         * mini.c: Added comment explaining why delegate ctor icall
4388         wrappers are compiled.
4389
4390 2008-09-26  Mark Probst  <mark.probst@gmail.com>
4391
4392         * mini.c: Don't produce trampolines to delegate ctor icall
4393         wrappers but compile them upfront.
4394
4395 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4396
4397         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
4398         runtime-set function when going back to managed code. Currently this
4399         is used to set back the protection on the soft ovf pages and/or to
4400         throw the stack overflow exception that happened in unmanaged code.
4401
4402 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4403
4404         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
4405         runtime-set function when going back to managed code. Currently this
4406         is used to set back the protection on the soft ovf pages and/or to
4407         throw the stack overflow exception that happened in unmanaged code.
4408
4409 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
4410
4411         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
4412         the support code for restoring stack protection after stack overflows
4413         that happen in unmanaged code. Don't set the exec permission on the
4414         soft overflow area.
4415
4416 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
4419         delegate->method_ptr is set. Fixes #428054.
4420
4421 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * tests.cs: Rename to ratests.cs.
4424
4425         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
4426         emit_get_rgctx_... functions.
4427
4428 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4429
4430         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
4431
4432 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4433
4434         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
4435         before asserting that method is sharable.
4436
4437 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4438
4439         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
4440         whether method needs a static RGCTX wrapper used instead of
4441         complex conditions.
4442
4443         * generic-sharing.c, mini.h: A few functions moved to
4444         metadata/generic-sharing.c.
4445
4446 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4447
4448         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
4449         Generic code sharing for value types, which essentially means
4450         treating value type methods like static methods.  The RGCTX is
4451         passed in the same way.
4452
4453 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4454
4455         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
4456         opcode when creating multi-dimensional arrays of open types.
4457
4458         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
4459         open generic types.
4460
4461         * generics.cs: Add a test.
4462
4463         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
4464
4465 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
4468
4469         * mini.c (mini_method_compile): Set it when running under the debugger. 
4470
4471         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
4472         vreg optimization if the flag is set.
4473
4474         * driver.c (mono_main): Add --attach= option to pass options to
4475         the attach agent.
4476
4477         * mini.c (sigquit_signal_handler): Start the attach agent.
4478
4479         * ssapre.c: Disable this to save space since it is not yet ported to
4480         linear IR.
4481
4482         * regalloc2.c: Disable this to save space.
4483
4484         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
4485
4486 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4487
4488         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
4489         the -v option useful again.
4490
4491 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * mini-amd64.c (mono_arch_output_basic_block): Add support for
4494         --break-at-bb.
4495
4496         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
4497         arrays of arrays. Fixes #428406.
4498
4499         * method-to-ir.c (mini_emit_castclass): Ditto.
4500
4501         * objects.cs: Add new test.
4502         
4503 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
4504
4505         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
4506         was wrong at it choked against target_type_is_incompatible for byref types.
4507
4508 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4509
4510         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
4511         places.
4512
4513 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
4514
4515         * mini-exceptions.c: update a few more exceptions-related counters.
4516
4517 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4518
4519         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
4520         new functions to allocate from persistent mempools.
4521
4522 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
4525         multiple register banks in the future.
4526
4527         * mini-codegen.c (mono_local_regalloc): Fix a warning.
4528
4529 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
4530
4531         * mini.c (type_to_eval_stack_type): Remove duplicated function.
4532
4533         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
4534
4535         * mini.h: Export type_to_eval_stack_type.
4536
4537         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
4538         is only ins->klass of byref types.
4539
4540 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
4543         (mini_emit_memcpy2): Ditto.
4544
4545         * mini-amd64.c: Fix a warning.
4546
4547 2008-09-21  Mark Probst  <mark.probst@gmail.com>
4548
4549         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
4550         linking.
4551
4552 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
4553
4554         * method-to-ir.c: Extract stloc micro-optimization to a
4555         function and apply it to all cases.
4556
4557 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4558
4559         * method-to-ir.c: Don't fail generic code sharing in cases we
4560         already support.
4561
4562 2008-09-18  Mark Probst  <mark.probst@gmail.com>
4563
4564         * mini-ppc.c: Handle structs in tailcalls on Darwin.
4565
4566 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4567
4568         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
4569         implementation.
4570
4571 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
4572
4573         * trace.c: make tracing more useful and correct, with per-thread
4574         id and indent info.
4575
4576 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4577
4578         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
4579         doing a method call and the argument is an R4.
4580
4581 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
4582
4583         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
4584         generic methods.
4585
4586 2008-09-13  Mark Probst  <mark.probst@gmail.com>
4587
4588         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
4589
4590 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
4591
4592         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
4593         (MONO_JUMP_TABLE_FROM_INS): Ditto.
4594
4595 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * driver.c: Add a --agent argument (not supported yet) to load managed
4598         agent assemblies before loading the main assembly, similarly to how the
4599         Java VM handles agents.
4600
4601 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4602
4603         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
4604         function to do stack layout of local variables.
4605
4606 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4607
4608         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
4609         calculation.
4610
4611 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
4612
4613         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
4614         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
4615         JIT if DISABLE_JIT is defined.
4616
4617         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
4618         defined.
4619
4620 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4621
4622         * iltests.il.in: Disable the fconv test on PPC (the result is
4623         undefined according to ECMA).
4624
4625 2008-09-10  Mark Probst  <mark.probst@gmail.com>
4626
4627         * iltests.il.in: Enable tail call tests for PPC.
4628
4629         * mini.h: Add variable for storing incoming valuetype argument
4630         addresses for tail calls.
4631
4632         * mini-ppc.c: Implement valuetype arguments and return values for
4633         tailcalls on Linux.
4634
4635 2008-09-09  Mark Probst  <mark.probst@gmail.com>
4636
4637         * mini-ppc.c: Partially implement tail calls (struct arguments and
4638         return values not supported).
4639
4640         * method-to-ir.c: Enable tail calls on PPC.
4641
4642 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
4645         runtime-invoke wrappers to work around the problem of them getting
4646         assigned to a random class.
4647
4648         * aot-runtime.c (mono_aot_get_method): Ditto.
4649         
4650 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
4651
4652         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
4653         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
4654
4655 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4656
4657         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
4658         until they're implemented properly.
4659
4660         * exceptions-ppc.c: Use arch-independent exception-handling code
4661         instead of custom one.
4662
4663         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
4664         for Linear IR.
4665
4666         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
4667
4668         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
4669         applies when __powerpc__ is defined.
4670
4671 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
4672
4673         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
4674         methods to their code to avoid computing the full name of wrappers and
4675         doing a lookup in a string hash table.
4676
4677 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4678
4679         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
4680         we identify bblocks before method_to_ir () is ran.
4681
4682         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
4683         Also avoid optimizing branches pointing to themselves.
4684
4685         * mini.c (mini_method_compile): Ditto. Fixes #422947.
4686
4687 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
4690
4691 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
4692
4693         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
4694         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
4695         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
4696         'buf'.
4697
4698         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
4699         jumped to the same entry in plt_jump_table.
4700
4701 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * method-to-ir.c (initialize_array_data): Handle field with RVA from
4704         dynamic images.
4705
4706 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
4709         other assignment can be if converted. Saves 1.5% on corlib size and fixes
4710         #421807.
4711
4712 2008-08-29  Geoff Norton  <gnorton@novell.com>
4713
4714         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
4715         segment, and doesn't properly handle .space as .text.  Fixes
4716         AOT Mach/ARM
4717
4718 2008-08-29  Geoff Norton  <gnorton@novell.com>
4719
4720         * mini.c: Disable the mach exception handler when running on 
4721         ARM
4722
4723 2008-08-29  Geoff Norton  <gnorton@novell.com>
4724
4725         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
4726         globals on Darwin/ARM
4727
4728 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
4731         since too many things depend on it. Instead, call 
4732         mono_runtime_set_no_exec ().
4733         
4734         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
4735         the new JIT.
4736
4737         * aot-compiler.c: Add an 'asm-only' AOT option.
4738
4739         * mini.c: Avoid initializing the runtime when doing AOT compilation.
4740                 
4741         * aot-compiler.c (compile_method): Disable gshared support for now as it
4742         doesn't yet work.
4743
4744 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4745
4746         * mini-amd64.h : Fix a compiler warning.
4747
4748         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
4749           Changed to use a callback function to retrieve the unwind info.
4750           This avoids problems observed when code blocks were removed by
4751           unloading an app domain.
4752
4753         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
4754           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
4755           to work properly.
4756
4757         Contributed under MIT/X11 license.
4758
4759 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
4760
4761         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
4762           case to keep the stack aligned to 8.
4763
4764         Contributed under MIT/X11 license.
4765
4766 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
4769         avoid repeated linear searches.
4770
4771 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
4774         methods it can't handle.
4775         
4776         * aot-compiler.c (add_method): Avoid adding a method twice.
4777         (add_wrappers): Add runtime invoke wrappers for all methods.
4778
4779         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
4780         function to create an aot-compatible version of this trampoline.
4781
4782         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
4783
4784 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
4787
4788         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
4789         with a generic sharing failure.
4790
4791         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
4792
4793         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
4794         CEE_RETHROW. Fixes #419634.
4795
4796         * mini.c (mono_method_to_ir): Ditto.
4797
4798         * exceptions.cs: Add a new test.
4799         
4800         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
4801         to mono_type_stack_size_internal () since some callers might not pass in
4802         an rgctx.
4803
4804         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
4805         instrument_prolog. Fixes #419878.
4806
4807         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
4808         doubles in soft float mode volatile.
4809
4810 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
4813
4814         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
4815         to handle soft float correctly.
4816
4817         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
4818         the fast path.
4819
4820         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
4821
4822         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
4823         to sp, since the generics catch code requires it.
4824
4825         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
4826         copying.
4827
4828         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
4829         mono_arch_emit_imt_argument ().
4830
4831         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
4832
4833         * mini-arm.c tramp-arm.c: Generic sharing updates.
4834
4835 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4836
4837         * mini-arm.c: Fix the arm build.
4838
4839         * generic-sharing.c (mini_type_get_underlying_type): New helper function
4840         handling enums, generic instances and generic sharing.
4841         (mini_type_stack_size_full): Ditto.
4842
4843         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
4844         
4845         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
4846
4847         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
4848
4849         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
4850         trampolines.
4851
4852         * mini-arm.c: Various small generic sharing changes.
4853
4854         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
4855         this for x86.
4856         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
4857         custom code.
4858
4859         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
4860         helper function to return a generic class init trampoline.
4861
4862         * method-to-ir.c mini.c: Use it.
4863         
4864         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
4865         arch-specfic function to return a generic class init trampoline.
4866
4867         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
4868         the GENERIC_CLASS_INIT custom code.
4869
4870         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
4871         a fatal error, not a sharing failure.
4872
4873         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
4874         needed.
4875
4876         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
4877         trampoline argument from MONO_ARCH_VTABLE_REG.
4878
4879         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4880         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4881         argument, and pass the vtable in VTABLE_REG.
4882
4883         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
4884         order of the arguments to the C trampoline: pass 'slot' as the trampoline
4885         argument, and pass the vtable in VTABLE_REG.
4886         (mono_arch_create_trampoline_code_full): Remove some special casing for
4887         the rgctx fetch trampoline.
4888
4889         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
4890         Fixes #419273.
4891
4892         * iltests.il: Add a test for it.
4893
4894 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
4897
4898         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
4899         no longer needed.
4900
4901         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
4902         use mono_jit_info_table_find () to avoid recursion.
4903         (mono_delegate_trampoline): Add a sync wrapper here.
4904
4905         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
4906         here.
4907
4908         * mini.c (mono_method_to_ir): Ditto.
4909         
4910         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
4911         add_sync_wrapper argument. Don't add a sync wrapper here.
4912         (mono_create_jump_trampoline): Don't add a sync wrapper here.
4913
4914         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
4915         
4916 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4917
4918         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
4919           of nonvolatile registers back from MonoContext to CONTEXT.
4920
4921         Contributed under MIT/X11 license.
4922
4923 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4924
4925         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
4926           arguments on Winx64 there are only 4 argument registers.  For this
4927           logic to work the last argument must be pulled from the stack.  
4928
4929         Contributed under MIT/X11 license.
4930
4931 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4934
4935         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
4936         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
4937         encode/decode_method_ref ().
4938
4939         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
4940
4941         * aot-runtime.c (decode_patch): Ditto.  
4942
4943         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
4944         MONO_PATCH_INFO_METHOD.
4945
4946         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
4947         MonoGenericJitInfo.
4948
4949         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
4950         MonoGenericJitInfo.
4951
4952         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
4953
4954         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
4955         one from the caller.
4956
4957         * aot-runtime.c (decode_generic_inst): New function to decode and
4958         return a interned generic inst.
4959         (decode_klass_ref): Use it.
4960         (decode_method_ref): Ditto.
4961
4962         * aot-compiler.c (emit_exception_debug_info): Save 
4963         jinfo->has_generic_jit_info too.
4964
4965 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
4968
4969         * iltests.il.in: Add a test for fconv_to_i.
4970
4971         * liveness.c: Disable the liveness2 pass for now to save space.
4972
4973         * regalloc2.c: Include mempool-internals.h to fix warnings.
4974
4975         * aot-compiler.c (encode_method_ref): Encode the context of generic
4976         instance methods.
4977
4978         * aot-runtime.c (decode_method_ref): Inflate generic methods using
4979         the context saved in the aot file.
4980
4981         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
4982
4983         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4984
4985         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
4986         volatile so they won't be optimized away.
4987
4988 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
4989
4990         * ssa.c:
4991         * ssa2.c:
4992         * mini.c:
4993         * regalloc2.c:
4994         * dominators.c: Remove duplicated functions that now are in
4995         mempool-internals.h.
4996
4997 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * aot-compiler.c: Fix warnings.
5000
5001         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
5002
5003         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
5004
5005         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
5006         as the patch type.
5007
5008         * mini.c (mono_resolve_patch_target): Ditto.
5009         
5010         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
5011         (encode_klass_ref): Add support for encoding VARs/MVARs.
5012
5013         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
5014
5015         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
5016         the handling of the got entries into a separate 'decode_got_entry' function.
5017         Add support for RGCTX_FETCH.
5018
5019         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
5020         clobbered by the trampoline code.
5021
5022         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
5023         not clobbered by the indirect calling code.
5024
5025 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5026
5027         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
5028         to fix the build.
5029
5030 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
5031
5032         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
5033         signature using the compilation mempool otherwise we would leak it.
5034
5035 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
5038         mono_emit_abs_call ().
5039
5040         * patch-info.h: Add GENERIC_CLASS_INIT.
5041
5042         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
5043
5044         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
5045         as their target as a near call.
5046
5047         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
5048         ABS handling code.
5049         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
5050
5051         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
5052         call to a runtime function described by a patch.
5053
5054         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
5055         mono_emit_abs_call, this has the advantage that the ABS handling code in
5056         mono_codegen () can handle them both, and can handle other stuff in the
5057         future without additional code.
5058
5059         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
5060         entry.
5061         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
5062         abs addresses.
5063
5064         * mini.h: Add missing bblock related prototypes.
5065
5066         * mini.h (MonoCompile): Remove unused reverse_inst_list and
5067         reverse_inst_list_len fields.
5068
5069         * mini.c: Refactor this file a bit by moving branch optimizations to 
5070         branch-opts.c.
5071
5072         * method-to-ir.c: Merge generic sharing changes missed earlier.
5073
5074         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
5075
5076         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
5077         shared patches. Process METHODCONST as a shared patch.
5078
5079         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
5080         as it crashes on the 2.0 mscorlib.
5081
5082         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
5083         to cause crashes.
5084         
5085         * aot-compiler.c: Use is_plt_patch () in a few additional places.
5086         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
5087         by IMT.
5088
5089         * aot-compiler.c: Reorganize the got handling code to be a bit more
5090         understandable.
5091
5092 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5093
5094         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
5095         mono_patch_info_equals/hash, and use it to massively simplify
5096         get_plt_index ().
5097
5098         * mini.c (mono_patch_info_hash): Simplify this and add support for
5099         more patch types.
5100
5101         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
5102
5103         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
5104         handling code, since an offset is not enough to identify a trampoline.
5105
5106         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
5107
5108 2008-08-17  Mark Probst  <mark.probst@gmail.com>
5109
5110         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
5111
5112         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
5113
5114         * mini-ops.h: Argument and result types for OVF_CARRY ops.
5115
5116         * decompose.c: PPC decompositions for various ops.
5117
5118         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
5119
5120 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
5123         call the generic trampoline code using a call, instead of a jump, to
5124         remove some special casing from the generic trampoline code.
5125
5126         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
5127         (mono_codegen): Ditto.
5128
5129         * aot-compiler.c aot-runtime.c: Ditto.
5130
5131         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
5132
5133         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
5134         helper function to find the offset corresponding to a lazy fetch trampoline.
5135
5136         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
5137         when doing generic sharing.
5138
5139         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
5140         places.
5141         
5142         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
5143         mini-trampolines.c to be with the other trampoline creation functions.
5144
5145         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
5146         as it is equal to method->signature in most cases, add a 
5147         mono_emit_method_call_full variant which takes a signature and an imt
5148         argument as well.
5149
5150 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
5153         to this function, since it could be computed easily from the method 
5154         argument.
5155         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
5156         more.
5157
5158         * method-to-ir.c mini.c: Remove references to 
5159         compile_generic_method_wo_context.
5160
5161         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
5162         generic method calls.
5163         
5164         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
5165         dimensional non-szarrays.
5166
5167         * mini.c (mini_init): Register mono_array_new_1.
5168
5169         * jit-icalls.c (mono_array_new_1): New jit icall.
5170
5171         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
5172         pointing to the method.
5173
5174         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
5175         method addresses belonging to METHOD_JUMP patches in the 
5176         jump_target_got_slot_hash.
5177         (mono_aot_load_method): Ditto.
5178
5179         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
5180         METHOD_JUMP patches.
5181
5182         * mini.c (mini_create_jit_domain_info): New helper function which 
5183         initializes/frees domain->runtime_info.
5184         (mini_free_jit_domain_info): Ditto.
5185         (mini_init): Install the domain hook functions with the runtime.
5186
5187         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
5188         information maintained by the JIT.
5189
5190         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
5191         insertion into jump_table_hash into mono_codegen (), also implement proper
5192         locking.
5193
5194         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
5195         tail calls, it is already done by the aot code.
5196         
5197         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
5198         mechanism on amd64.
5199
5200         * iltests.il.in: Make the jmp test a bit more complex.
5201
5202         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
5203         generic instances which doesn't have a token.
5204
5205         * aot-runtime.c (decode_method_ref): Ditto.
5206         
5207         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
5208         can handle this case now.
5209         (handle_box): Ditto.
5210
5211 2008-08-15  Geoff Norton  <gnorton@novell.com>
5212
5213         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
5214         debugging check.
5215
5216 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
5219         calling generic methods.
5220
5221         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
5222
5223         * aot-runtime.c (decode_patch_info): Ditto.
5224
5225         * mini.c (mono_resolve_patch_target): Ditto.
5226         
5227         * patch-info.h: Add METHOD_RGCTX.
5228
5229         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
5230
5231 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
5232
5233         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
5234         arguments in registers.
5235
5236         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
5237         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
5238
5239         * mini.c (mini_method_compile): Abort aot compilation for generic
5240         methods if generic sharing is disabled.
5241         
5242         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
5243         an mrgctx.
5244
5245         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
5246         requiring an mrgctx.
5247
5248         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
5249         store instructions when converting a vcall to a normal call.
5250
5251         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
5252         mono_arch_find_jit_info.
5253
5254 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
5257         avoid calling mono_method_full_name () for every method even if the
5258         env var is not set.
5259         (check_inline_caller_method_name_limit): Ditto.
5260
5261 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
5264         assemblies in one run.
5265
5266         * aot-compiler.c (mono_compile_assembly): Only print out a count of
5267         skipped methods if it is not 0.
5268
5269         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
5270
5271 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5272
5273         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
5274           MONO_ARCH_HAVE_UNWIND_TABLE.
5275
5276         Contributed under MIT/X11 license.
5277
5278 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
5279
5280         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
5281           from default optimizaton list on Winx64.
5282
5283         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
5284
5285         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
5286           the LMF from the MonoJitTlsData structure.
5287
5288         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
5289
5290         Contributed under MIT/X11 license.
5291
5292 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini.c (sigsegv_signal_handler): Fix the build.
5295
5296         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
5297         assembly->aot_module.
5298
5299         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
5300         hash table. This simplifies and speeds up a lot of code, and fixes support
5301         for .netmodules.
5302
5303         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
5304         with the runtime.
5305
5306         * mini-exceptions.c: Ditto.
5307         
5308         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
5309         'native_offset' argument, since these are computed in the 
5310         mono_find_jit_info () function.
5311
5312         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
5313         is used by exceptions-ppc.c.
5314
5315         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
5316         mono_arch_find_jit_info ().
5317         
5318         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
5319         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
5320         generic code in mini-exceptions.c.
5321
5322 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
5325
5326         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
5327         
5328         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
5329         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
5330         called while holding the loader lock. Fixes #415608.
5331         (mono_aot_get_method_from_token_inner): Ditto.
5332
5333 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
5336         to reduce differences between this and the generic implementation in
5337         mini-exceptions.c.
5338         (ves_icall_get_frame_info): Ditto.
5339
5340         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
5341
5342         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
5343         longer neccesarry.
5344
5345         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
5346         mono_arch_get_call_filter () and make it non-static, for consistency with the
5347         other architectures.
5348
5349 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
5350
5351         * mini.c:
5352         * local-propagation.c:
5353         * mini-x86.c: Correct the name of arch defines.
5354
5355 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
5358         NO_EMULATE_LONG_SHIFT_OPS define.
5359
5360 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
5363         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
5364
5365         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
5366         MACH fixes. Merged from the 2.0 branch.
5367
5368         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
5369
5370         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
5371         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
5372
5373         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
5374
5375         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
5376         mono_marshal_get_native_wrapper () signature changes.
5377
5378 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
5379
5380         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
5381         conversion bug under arm.
5382
5383 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5384
5385         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
5386
5387         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
5388         with overflow checking.
5389
5390 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5391
5392         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
5393         to the genmdesc.pl file
5394
5395 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
5398         arg_array in the soft-float versions of the LOAD/STORE macros.
5399
5400         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
5401         implementation.
5402
5403         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
5404
5405 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5406
5407         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
5408         a float HFA. Fixes #413621.
5409
5410 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
5411
5412         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
5413         frame_size to args_size. Fixes build.
5414
5415 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
5418         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
5419
5420         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
5421         the stack are not unaligned. Fixes #413247.
5422         
5423 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
5424
5425         * mini.c: update jitted methods performance counters.
5426
5427 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
5428
5429         * mini-exceptions.c: increase the exceptions thrown performance
5430         counter in mono_handle_exception ().
5431
5432 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5433
5434         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
5435         can work with netmodules.
5436
5437 2008-07-28  Geoff Norton  <gnorton@novell.com>
5438
5439         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
5440         regression tests.
5441
5442 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
5445         correct place.
5446
5447 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
5448
5449         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5450           The float param registers and other param registers must be the 
5451           same index on Windows x64.
5452
5453         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
5454           ArgValuetypeAddrInIReg argument case.  Setting the argument
5455           op to OP_VTARG_ADDR (OP_REGOFFSET)).
5456
5457         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
5458           variable computed above as the copy length for arguments of storage
5459           type ArgValuetypeAddrInIReg.
5460
5461         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
5462           ArgValuetypeAddrInIReg argument case.  This case will rely on
5463           mono_arch_emit_outarg_vt to emit the correct code later in the process.
5464
5465         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
5466           a 32 byte stack allocation for all calls.  We will omit the adjustment for
5467           jump and tail call instructoins as they do not follow the typical call behavior.
5468
5469         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
5470           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
5471           local variable and pass the local variable by reference to the called method.
5472
5473         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
5474           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
5475           of a struct is passed in a register it must be saved with the other
5476           volatile argument on the stack.
5477
5478         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
5479           frame pointer the stack adjustment value must be saved to the unwind 
5480           info structure.
5481
5482         Contributed under MIT/X11 license.
5483
5484 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
5485
5486         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
5487         which got lost in the merge.
5488
5489 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5490
5491         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
5492         build.
5493
5494         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
5495         
5496         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
5497         icalls, since they won't be patched.
5498
5499         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
5500         different code sequence when running under valgrind to prevent some valgrind
5501         errors.
5502
5503         * iltests.il.in: Add new regression test.
5504
5505         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
5506         end with a throw.
5507
5508         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
5509         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
5510
5511         * iltests.il.in: Add new test.
5512
5513         * aot-compiler.c: Fix some warnings.
5514
5515         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
5516         Fixes #412494.
5517
5518 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5519
5520         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
5521         (mini_usage_jitdeveloper): Add a missing --wapi option.
5522
5523 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * mini-codegen.c: Simplify the is_fp macros.
5526         (free_up_ireg): Remove, use free_up_reg instead.
5527         (free_up_reg): Fix the fp case.
5528
5529 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
5532         lowered earlier.
5533
5534         * exceptions-x86.c: Merge some changes which seemed to have got lost
5535         in the linear-ir merge.
5536
5537         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
5538
5539         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
5540         long vreg volatile even if the variable was already created.
5541
5542         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
5543         volatile variables.
5544
5545 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
5548
5549         * mini.c (mono_jit_compile_method_inner): Add support for 
5550         MONO_EXCEPTION_BAD_IMAGE.
5551
5552         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
5553         mini_method_get_context () returns NULL. Fixes #356531.
5554
5555         * mini.c (mono_method_to_ir): Ditto.
5556         
5557         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
5558         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
5559
5560 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5561
5562         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
5563         in the LDFTN implementation.
5564
5565 2008-07-25  Mark Probst  <mark.probst@gmail.com>
5566
5567         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
5568         code, patch calls to icalls, too, even if they're not in the
5569         shared generic code hash.  Fixes #411962.
5570
5571 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
5572
5573         * cpu-x86.md: Increase the length of the fcall opcodes.
5574
5575         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
5576         calls returning floats.
5577
5578         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
5579         on NEWARR.
5580         
5581         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
5582         missed earlier.
5583
5584         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
5585         into the domain->method_code_hash.
5586
5587         * aot-compiler.c: Fix win32 build.
5588
5589         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
5590         
5591         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
5592         gshared NEWARR implementation.
5593
5594         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
5595
5596         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
5597         can be used outside of method_to_ir.
5598
5599         * mini.h (MonoCompile): Add arg_types field.
5600
5601         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
5602         
5603         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
5604         the values of the local arg_array and param_types array.
5605
5606 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5607
5608         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
5609         got accesses might only get generated later when NEWOBJ is decomposed.
5610         
5611         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
5612         looking up the native code of the target method when a delegate is called
5613         for the first time.
5614
5615         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
5616         optimization.
5617
5618         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
5619
5620         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
5621         AOT work on platforms without a working dlsym implementation.
5622
5623         * mini.h: Bump AOT image format version.
5624         
5625 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5626
5627         * mini-exceptions.c: Free a MonoType with
5628         mono_metadata_free_type() instead of g_free().
5629
5630         * aot-runtime.c: Free a MonoType.
5631
5632 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
5635         optimization.
5636
5637         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
5638         fp stack on x86.
5639
5640 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
5641         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
5642         profiler hook.
5643
5644 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
5647         NEWOBJ calls on valuetypes.
5648
5649         * iltests.il.in: Add new test.
5650
5651         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
5652
5653 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
5656         is no longer needed.
5657
5658         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
5659         non register sized integer arguments.
5660         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
5661         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
5662         emit_memcpy2 ().
5663
5664         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
5665         CEE_MONO_RETOBJ.
5666         
5667         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
5668         two a binop with different sized arguments is emitted.
5669
5670         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
5671         instruction in the ins==NULL case.
5672
5673 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5674
5675         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
5676
5677         * mini-x86.c: Fix osx build.
5678
5679         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
5680         opcodes as well.
5681
5682         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
5683         instruction for non int sized variables.
5684
5685         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
5686         implementation.
5687
5688 2008-07-23  Robert Jordan  <robertj@gmx.net>
5689
5690         * method-to-ir.c: Fix MSVC build.
5691
5692 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
5695         a non int sized type, widen it to an int since newer versions of gcc seem to
5696         generate code which needs this.
5697
5698         * ssa2.c abcremoval2.c: Fix warnings.
5699
5700         * *: Merge the Linear IR branch.
5701
5702         The original branch is at trunk/branches/vargaz/mini-linear-il, and
5703         the ChangeLog file there describes all the changes done over the years. 
5704         Further documentation can be found at www.mono-project.com/Linear_IL.
5705
5706 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5707
5708         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
5709           The float param registers and other param registers must be the 
5710           same index on Windows x64.
5711
5712         Contributed under MIT/X11 license.
5713
5714 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
5715
5716         * mini.c: Make the previous fix GC safe.
5717
5718 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
5719
5720         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
5721
5722 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
5723
5724         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
5725           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
5726           ArgValuetypeAddrInIReg instead.
5727
5728         Contributed under MIT/X11 license.
5729
5730 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * mini-codegen.c (get_register_spilling): Fix a warning.
5733
5734 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
5735
5736         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
5737         for types which the initialization fails. Raises the provided exception
5738         at the right stop after cleanup.
5739
5740 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * aot-compiler.c: Free most of the memory allocated during compilation.
5743
5744         * mini.c (mini_parse_debug_options): Fix a leak.
5745         
5746         * mini.c (mini_method_compile): Don't add the method to the jit info tables
5747         during aot compilation.
5748
5749 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
5750
5751         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
5752         it has too much register pressure.
5753
5754 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
5757
5758 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5761         on x86.
5762
5763         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
5764         on amd64 similar to the way it is done on arm.
5765
5766         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5767
5768         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
5769         consistency, normalize error messages, avoid loading aot-only modules in
5770         normal mode.
5771
5772         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
5773         for consistency.
5774
5775         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
5776
5777 2008-07-11  Martin Baulig  <martin@ximian.com>
5778
5779         * debug-debugger.h
5780         (MonoDebuggerInfo): Add `interruption_request'.
5781
5782 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * aot-compiler.c (emit_plt): Remove some dead code.
5785
5786         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
5787
5788         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
5789         return the plt info offset belonging to a given plt entry.
5790
5791         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
5792         mono_aot_get_plt_info_offset.
5793         
5794         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
5795         similar to the amd64 code by makeing jumps through a separate jump table 
5796         instead of embedding the jump addresses into the code.
5797
5798 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
5801         method.
5802
5803 2008-07-10  Martin Baulig  <martin@ximian.com>
5804
5805         * mini.c (mini_method_compile): Disable generics sharing when
5806         running in the debugger.
5807
5808 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
5811
5812         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
5813         the local register allocator from running out of registers on x86 when 
5814         using aot.
5815
5816 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
5817
5818         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
5819         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
5820         C4146.
5821
5822         Contributed under MIT/X11 license.
5823
5824 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
5827         speed up the assembler.
5828
5829 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
5832         support.
5833
5834         * mini.c: Move the soft float handling macros a bit earlier, add 
5835         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
5836         place.
5837
5838         * mini.h: Add prototype for mono_arch_fixup_jinfo.
5839
5840         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
5841         read-only to help catch code allocation requests.
5842         
5843         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
5844         and turn it off when using --aot-only or when compiling with --aot=full.
5845
5846         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
5847         jump table for switches from the normal domain mempool, not the code
5848         manager.
5849
5850         * mini-trampolines.c (get_unbox_trampoline): New function to return an
5851         unbox trampoline which handles aot-only mode too.
5852
5853         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
5854         an AOTed unbox trampoline.
5855
5856         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
5857
5858 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5859
5860         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
5861         ""
5862
5863         Contributed under MIT/X11 license.
5864
5865 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
5866
5867         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
5868           the unwind information for the method at the end of the allocated block.
5869           
5870         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
5871           MonoCompileArch to hold the unwind info for SEH on Winx64
5872         
5873         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
5874           frame pointer info for the method being compiled.
5875           
5876         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
5877           the call to mono_exception_from_token.
5878           
5879         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
5880           storing the method prolog information in a format that the Winx64 SEH can understand.  This
5881           information is stored a the end of the method block because it is all 32-bit offset based.
5882
5883         Contributed under MIT/X11 license.
5884
5885 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
5886
5887         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
5888
5889         * wapihandles.c: Fix warnings.
5890
5891         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
5892         mode.
5893
5894         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
5895         mono_jit_compile_method in aot-only mode since that calls the type 
5896         initializer.
5897         
5898         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
5899         get_delegate_invoke_impl in aot-only mode.
5900
5901         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
5902
5903 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
5906
5907         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
5908         is on by default.
5909
5910         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
5911
5912         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
5913         init trampoline from the AOT file as well.
5914
5915         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
5916         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
5917         code.
5918
5919         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
5920         mono_init.
5921
5922         * exceptions-amd64.c: Add _full variants for the remaining exception code
5923         creation functions as well, allow emission of relocatable code, remove
5924         caching since that is now done by the caller.
5925
5926         * mini-exceptions.c: Add _full variants for the remaining exception code
5927         creation functions as well, add aot-only support.
5928
5929         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
5930         if we can determine a proper token for them.
5931         (add_wrappers): Add a few more wrappers.
5932         (emit_method_code): Remove some dead code.
5933         (emit_trampolines): Emit exception code too.
5934
5935         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
5936
5937         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
5938         mono_array_new_va which avoids varargs.
5939
5940         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
5941
5942         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
5943         mono_arch_create_specific_trampoline () in all places.
5944
5945         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
5946         a bit so it can be used for other things as well.
5947         
5948         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
5949         on demand as well.
5950
5951         * exceptions-amd64.c: Rename the caching from the exception code creation
5952         functions, it is done by the caller instead.
5953         
5954         * exceptions-amd64.c: Change the signature of the exception code creation 
5955         functions to allow the creation of relocatable code later.
5956
5957         * mini-exceptions.c: Add a set of functions to query the various 
5958         runtime-generated exception functions.
5959
5960         * mini.c mini-exceptions.c: Use the newly added functions instead of the
5961         mono_arch_.. () functions.
5962         
5963 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5964
5965         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
5966
5967         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
5968
5969         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
5970         (mini_get_vtable_trampoline): Ditto.
5971
5972         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
5973         code in the AOT case by returning the code size and a list of relocations to
5974         the caller.
5975
5976         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
5977
5978 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5979
5980         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
5981           clean the stack.
5982
5983         Contributed under MIT/X11 license.
5984
5985 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
5988         so the buffer size can be computed correctly. Fixes #404735.
5989
5990         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
5991         normally as cfg->debug_info is already freed.
5992
5993 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * mini-amd64.c: For calls returning vtypes in registers, don't store
5996         the return address on the stack, instead allocate a separate local for
5997         it. Fixes #404729.
5998
5999 2008-07-05  Mark Probst  <mark.probst@gmail.com>
6000
6001         * mini-trampolines.c, mini.h: Add an argument to
6002         mono_create_jit_trampoline_in_domain() for turning off the adding
6003         of the sync wrapper.
6004
6005         * mini.c: Use the JIT trampoline without sync instead of
6006         ldftn_nosync in static RGCTX invoke wrappers so that the call can
6007         be patched.
6008
6009 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6010
6011         * driver.c: Turn on GSHARED optimization by default.
6012
6013 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
6016         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
6017
6018         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
6019         create a variant of the generic trampoline code callable from AOTed trampolines.
6020
6021         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
6022         trampoline code callable from AOTed trampolines.
6023
6024         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
6025
6026 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6027
6028         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
6029         pass-through manner.
6030
6031         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
6032         and don't fail sharing for them anymore.
6033
6034         * mini-exceptions.c: Handle exceptions in shared generic methods.
6035
6036         * generic-sharing.c: When checking the context of a generic
6037         method, also check its class's context.  Don't treat wrappers as
6038         sharable.
6039
6040         * mini-trampolines.c: Some code factored out to
6041         metadata/generic-sharing.c.  Handle the MRGCTX case.
6042
6043         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
6044         we must deal with the method being of another instantiation of the
6045         class.  Add static rgctx invoke wrappers to generic methods.
6046
6047 2008-07-04  Mark Probst  <mark.probst@gmail.com>
6048
6049         * mini.c: Provide all jit infos of generic shared methods with a
6050         generic jit info.
6051
6052         * mini-exceptions.c: Handle the new situation that a generic info
6053         might be available, but not info about the this/vtable/mrgctx
6054         variable.
6055
6056 2008-07-03  Mark Probst  <mark.probst@gmail.com>
6057
6058         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
6059         generic methods.
6060
6061 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * dominators.c (check_dominance_frontier): Fix a warning.
6064
6065         * mini.h: Add some missing prototypes.
6066
6067         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
6068
6069         * driver.c (mono_jit_init_version): Correct the comments since the first
6070         argument should be the name of the root domain, not a filename.
6071
6072         * aot-runtime.c (make_writable): Error out if this is called while running
6073         with --aot-only.
6074         (load_aot_module): Ditto.
6075
6076         * aot-compiler.c: Really fix the computation of method indexes.
6077
6078         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
6079         optimizations as this is no longer called frequently.
6080
6081         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
6082         method and the invoke impl code and pass it to the delegate trampoline instead of
6083         just the delegate class.
6084
6085 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * aot-compiler.c: Fixup the computation of method indexes.
6088         (add_wrappers): Create the base methods of the runtime invoke wrappers using
6089         the method builder infrastructure.
6090
6091         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
6092         has no header.
6093
6094         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
6095         mode, load the method right away instead of creating a trampoline.
6096
6097         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
6098
6099         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
6100         some checks a bit.
6101
6102 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
6103
6104         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
6105         (mono_aot_load_method): Use method_index instead of method->token.
6106
6107         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
6108         can handle icalls etc. properly.
6109
6110         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6111
6112         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
6113
6114         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
6115         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
6116         JIT_ICALL_ADDR patch type.
6117
6118         * patch-info.h: Add JIT_ICALL_ADDR patch type.
6119
6120         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
6121         request flag.
6122         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
6123
6124         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
6125
6126 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * mini.c: Use domain->jit_code_hash_lock for controlling access to
6129         domain->jit_code_hash.
6130
6131 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
6132
6133         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
6134
6135 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
6138         get_this_arg_from_call, let it compute it when needed.
6139
6140         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
6141         gsctx from code only when needed.
6142
6143         * mini-trampolines.c (get_generic_context): Rename this to 
6144         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
6145         it can be called by the arch backends.
6146
6147         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
6148
6149 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
6150
6151         * driver.c (mono_main): Add experimental --aot-only command line option.
6152
6153         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
6154         set.
6155
6156 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
6157
6158         * driver.c (DllMain): Remove mono_module_handle.
6159
6160         Contributed under MIT/X11 license.
6161
6162 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
6165         for emitting methods which are not in the source assembly. Detect and report
6166         failure of assembling+linking.
6167         
6168         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
6169
6170         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
6171
6172 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
6173
6174         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
6175
6176 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
6177
6178         * mini.h: Remove some obsolete prototypes.
6179
6180         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
6181
6182 2008-06-24  Mark Probst  <mark.probst@gmail.com>
6183
6184         * mini.c (get_object_generic_inst): Variable-sized arrays are not
6185         supported by Visual Studio, so use alloca().
6186
6187 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
6190         Fixes #402585.
6191
6192 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6193
6194         * mini.c: Fail sharing of a generic method if it contains an open
6195         catch clause (because we don't pass MRGCTXs yet).
6196
6197 2008-06-23  Mark Probst  <mark.probst@gmail.com>
6198
6199         * mini.c: When compiling a method with generic sharing, insert the
6200         method instantiated with an all-Object generic context into the
6201         jit info table, instead of the context of the first instantiation
6202         of the method we happen to compile.
6203
6204 2008-06-18  Martin Baulig  <martin@ximian.com>
6205
6206         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
6207         `major_version' and `minor_version'.
6208
6209 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6210
6211         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
6212         mono_method_is_generic_sharable_impl() takes an additional
6213         argument specifying whether to treat type variables as reference
6214         types.
6215
6216 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6217
6218         * mini.h: Removed obsolete prototypes.
6219
6220 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6221
6222         * mini.c: Don't fail generic sharing for initobj and sizeof - we
6223         already handle them.
6224
6225 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6226
6227         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
6228         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
6229         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
6230         tramp-x86.c: Added a MonoGenericContext* argument to
6231         mono_arch_get_unbox_trampoline() so that it can call other
6232         functions which require it.
6233
6234 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6235
6236         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
6237         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
6238         mono_arch_get_this_arg_from_call() takes a
6239         MonoGenericSharingContext* as well.
6240
6241 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6242
6243         * mini.c: Factor out code for emitting unbox into emit_unbox() and
6244         implement generic sharing of unbox.
6245
6246 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6247
6248         * mini.c: Don't compute the vtable to determine whether a field is
6249         special static, because it might not work for open types.
6250
6251 2008-06-17  Mark Probst  <mark.probst@gmail.com>
6252
6253         * mini.c: Removed the unused token_type and token_source arguments
6254         from get_runtime_generic_context_ptr().
6255
6256 2008-06-17  Marek Habersack  <mhabersack@novell.com>
6257
6258         * mini.c (ADD_BINOP): fix the build
6259
6260 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
6261
6262         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
6263         a widening op.
6264
6265 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6266
6267         * mini.h: Removed class relations enum that's not used anymore.
6268
6269 2008-06-16  Mark Probst  <mark.probst@gmail.com>
6270
6271         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
6272
6273         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
6274         the lazy fetch trampoline access code.
6275
6276 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
6279
6280 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
6281
6282         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
6283
6284         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
6285
6286         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
6287
6288 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
6291         intrinsics.
6292
6293         * mini-ops.h: Add MIN/MAX_UN opcodes.
6294
6295         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
6296         intrinsics.
6297
6298         * basic-math.cs: Add more min/max tests.
6299
6300         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6301
6302 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6303
6304         * mini.c: Small fix in the prologue of emit_castclass.
6305
6306 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
6309
6310         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
6311         do not work even for unsigned types. Fixes #400014.
6312
6313         * basic-math.cs: Add regression tests for unsigned Min/Max.
6314
6315 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6316
6317         * mini.c: Added additional context_used argument to several
6318         functions, which will be needed for sharing generic methods.  Use
6319         GET_RGCTX macro wherever appropriate.  Declare only one
6320         context_used in mono_method_to_ir().
6321
6322 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6323
6324         * mini.c, generic-sharing.c: Removed generic class relations.
6325
6326         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
6327         functions due to MRGCTX changes.
6328
6329 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6330
6331         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
6332         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
6333         with calculated IMT.
6334
6335         * mini.c: Generic sharing of calls via generic interfaces.
6336
6337         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
6338         generic method with non-constant MonoGenericContext*.  Instead,
6339         the context is taken out of the method itself.
6340
6341 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6342
6343         * mini.c: Generic sharing of ldvirtftn.
6344
6345 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6346
6347         * mini.c: Generic sharing of ldftn.
6348
6349 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6350
6351         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
6352
6353 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6354
6355         * mini.c: Generic sharing of the special case of ldtoken followed
6356         by a call to GetTypeFromHandle.
6357
6358 2008-06-13  Mark Probst  <mark.probst@gmail.com>
6359
6360         * mini.c: Generic sharing of box for nullable types.
6361
6362 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
6363
6364         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
6365         are passed on the stack. Fixes #324807.
6366
6367 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
6368
6369         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
6370         for the ArgValuetypeAddrInIReg case.
6371
6372         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
6373         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
6374
6375         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
6376         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
6377         local variable and pass the local variable by reference to the called method.
6378           
6379         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
6380         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
6381
6382         Contributed under MIT/X11 license.
6383
6384 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
6385
6386         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
6387
6388         * debug-mini.c (mono_debug_print_vars): Release memory after printing
6389         everything.
6390
6391 2008-06-10  Martin Baulig  <martin@ximian.com>
6392
6393         * debug-mini.c
6394         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
6395
6396 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
6397
6398         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
6399         possible error when no arguments are passed.
6400
6401         Contributed under MIT/X11 license.
6402
6403 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
6404
6405         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
6406         where the file name is NULL.
6407
6408 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6409
6410         * mini.c: Fix s390 build.
6411
6412 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * trace.c (mono_trace_parse_options): Fix warnings.
6415
6416         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
6417
6418 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * mini.c (remove_block_if_useless): Avoid printing the method name.
6421         
6422         * mini.c: Remove needless setting of ins->cil_code which is now done by 
6423         MONO_INST_NEW.
6424
6425         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
6426         LMF. Not yet used.
6427
6428         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
6429         translated code after it has been patched.
6430
6431 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6432
6433         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
6434         avoid problems during code patching on SMP systems.
6435         (emit_call): Avoid adding a patch info which is already added by 
6436         emit_call_body.
6437         (mono_arch_emit_exceptions): Ditto.
6438
6439 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6440
6441         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
6442         MONO_TYPE_ISSTRUCT already checks for it.
6443
6444 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
6445
6446         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
6447           structs with floats on Winx64 the float registers are not used.  
6448           The integer registers are always used..
6449         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
6450           only one register will be used and only if the size of the struct 
6451           is 1,2,4, or 8 bytes.
6452
6453         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
6454           to work for Winx64.
6455
6456         Contributed under MIT/X11 license.
6457
6458 2008-06-05  Martin Baulig  <martin@ximian.com>
6459
6460         * debug-debugger.c (debugger_lookup_class): Also call
6461         mono_class_setup_methods() here; we're only called from RTI.
6462
6463 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6464
6465         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
6466         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
6467         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
6468         Post-process object files and add dtrace-generated object, if necessary.
6469
6470         Contributed under MIT/X11 license.
6471
6472 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6473
6474         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
6475         element class.
6476
6477         * mini.c: Generic sharing for unbox.any and castclass.
6478
6479 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6480
6481         * mini.c: Ignore tailcall prefix in shared generic code and when
6482         doing calls which require a vtable/rgctx argument.
6483
6484 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6485
6486         * mini.c: Don't free the JIT info.
6487
6488         * driver.c: Changes in the JIT info table testing code.
6489
6490 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
6493         interruption. Fix some warnings.
6494
6495         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
6496         interruption_checkpoint.
6497
6498 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6499
6500         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
6501         from embedding applications.
6502
6503 2008-06-02  William Holmes  <billholmes54@gmail.com>
6504
6505         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
6506           reserving 32 bytes on the stack when making calls. 
6507
6508         Contributed under MIT/X11 license.
6509
6510 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
6513         the linear IL branch.
6514
6515         * driver.c: Print out more information for --version on arm.
6516
6517 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
6520         bb_exit instead, since out of line bblocks might not actually be emitted
6521         out-of-line.
6522         
6523         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
6524         maximum epilog size for out of line bblocks if tracing is enabled.
6525
6526         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
6527
6528 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
6529
6530         * arrays.cs: Regression tests for allocating arrays with negative sizes.
6531
6532 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
6533
6534         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
6535         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
6536         opcodes.
6537
6538 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6539
6540         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
6541         the 'value' to store is a constant.
6542
6543         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
6544
6545         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
6546         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
6547
6548 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6549
6550         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
6551         for accessing method->generic_container.
6552
6553 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6554
6555         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
6556         
6557         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
6558
6559         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
6560
6561         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
6562         fails.
6563
6564 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6565
6566         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
6567
6568         * mini.c: Handle the case when mono_class_vtable () fails.
6569
6570 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6571         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
6572         the stat profiler.
6573
6574 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6575
6576         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
6577         together with domain sharing.
6578
6579 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6580
6581         * mini.c: Treat callvirts to final methods like non-virtual calls
6582         when doing generic sharing, i.e. look them up in the runtime
6583         generic context.
6584
6585 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6586
6587         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
6588         with computed types (for generic sharing).
6589
6590         * mini.c: Generic sharing for mkrefany and refanyval.
6591
6592 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
6595         possible.
6596
6597         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
6598         the generic sharing code.
6599         
6600         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
6601         when needed.
6602
6603 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6604
6605         * mini.h: Remove the declaration of mono_aot_init_vtable ().
6606
6607 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
6608
6609         * driver.c: updated copyright date
6610
6611 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
6614         needed.
6615
6616 2008-05-19  Martin Baulig  <martin@ximian.com>
6617
6618         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
6619         pointing to the new `_mono_debug_using_mono_debugger' variable.
6620
6621         * driver.c
6622         (mono_main): Check mono_debug_using_mono_debugger() rather than
6623         the `MONO_INSIDE_MDB' environment variable to check whether we're
6624         inside the debugger.
6625
6626 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
6627
6628         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
6629         argument.
6630
6631 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
6632
6633         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
6634
6635         * mini.c: Added mini_assembly_can_skip_verification. This
6636         function checks if the assembly requested to skip verification. 
6637         Fixes part of #387274.
6638
6639 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6640
6641         * mini.c (mini_get_method): Disable the check for open generic classes when
6642         using generic sharing.
6643
6644         * generics.cs: Add a test for #387034.
6645
6646         * mini.c (mini_get_method): Check whenever the method class is an open generic
6647         type, and return NULL in that case, causing a verification error. Fixes
6648         #384123.
6649
6650 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         * driver.c (mono_main): Revert r102623. The right
6653         thing to do is to enable the verifier under verifiable
6654         unless a --security flag was passed.
6655
6656         We need this non-trivial behavior for --verify-all otherwise
6657         mcs-compileall won't be able to use it. As it needs everything to
6658         be verified under validil.
6659
6660 2008-05-06  Martin Baulig  <martin@ximian.com>
6661
6662         Fix #383749.
6663
6664         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
6665         (mono_debugger_thread_cleanup): Likewise.
6666         (mono_debugger_extended_notification): Likewise.
6667
6668 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6669
6670         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
6671         against both inflated and non-inflated methods. We need to check against the
6672         generic definition for cases where the instantiated method is not visible.
6673         We need to check against the inflated types for cases where the instantiation
6674         changes any super type. This fixes #382986.
6675
6676         Note that this doesn't need to be applied to other parts of mono_method_to_ir
6677         that check for visibiliy as generic params only appears as the type subject
6678         of tokens on call opcodes. Field manipulation and ldftn must always
6679         target an exact type.
6680
6681 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
6682
6683         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
6684         if no related --security flag is passed.
6685
6686 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6687
6688         * mini-arch.h: Prepare support for ppc64.
6689
6690         Contributed under MIT/X11 license.
6691
6692 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6693
6694         * aot-runtime.c: Prepare support for ppc64.
6695
6696         Contributed under MIT/X11 license.
6697
6698 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6699
6700         * mini-ops.h: Prepare support for ppc64.
6701
6702         Contributed under MIT/X11 license.
6703
6704 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
6705
6706         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
6707
6708         Contributed under MIT/X11 license.
6709
6710 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
6713         assemblies, since aot_name is not a full path, causing us to load MS.NET 
6714         assemblies on windows.
6715
6716 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6717
6718         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
6719         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
6720         * main.c: Use UTF-8 encoded command line instead of Windows default code
6721         page on Windows to support Unicode.
6722         * driver.c (DllMain): New function for mixed-mode assembly support.
6723         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
6724         export __stdcall functions without decoration.
6725
6726         Contributed under MIT/X11 license.
6727
6728 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6729
6730         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
6731         saving it very early.
6732
6733 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6734
6735         * mini.h, mini.c: Lots of code for accessing the old RGCTX
6736         deleted.  The only way to access the new RGCTX is via the
6737         trampline.
6738
6739         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
6740         vtable instead of the RGCTX to static methods.
6741
6742         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
6743         accessing the new RGCTX.
6744
6745         * generic-sharing.c: There is no separation between self, type
6746         arguments and other types in the RGCTX anymore.
6747
6748 2008-04-25  Jonathan Chambers <joncham@gmail.com>
6749
6750         * mini-amd64.c (add_general): Remove previous stack adjustment.
6751         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
6752         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
6753         for 32 bytes of stack space reserved for all calls.
6754         
6755         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
6756         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
6757         adjustment.
6758         
6759         Code contributed under MIT/X11 license.
6760
6761 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
6762
6763         * mini.c (mini_method_verify): Only verify non-inflated methods, check
6764         against the root definition, peeling out method and type instantiations.
6765         Cache verify success results, code that fails verification is still
6766         checked multiple times.
6767
6768 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
6771
6772 2008-04-23  Jonathan Chambers <joncham@gmail.com>
6773
6774         * mini-amd64.c (add_general): Always increment stack on Win64.
6775         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
6776         on Win64.
6777         
6778         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
6779         stack based argument handling on Win64.
6780         
6781         Code contributed under MIT/X11 license.
6782
6783 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
6784
6785         * Makefile.am (version.h): Add support for git-svn.
6786
6787 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6788
6789         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
6790         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
6791         avoiding allocations and libc functions which might deadlock.
6792         
6793         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
6794         'no-gdb-backtrace' option is set.
6795
6796         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
6797
6798         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
6799
6800 2008-04-21  Martin Baulig  <martin@ximian.com>
6801
6802         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
6803         and `get_lmf_addr'; `notification_address' is no longer a pointer.
6804
6805 2008-04-21  Martin Baulig  <martin@ximian.com>
6806
6807         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
6808         `thread_vtable', `event_handler_ptr' and `event_handler'.
6809
6810 2008-04-21  Martin Baulig  <martin@ximian.com>
6811
6812         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
6813         allows delayed initialization of the `executable_code_buffer' when
6814         attaching.
6815
6816 2008-04-21  Martin Baulig  <martin@ximian.com>
6817
6818         * mini.h (mono_debugger_create_notification_function): Removed.
6819         * tramp-*.c (mono_debugger_create_notification_function): Removed.
6820
6821         * mdb-debug-info64.s
6822         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6823
6824         * mdb-debug-info32.s
6825         (MONO_DEBUGGER__notification_function): Added this in the .text section.
6826
6827         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
6828         currently only works on x86 and x86_64, so don't create it on ppc.
6829
6830 2008-04-21  Martin Baulig  <martin@ximian.com>
6831
6832         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
6833
6834         * mini.c
6835         (mini_method_compile): In the fp elimination check, check
6836         `debug_options.mdb_optimizations' in addition to
6837         mono_debug_using_mono_debugger().       
6838
6839         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
6840         disable some JIT optimizations which are only disabled when
6841         running inside the debugger.
6842         Added `--help-debug' option to describe the debugging options.
6843         (parse_debug_options): New static function to parse the `--debug'
6844         options, so we can easily add more stuff in future.
6845
6846 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
6847
6848         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
6849         the method has no body.
6850
6851 2008-04-19  Jonathan Chambers <joncham@gmail.com>
6852
6853         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
6854         assembly is not allowed in MSVC 64-bit compiler. 
6855         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
6856         as we get floating point exceptions everywhere.
6857         
6858         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
6859         correctly align arguments for call to throw_exception.
6860         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
6861         
6862         Code contributed under MIT/X11 license.
6863
6864 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
6865
6866         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
6867
6868 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
6871
6872         * mini-amd64.c (NEW_INS): Set cil_code.
6873
6874         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
6875         from mini-amd64.c so all debugger related logic is in one place.
6876
6877         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
6878         later won't have a random ip assigned to them.
6879
6880 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
6881
6882         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
6883         the arch specific function initializes code_size.
6884         (mono_create_delegate_trampoline): Ditto.
6885
6886         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
6887         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
6888         platforms.
6889
6890         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
6891         running under the debugger.
6892
6893         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
6894         debugger.
6895
6896         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
6897         debugger. Also move the disabling of optimizations here from driver.c.
6898         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
6899         debugger.
6900
6901         * mini.h (MonoCompile): Add a few new flags.
6902
6903 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
6904
6905         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
6906         so the cil_code field of created MonoInst's is properly set.
6907         (mini_select_instructions): Ditto.
6908
6909         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
6910         (MONO_INST_NEW_CALL): Ditto.
6911
6912         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
6913         in many places so the ins->cil_code field is properly initialized.
6914
6915         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
6916         place.
6917
6918 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * mini.c (mini_method_compile): Print a different message when compiling a 
6921         shared method.
6922         
6923         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
6924         > 1.
6925
6926 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6927
6928         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
6929         SSE2 instructions.
6930
6931         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
6932         
6933 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * mini.c (handle_stack_args): Make this return void since its return value was
6936         never used. Also set cfg->unverifiable for invalid IL instead of calling
6937         G_BREAKPOINT ().
6938
6939 2008-04-10  Mark Probst  <mark.probst@gmail.com>
6940
6941         * mini.c: Make sure "this" is live in catch clauses with type
6942         variables in shared generic code.
6943
6944 2008-04-08  Mark Probst  <mark.probst@gmail.com>
6945
6946         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
6947         generic_class_is_reference_type() to ensure the proper behaviour
6948         when sharing generic code and the type in question is a type
6949         argument.
6950
6951 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
6954         race conditions when printing thread dumps. Fixes #377738.
6955
6956 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
6957         
6958         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
6959         shows up when both MonoInst arguments can cause aliasig.
6960         There is likely no way in the current JIT to trigger this problem, but
6961         it showed up in the development of generics sharing, when in a new
6962         opcode both args of an OP_GROUP can be aliases (addresses of a local).
6963         When the generics sharing code will be committed, its tests will be
6964         valid also for this bug.
6965
6966 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6967
6968         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
6969         PATCH_INFO_METHOD.
6970
6971         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
6972         NULL.
6973
6974 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
6977         use a more detailed exception message for InvalidCastException.
6978
6979         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
6980
6981         * driver.c (mono_main): Add --debug=casts option to turn on better 
6982         InvalidCastException message details.
6983
6984         * mini.c (mini_get_debug_options): New helper function to return the address of
6985         the debug_options variable.
6986
6987         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
6988         the jit_tls TLS variable.
6989
6990         * mini.c (mono_jit_tls): New TLS variable.
6991
6992         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
6993         option is used.
6994
6995 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
6996
6997         * mini.h: Removed verifer related stuff. This code was moved to verify.c
6998
6999         * mini.c: Removed verifer related stuff, code moved to verify.c.
7000
7001         * driver.c: Using code from verify.c instead of mini.c.
7002
7003 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
7006         longer valid.
7007
7008 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
7009
7010         * mini.c (check_for_method_verify): Enabling verification of
7011         corlib if mono_verify_all is set. Bugs in the verifier preventing that
7012         have been fixed.
7013
7014 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
7015
7016         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
7017         caller saved registers as well.
7018         
7019         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
7020         saved registers as well.
7021
7022 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
7023
7024         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
7025
7026         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
7027         code.
7028
7029 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
7032         to get_call_info.
7033         (get_call_info): Take a gsctx argument instead of 'cfg'.
7034
7035 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
7038         mono_verify_all is set.
7039
7040         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
7041
7042         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
7043
7044 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7045
7046         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
7047         an exception.
7048
7049         * driver.c mini.c mini.h: Add a --verify-all development option to test the
7050         verifier and the code generated by the compiler.
7051
7052 2008-03-25  Mark Probst  <mark.probst@gmail.com>
7053
7054         * mini.c: Generic sharing of the non-nullable case of the box
7055         instruction.
7056
7057 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * inssel.brg: Fix the build.
7060
7061         * iltests.il.in: Add a test for lconv.ovf.u8.un.
7062
7063 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
7064
7065         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
7066         Array:Address. Fixes #372410.
7067
7068         * iltests.il.in: New tests for readonly prefix.
7069
7070 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
7071
7072         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
7073         mini-trampolines.c.
7074
7075         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
7076         mini-exceptions.c.
7077
7078         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
7079         
7080         * mini.c (mono_decompose_op_imm): New helper function.
7081
7082         * mini-s390x.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-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7087         mono_arch_output_basic_block. Fix warnings.
7088
7089         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
7090         for now.
7091
7092 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
7095         since the extra frame is now detected automatically inside the loop.
7096
7097         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
7098         opts which are now in mono_peephole_ins ().
7099         
7100         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
7101
7102         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
7103         frames and skip duplicate managed-to-native frames. Fixes #367665.
7104
7105         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7106         opts which are now in mono_peephole_ins ().
7107         (mono_arch_peephole_pass_2): Ditto.
7108
7109         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
7110
7111         * mini-codegen.c (mono_peephole_ins): New helper function containing the
7112         arch independent peephole optimizations.
7113
7114         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
7115         opts which are now in mono_peephole_ins ().
7116
7117         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
7118         
7119         * mini-s390.c (mono_arch_output_basic_block): Fix build.
7120
7121         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
7122         pattern.
7123
7124         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
7125         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
7126         opcode. 
7127
7128 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
7131         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
7132         return value.
7133
7134         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
7135         mono_arch_output_basic_block. Fix warnings.
7136
7137 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7138
7139         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7140         conv.ovf.u.un.
7141
7142 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
7145         conv.ovf.u.un.
7146
7147         * iltests.il: Add new tests.
7148
7149 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7150
7151         * mini.c: Removed Windows version macros.
7152
7153 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7154
7155         * generic-sharing.c: Put reflection types in the extensible part
7156         of the runtime generic context.
7157
7158         * mini.c: Generic sharing of the GetTypeHandle special case of the
7159         ldtoken instruction.
7160
7161 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
7162
7163         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
7164
7165         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
7166         
7167         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
7168         consistency with the other version on the linear IR branch.
7169
7170         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
7171
7172         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
7173
7174         * iltests.il.in: Add new tests.
7175
7176 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
7177
7178         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
7179
7180         * iltests.il.in: Add new tests.
7181
7182 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7183
7184         * mini.c: Two variables with the same name were declared in
7185         nesting contexts and one wasn't initialized.  Fixed.
7186
7187 2008-03-19  Mark Probst  <mark.probst@gmail.com>
7188
7189         * mini.c: Generic sharing of the initobj instruction.
7190
7191 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7192
7193         * mini.c: make the test to optimize ldtoken from typeof() more
7194         precise.
7195
7196 2008-03-18  Mark Probst  <mark.probst@gmail.com>
7197
7198         * mini.c: Generic sharing of the initobj instruction for reference
7199         types.
7200
7201 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7202
7203         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
7204         the mono_breakpoint_clean_code() code to perform bound checks.
7205
7206 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
7207
7208         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
7209         mono_arch_patch_callsite() to include the start of the managed method
7210         to be able to perform bound checks.
7211
7212 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7213
7214         * mini.c: Generic sharing for the isinst instruction.
7215
7216 2008-03-17  Mark Probst  <mark.probst@gmail.com>
7217
7218         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7219         inssel-long32-mips.brg: Added opcodes for doing indirect calls
7220         with the runtime generic context argument.
7221
7222         * mini.c: Share calls to several types of unsharable methods by
7223         putting the address of the method code in the runtime generic
7224         context and doing an indirect call.
7225
7226         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7227         to switches.
7228
7229 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7230
7231         * generic-sharing.c: Change due to a change in the runtime genric
7232         context API.
7233
7234 2008-03-15  Martin Baulig  <martin@ximian.com>
7235
7236         * tramp-x86.c
7237         (mono_arch_nullify_class_init_trampoline): Add call to
7238         mono_breakpoint_clean_code() to make things work when running
7239         inside the debugger.
7240
7241         * tramp-amd64.c
7242         (mono_arch_nullify_class_init_trampoline): Add call to
7243         mono_breakpoint_clean_code() to make things work when running
7244         inside the debugger.
7245
7246 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * inssel-long.brg (reg): Fix 64 bit build.
7249
7250 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7251
7252         * mini.c, mini.h: Share static generic code by passing it an
7253         implicit argument pointing to the runtime generic context.
7254
7255         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
7256         inssel-long32-mips.brg: New opcodes for calling shared static,
7257         which need to be passed the runtime generic context.
7258
7259         * mini-amd64.c, mini-x86.c: Save the runtime generic context
7260         argument on the stack in the prologue if needed.  New function for
7261         finding the runtime generic context argument from the registers
7262         saved by the trampoline.
7263
7264         * mini-amd64.h, mini-x86.h: Specify which register to use for the
7265         runtime generic context argument.
7266
7267         * tramp-amd64.c: Also restore the register used for the runtime
7268         generic context argument.
7269
7270         * mini-trampoline.c: Resolve shared static calls by consulting the
7271         runtime generic context via the new argument.
7272
7273         * generic-sharing.c: Add an argument to sharability-checking
7274         functions that specifies whether type variables should be treated
7275         as sharable type arguments.
7276
7277         * inssel-x86.brg: Removed a superfluous, buggy rule.
7278
7279         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
7280         to switches.
7281
7282 2008-03-14  Martin Baulig  <martin@ximian.com>
7283
7284         * debug-debugger.c (main_thread_handler): Call
7285         mono_runtime_run_main() without sending any notifications.
7286
7287         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
7288
7289 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7290
7291         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
7292
7293 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7294
7295         * tramp-x86.c: Fixed register restore offsets in the trampoline
7296         code for ECX and EDX.
7297
7298 2008-03-12  Geoff Norton  <gnorton@novell.com>
7299
7300         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
7301         different ucontext_t implementations.
7302         * exceptions-arm.c: Use the above defines to get exceptions working on 
7303         iPhone (based on a patch by Luke Howard lukeh@padl.com)
7304         * mini-arm.c: Implement iPhone icache support (based on a patch by
7305         Luke Howard lukeh@padl.com)
7306
7307 2008-03-12  Mark Probst  <mark.probst@gmail.com>
7308
7309         * mini.c: Enable generic sharing of calls to non-static
7310         non-interface non-generic non-value-type methods.
7311
7312         * mini-trampolines.c: Resolve calls from shared generic code.
7313
7314 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
7317
7318         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
7319
7320 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
7321
7322         * mini.c: some fixes for the AOT compiler.
7323
7324 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * cpu-amd64.md: Add clob:1 to some float opcodes.
7327
7328 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * mini.h: Added MiniVerifierMode enumeration.
7331
7332         * mini.c: Added mini_verifier_set_mode to control
7333         the usage of the new verifier.
7334
7335         * mini.c (mono_method): Integrated the new verifier.
7336
7337         * driver.c: Extended --security option with validil and
7338         verifiable options to activate the new verifier.
7339
7340 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7341
7342         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
7343         optimization to ctors taking 0 or 2 arguments too.
7344
7345         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
7346         a bit.
7347
7348         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
7349
7350         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
7351
7352 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
7355         non-aot case as well.
7356
7357         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
7358
7359         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
7360         changes.
7361
7362         * aot-compiler.c (encode_patch): Ditto.
7363
7364         * mini.h (G_MININT32): Fix the definition of this.
7365
7366 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
7369
7370         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
7371
7372 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7373
7374         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
7375         methods returning vtypes in registers.
7376         (mono_arch_allocate_vars): Ditto.
7377
7378         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
7379
7380         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
7381
7382         * generics.cs: Add a test from the linear IR branch.
7383
7384         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
7385
7386         * mini.c (inline_method): Cache failed inline attempts.
7387
7388 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7389
7390         * mini.c: For shared methods of generic classes put the location
7391         of "this" into the MonoGenericJitInfo.
7392
7393         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
7394         register out of a MonoContext by register number.  Add the generic
7395         sharing context as an argument to mono_arch_find_this_argument().
7396
7397         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
7398         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
7399         for new arch function.
7400
7401         * mini-exception.c: Handle open exception clauses in shared
7402         generic code.
7403
7404         * mini-trampolines.c: Supply additional argument to
7405         mono_arch_find_this_argument().
7406
7407 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * Makefile.am (regtests): Run the bench.exe tests last.
7410
7411 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
7412
7413         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
7414         a bit.
7415
7416 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
7417
7418         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
7419         with MS.
7420
7421         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
7422         
7423         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
7424
7425         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
7426         whose class has no cctor.
7427
7428         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
7429
7430 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
7433         unverified.
7434
7435 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
7436
7437         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
7438         to be in sync with the code on the linear IR branch.
7439
7440         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
7441
7442         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
7443
7444 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
7447
7448         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
7449
7450         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
7451
7452         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
7453
7454         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
7455         
7456         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
7457         body.
7458
7459 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
7460
7461         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
7462         OP_LOADR4_MEMBASE emission.
7463
7464         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
7465         (mono_spillvar_offset_float): Ditto.
7466
7467         * mini-mips.c (mono_arch_emit_prolog): Ditto.
7468
7469         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
7470         emission.
7471
7472         * basic-long.cs: Add regression tests for them.
7473
7474         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
7475         use.
7476         (mono_arch_allocate_vars): Fix representation of single-precision float
7477         argument.
7478         (mono_arch_output_basic_block): Ditto.
7479
7480         * inssel-mips.brg: Ditto, remove duplicate items.
7481
7482         * mini-mips.c (emit_load_volatile_arguments): New function to handle
7483         arguments of tail calls as on other platforms.
7484         (mono_arch_output_basic_block): Handle tail calls.
7485
7486         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
7487         register.
7488
7489         * objects.cs (test_5_pass_static_struct): Add test for it.
7490
7491         Contributed under MIT/X11 license.
7492
7493 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7494
7495         * Makefile.am: Use gmcs for compiling the regression tests.
7496
7497         * *.2.cs *.2.il: Rename to *.cs and *.il.
7498
7499 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * regalloc.h: Make the vassign array smaller.
7502
7503         * mini.c (mini_method_compile): Remove an unused field in cfg.
7504
7505         * mini-codegen.c: Add a bunch of micro optimizations.
7506
7507 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7508
7509         * regalloc.h: Remove some unused fields.
7510
7511 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
7514
7515         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
7516
7517 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7518
7519         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
7520
7521         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
7522         trampoline: Fetch an entry from the runtime generic context.  If
7523         it's NULL, jump to the actual trampoline to fill the runtime
7524         generic context.  Otherwise, return it.
7525
7526         * mini.c: Call the lazy fetch trampoline to get entries out of the
7527         runtime generic context.
7528
7529         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
7530         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
7531         tramp-sparc.c: Stubs for the lazy fetch trampoline.
7532
7533 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7534
7535         * mini.c: Fetch data out of the extensible part of the runtime
7536         generic context instead of calling a helper function.
7537
7538         * generic-sharing.c: Some functions moved into
7539         metadata/generic-sharing.c.  Helper function for fetching other
7540         types now checks and asserts against extensible rgctx (just for
7541         debugging purposes - the helper function isn't called anymore
7542         unless for debugging).
7543
7544 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
7547         for tail calls up to the point that the tests in iltests.exe run. Also add a
7548         dummy CKFINITE implementation.
7549         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
7550         needed for trampoline LMF frames.
7551
7552         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
7553         trampoline LMF frames.
7554
7555 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * mini.c (inline_method): clean any pending loader error when inlining fail.
7558         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
7559
7560 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
7561
7562         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
7563
7564         * aot-runtime.c (decode_patch_info): Ditto.
7565
7566         * mini.c (mono_resolve_patch_target): Ditto.
7567         
7568         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
7569         icall wrappers.
7570
7571         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
7572         
7573         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
7574         if it references an icall address.
7575
7576 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7577
7578         * cpu-s390x.md: Remove some more unused opcodes.
7579         
7580         * cpu-s390x.md: Remove some unused opcodes.
7581
7582         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
7583         mono_op_imm_to_op ().
7584
7585         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
7586         instead of a switch statement.
7587         
7588         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
7589         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
7590
7591         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
7592         
7593         * mini-codegen.c: Remove unused mono_regstate2_... functions.
7594
7595         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
7596         -1.
7597
7598 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * driver.c (mono_main): Improve error reporting when an assembly cannot be
7601         opened. Fixes #362607.
7602
7603         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
7604
7605         * iltests.il.in: Add a test for static methods in interfaces.
7606
7607 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * genmdesc.c (build_table): Fix a crash on older glib versions.
7610
7611         * cpu-sparc.md: Remove some unused opcodes.
7612         
7613         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
7614         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
7615
7616         * cpu-amd64.md: Remove some unused opcodes.
7617
7618         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
7619         like the other opcodes.
7620
7621 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
7622
7623         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
7624
7625         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
7626
7627         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
7628         variables 'cfg' instead of 'm' for consistency.
7629
7630         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
7631
7632         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
7633         argument holding the vtype return address, to avoid the ambigious use of
7634         cfg->ret for this purpose.
7635
7636         * mini.c (NEW_RETLOADA): Use vret_addr if set.
7637
7638         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
7639         
7640         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
7641         new mono_print_ins () function which only takes one argument.
7642
7643 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
7644
7645         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
7646         macro arguments.
7647
7648 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
7651
7652         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
7653
7654         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
7655         opcodes and other small changes.
7656
7657         * mini-ops.h: Add some new opcodes from the linear IR branch.
7658
7659         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
7660
7661         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
7662         opcodes, use the REG_MEMBASE opcodes instead.
7663         
7664         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
7665         opcodes, use the REG_MEMBASE opcodes instead.
7666         
7667         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
7668         linear IR branch.
7669
7670         * mini.c (mono_op_imm_to_op): New helper function.
7671
7672         * mini-ops.h: Add some opcodes from linear IR branch.
7673
7674 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
7675
7676         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
7677         <tsv@solvo.ru>.
7678
7679 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
7680
7681         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
7682         OP_ICONV_TO_R4/R8.
7683
7684         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
7685
7686 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * aot-compiler.c (emit_method_code): Add an assert.
7689
7690         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
7691         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
7692         methods.
7693
7694 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
7695
7696         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
7697         some load/store opcodes so they are consistent. 
7698         (mono_arch_emit_prolog): Simplify some code.
7699
7700         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
7701
7702         * objects.cs: Add tests for large argument offsets on ARM.
7703
7704         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
7705         stack offsets. Fixes #359651.
7706
7707         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
7708
7709         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
7710
7711         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
7712
7713         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
7714
7715         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
7716
7717         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
7718         rid of CEE_CONV_R_UN.
7719
7720         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
7721
7722 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
7725
7726         * mini.c (mono_normalize_opcodes): Add some more opcodes.
7727
7728         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
7729
7730         * cpu-amd64.md: Remove some unused opcodes.
7731
7732         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
7733
7734         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
7735
7736         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
7737         arch specific functions for its parts. Call the peephole pass after local
7738         regalloc so the prolog can compute a more accurate max_offset.
7739         
7740         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
7741         the corresponding OP_I/OP_L opcodes.
7742
7743         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
7744
7745         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
7746
7747 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7748
7749         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
7750         as they are handled in mini.c.
7751
7752         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
7753         
7754         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
7755         case since it is handled in mini.c.
7756
7757         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
7758
7759         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
7760
7761         * *.c: Use the new opcodes in the IR and back end code.
7762
7763         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
7764
7765         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
7766
7767 2008-02-06  Mark Probst  <mark.probst@gmail.com>
7768
7769         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
7770         an assert because it has a race condition.
7771
7772 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
7775
7776         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
7777
7778         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
7779
7780         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
7781         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
7782
7783 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * cpu-amd64.md (move): Correct the maximum size of move.
7786
7787 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7788
7789         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
7790         the generic class init trampoline to return quickly if the class
7791         is already inited.
7792
7793 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
7794
7795         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
7796         issues where an 32 bit callsite cannot be patched by a 64 bit address.
7797
7798 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
7801         branch.
7802
7803 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
7804
7805         * objects.cs: Add some soft-float tests.
7806
7807         * mini.c: Fix a couple more soft-float issues.
7808
7809         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
7810
7811         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
7812         avoid a REX prefix.
7813
7814 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
7817         exception happens while compiling a virtual method.
7818
7819 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
7822         
7823         * mini-sparc.c: Fix build.
7824
7825         * mini-sparc.c (get_call_info): Add support for generic sharing.
7826
7827         * mini-exceptions.c: Add a FIXME.
7828
7829 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
7832         altstack handling code.
7833
7834         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
7835         
7836         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
7837
7838         * mini-s390.c: Add support for generic sharing.
7839
7840         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7841         Fix CAS on s390.
7842         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7843
7844         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
7845
7846         * mini-s390x.c: Add support for generic sharing.
7847         
7848         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
7849         Fix CAS on ia64.
7850         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
7851
7852         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
7853         can be used since it takes a 16 bit signed immediate.
7854
7855         * inssel-s390x.brg: Fix OP_SETRET.
7856
7857         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
7858
7859         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
7860
7861         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
7862
7863         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
7864
7865         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
7866         in one place.
7867
7868         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
7869         stuff.
7870
7871         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
7872         of the unused mono_arch_patch_delegate_trampoline stuff.
7873
7874 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * basic-long.cs: Move the fp related tests to basic-float.cs.
7877
7878         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
7879
7880         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
7881
7882         * basic-calls.cs: Add a test for proper float argument passing.
7883
7884         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
7885         if the context corresponds to an exception received through a signal.
7886
7887         * exceptions.cs: Add a test for nullref handling at the start of a try
7888         clause.
7889
7890         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
7891
7892         * jit-icalls.c (mono_break): New JIT icall.
7893
7894         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
7895
7896         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
7897
7898 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * cpu-*.md: Get rid of unused opcodes.
7901
7902         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
7903
7904         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
7905         by all platforms.
7906
7907         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
7908         define.
7909
7910         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
7911         the arch independent trampoline code in mini-trampolines.c.
7912
7913         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
7914
7915         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
7916
7917         * mini-s390.h: Remove an unused define.
7918         
7919         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
7920         the arch independent trampoline code in mini-trampolines.c.
7921
7922         * mini-arm.c (mono_arch_emit_prolog): Fix build.
7923
7924 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
7925
7926         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
7927
7928         * mini-s390.c (mono_arch_emit_prolog): Fix build.
7929
7930         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
7931
7932         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
7933
7934         * cpu-amd64.md: Use smaller sizes for int opcodes.
7935
7936         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
7937
7938         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
7939         objects.cs.
7940
7941         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
7942         debugging.
7943
7944         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
7945         instead of though a pointer to save an indirection when accessing elements of
7946         the array.
7947
7948         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
7949         some typos.
7950         (NOT_IMPLEMENTED): New helper macro.
7951         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
7952         of a bb.
7953
7954         * *.c: Use the new helper macro.
7955
7956 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
7957
7958         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
7959
7960 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
7963         stack slots.
7964
7965 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
7968         profiling is enabled.
7969         
7970         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
7971         the end.
7972         (mono_arch_emit_prolog): Add more first bblock optimizations.
7973
7974         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
7975         in order if possible.
7976         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
7977         bblock, since the arguments are still in their original registers.
7978
7979         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
7980
7981 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7982
7983         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
7984         as well.
7985
7986         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
7987         offset 0.
7988
7989         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
7990
7991         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
7992         process async exceptions received while in unmanaged code.
7993
7994         * mini.c (mini_init): Install a callback with the runtime which will be called
7995         when a thread receives an async exception while in unmanaged code.
7996
7997         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
7998
7999         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
8000
8001 2008-01-16  Wade Berrier  <wberrier@novell.com>
8002
8003         * cpu-g4.md:
8004         * cpu-arm.md:
8005         * cpu-s390x.md:
8006         fix build
8007
8008 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
8011         compilation with sun cc.
8012
8013         * cpu-*.md: Fix the build.
8014
8015         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
8016
8017         * mini-amd64.h: Add some comments to the MonoLMF structure.
8018
8019         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
8020         
8021         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
8022         in the LMF structure if possible. This saves two instructions in the
8023         managed->native wrappers.
8024
8025         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
8026
8027 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8028
8029         * generic-sharing.c: New type argument lookup code which uses the
8030         runtime generic context template.
8031
8032 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8033
8034         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
8035
8036         * mini-arm.c (add_general): Fix arm eabi parameter passing.
8037         (mono_arch_output_basic_block): Fix localloc implementation.
8038
8039         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
8040
8041         * mini-ia64.c (peephole_pass): Fix ia64 build.
8042
8043         * mini-amd64.c (peephole_pass): Fix a warning.
8044         
8045         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
8046         at a constant offset from sp/fp.
8047
8048         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
8049         instead of obtaining it from *lmf in the managed method case.
8050
8051 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8052
8053         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
8054
8055 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
8056
8057         * mini.h (MonoInstList): New type.
8058         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
8059         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
8060         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
8061         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
8062         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
8063         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
8064         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
8065         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
8066         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
8067         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
8068         MONO_INST_LIST_FOR_EACH_ENTRY,
8069         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
8070         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
8071         mono_inst_list_first, mono_inst_list_last,
8072         mono_inst_list_next, mono_inst_list_prev): New instruction
8073         list handling interfaces.
8074         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
8075         list head 'ins_list'.
8076         (MonoInst): Replace next pointer with list head 'node'.
8077         (MonoCallInst): Make 'out_args' a MonoInstList.
8078         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
8079         (MonoCompile): Delete reverse_inst_list and
8080         reverse_inst_list_len.
8081         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
8082         mono_arch_lowering_pass, mono_arch_local_regalloc,
8083         mono_arch_output_basic_block, mono_arch_emit_prolog):
8084         Convert to new instruction lists.
8085         (insert_after_ins): Delete.
8086         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
8087         instruction lists.
8088         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
8089         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
8090         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
8091         mono_emulate_opcode, mono_emit_load_got_addr,
8092         inline_method, mono_method_to_ir, mono_print_bb_code,
8093         print_dfn, decompose_pass, nullify_basic_block,
8094         replace_out_block_in_code, remove_block_if_useless,
8095         merge_basic_blocks, move_basic_block_to_end,
8096         try_unsigned_compare, optimize_branches, mono_print_code,
8097         mini_select_instructions, remove_critical_edges): Likewise.
8098         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
8099         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
8100         mono_arch_output_basic_block, mono_arch_emit_prolog):
8101         Likewise.
8102         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
8103         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8104         mono_arch_output_basic_block): Likewise.
8105         (inst_list_prepend, insert_after_ins): Delete.
8106         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
8107         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
8108         instruction lists.
8109         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
8110         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
8111         mono_arch_emit_prolog): Likewise.
8112         * cfold.c (mono_constant_fold): Likewise.
8113         * liveness.c (visit_bb, mono_analyze_liveness,
8114         optimize_initlocals): Likewise.
8115         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
8116         * graph.c (mono_draw_code_cfg): Likewise.
8117         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
8118         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
8119         mono_ssa_cprop): Likewise.
8120         * abcremoval (get_relations_from_previous_bb, process_block):
8121         Likewise.
8122         * local-propagation (mono_cprop_invalidate_values,
8123         mono_local_cprop_bb): Likewise.
8124         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
8125         peephole_pass, mono_arch_output_basic_block,
8126         mono_arch_emit_prolog): Likewise.
8127         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
8128         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8129         mono_arch_emit_prolog): Likewise.
8130         (insert_after_ins): Delete.
8131         * aliasing.c (print_code_with_aliasing_information,
8132         mono_build_aliasing_information, mono_aliasing_deadce):
8133         Convert to new instruction lists.
8134         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
8135         peephole_pass, NEW_INS, mono_arch_lowering_pass,
8136         mono_arch_local_regalloc, mono_arch_output_basic_block):
8137         Likewise.
8138         (insert_after_ins): Delete.
8139         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
8140         peephole_pass, mono_arch_output_basic_block): Convert to
8141         new instruction lists.
8142         * mini-codegen (InstList, inst_list_prepend,
8143         insert_after_ins): Delete.
8144         (insert_before_ins, get_register_force_spilling,
8145         get_register_spilling, free_up_ireg, free_up_reg,
8146         create_copy_ins, create_spilled_store, alloc_int_reg,
8147         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
8148         to new instruction lists.
8149         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
8150         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
8151         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
8152         (insert_after_ins): Delete.
8153         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
8154         mono_arch_local_regalloc, mono_arch_output_basic_block,
8155         mono_arch_call_opcode): Convert to new instruction lists.
8156         (insert_after_ins): Delete.
8157         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
8158         peephole_pass, mono_arch_output_basic_block,
8159         mono_arch_emit_prolog): Convert to new instruction lists.
8160
8161 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8162
8163         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
8164
8165         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
8166         Fixes #353182.
8167
8168         * Makefile.am (version.h): Make this work with non-bash shells.
8169
8170 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
8173
8174 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8175
8176         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
8177         the InitializeArray optimization.
8178
8179 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8180
8181         * mini.c driver.c: Don't include os/gc_wrapper.h.
8182
8183 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * mini.c (print_jit_stats): Print GC statistics if available.
8186
8187 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
8190
8191 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
8192
8193         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
8194
8195 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
8198         
8199         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8200
8201         * driver.c (mono_main): Ditto.
8202
8203 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8204
8205         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
8206
8207         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
8208         in the vtable can't be encoded.
8209         (compile_method): Ditto.
8210
8211 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
8214         defined.
8215
8216         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
8217         lmf->rbp.
8218
8219         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
8220         the top LMF entry belongs to the current method.
8221
8222         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
8223
8224 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
8227         
8228         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
8229
8230         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
8231
8232         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
8233
8234         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
8235
8236         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
8237         implementation.
8238
8239         * basic-float.cs: Add an ulong->double cast test.
8240
8241 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
8242
8243         * mini.c (mono_method_to_ir): Fix a warning.
8244
8245 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * mini-ops.h: Add OP_SWITCH.
8248
8249         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
8250         CEE_SWITCH in back-end code, use OP_SWITCH instead.
8251
8252 2007-12-11  Geoff Norton  <gnorton@novell.com>
8253
8254         * mini-s390x.c: Minor change to the MAX() define to allow
8255         it to compile with other gcc versions.
8256
8257 2007-12-11  Geoff Norton  <gnorton@novell.com>
8258
8259         * cpu-s390x.md:
8260         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
8261
8262 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         exceptions-arm.c (mono_arch_get_restore_context): Restore
8265         the frame pointer.
8266
8267         exceptions-arm.c (throw_exception): Save the frame pointer.
8268         This is a partial fix for #323747. Only the client side is
8269         fixed.
8270
8271 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8272
8273         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
8274         was using an unrelated variable to log the class which
8275         needed the cctor to be called. This was crashing on arm.
8276
8277 2007-12-09  Robert Jordan  <robertj@gmx.net>
8278
8279         * mini-x86.c (mono_arch_emit_epilog):
8280         Consider all kinds of 64-bit types. Fixes #323114.
8281
8282 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
8283
8284         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
8285
8286 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * mini-amd64.c (peephole_pass): Add a missing instruction check.
8289
8290 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8291
8292         * mini.c: run type ctor before allocating an object, not only
8293         when running it's constructor method (fixes at least part of bug #342507).
8294
8295 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8296         
8297         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
8298         
8299         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
8300         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
8301         function.
8302
8303         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
8304         mono_generic_class_init_trampoline () the same as it is done with the other
8305         trampolines.
8306
8307         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
8308         aot-runtime.c aot-compiler.c: Implement AOT support.    
8309
8310 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8311
8312         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
8313         build for archs which don't have the vtable trampoline defined
8314         yet.
8315
8316 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
8317
8318         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
8319
8320         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
8321
8322         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
8323
8324         * tramp-<ARCH>.c: Use the new helper function.
8325
8326 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8327
8328         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
8329         trampoline call, which takes a vtable argument.
8330
8331         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
8332         OP_TRAMPCALL_VTABLEs like other calls.
8333
8334         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
8335         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
8336         call.  Implemented a support function which fetches the vtable
8337         from a register set.
8338
8339         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
8340         Implemented a generic class init trampoline, using the
8341         OP_TRAMPCALL_VTABLE opcode.
8342
8343         * mini.c: Implemented static field access when sharing generic
8344         code.  This implies initing the class using the new
8345         OP_TRAMPCALL_VTABLE call.
8346
8347 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8348
8349         * mini.c: Don't compile methods with sharing enabled if their
8350         classes are disabled for sharing.
8351
8352 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8353
8354         * inssel.brg: Add a missing sign extension to the GETCHR and array access
8355         opcodes. Fixes #346563.
8356
8357         * objects.cs: Add a new test.
8358
8359         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
8360
8361         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
8362         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
8363
8364 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8365
8366         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
8367
8368 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8369
8370         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
8371         code stream.
8372
8373 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
8374
8375         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
8376
8377         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
8378         optimization in the AOT case.
8379         
8380 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
8383         
8384         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
8385
8386         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
8387
8388         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
8389
8390         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
8391         is created by the inlined delegate ctor.
8392
8393         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
8394
8395         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
8396
8397 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
8398
8399         * cpu-x86.md: Fix the length of ckfinite.
8400
8401 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
8402
8403         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
8404         
8405         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
8406         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
8407
8408         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
8409
8410         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
8411         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
8412
8413 2007-11-28  Martin Baulig  <martin@ximian.com>
8414
8415         * mini-x86.c
8416         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
8417         after creating the trampoline.
8418
8419 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
8420
8421         * aot-runtime.c (load_aot_module): Check runtime version if needed.
8422
8423         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
8424         the same version.
8425
8426         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
8427         instead of the calling method to help AOT.
8428
8429         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
8430
8431 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
8434         is defined.
8435
8436 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
8439         
8440         * aot-compiler.c (compile_method): Correct check for generic method definitions.
8441         (encode_method_ref): No need to handle generic method definitions specially.
8442
8443         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
8444
8445         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
8446         decode_klass_info.
8447
8448         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
8449         encode_klass_info.
8450         (compile_method): Enable generic sharing.
8451
8452 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
8453
8454         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
8455         (mini_method_compile): Add preliminary support for AOTing shared generic code.
8456
8457         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
8458         generic code.
8459
8460         * mini-trampolines.c: Fix a warning.
8461
8462         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
8463         NEW_PCONST.
8464         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
8465         (generic_class_is_reference_type): Remove unused function.
8466
8467         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
8468         in the generic vtable trampoline case.
8469
8470         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
8471         
8472         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
8473         return an AOT method based on a vtable slot.
8474
8475         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
8476
8477         * mini.c (mini_get_vtable_trampoline): Export this.
8478
8479 2007-11-22  Martin Baulig  <martin@ximian.com>
8480
8481         * debug-debugger.h
8482         (MonoDebuggerInfo): Move `debugger_version' up.
8483
8484 2007-11-22  Martin Baulig  <martin@ximian.com>
8485
8486         * mini-amd64.c
8487         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
8488
8489         * mini-trampolines.c
8490         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
8491         after compiling the method.
8492
8493 2007-11-20  Martin Baulig  <martin@ximian.com>
8494
8495         * debug-mini.c
8496         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
8497         (mono_debugger_remove_breakpoint): Likewise.
8498         (mono_debugger_check_breakpoints): Likewise.
8499
8500         * debug-debugger.c: Implement the new breakpoint interface here.
8501
8502 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
8503
8504         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
8505         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
8506
8507         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
8508
8509 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
8512
8513         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
8514         mini.c.
8515
8516         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
8517         mini.c.
8518
8519         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
8520         returning a vtype in a register.
8521
8522         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
8523         here from the arch specific code.
8524
8525         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
8526         mini.c.
8527
8528         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
8529         (mono_arch_emit_prolog): Increment maximum prolog size.
8530
8531         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
8532         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
8533
8534         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
8535         MonoGenericSharingContext.
8536
8537         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
8538         MonoGenericSharingContext. Allocate memory from the cfg mempool.
8539
8540 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8541
8542         * mini.c, mini.h, generic-sharing.c: Functions for producing code
8543         which extract fields out of the runtime generic context.  Full
8544         sharing of the NEWARR opcode.
8545
8546 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8547
8548         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
8549         --enable-minimal=ssa.
8550
8551 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8552
8553         * mini-trampolines.c (mono_delegate_trampoline): Update after 
8554         mono_marshal_get_delegate_invoke () signature change.
8555
8556 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8557
8558         * mini.c: Removed the shared context in favor of the generic
8559         sharing context.  Allocate the MonoJitInfo structure with room for
8560         the generic sharing context if it's needed.
8561
8562         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
8563         domain-internals.h now.
8564
8565         * mini-x86.c: Pass the generic sharing context to get_call_info ().
8566
8567         * generic-sharing.c: Several changes for working without a shared
8568         context and instead operating on open types instead.
8569
8570 2007-11-12  David S. Miller  <davem@davemloft.net>
8571
8572        * inssel-sparc.brg: Fix double instruction emit.
8573
8574 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
8577         Get/Set/Address methods.
8578         
8579         * mini.c debug-debugger.c mini-trampolines.c: Update after 
8580         mono_marshal_get_delegate_invoke signature change.
8581
8582 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8583
8584         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
8585         This can happens with dynamic methods. Fixes the other bug in #322722.
8586
8587 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * tramp-arm.c (mono_arch_patch_callsite): Support patching
8590         BX call sequence.
8591
8592         * mini-arm.c (arm_patch): Implement patching of BX call
8593         sequence. Fixes one of the bugs in #322722.
8594
8595 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
8596
8597        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
8598        under Linux.  We only need to flush every 32-byte cache line.    
8599
8600 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8601
8602         * mini.c:
8603         move_basic_block_to_end: Add branches when needed, eventually creating
8604         a new BB.
8605         optimize_branches: added a parameter that tells if it's ok to create
8606         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
8607         and avoid calling move_basic_block_to_end when it's not ok.
8608         Fixes bug 318677.
8609
8610 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8611
8612         * mini.c: Abort inlining call to InitializeArray if something
8613         looks wrong.  Let the icall handle it, which now has proper safety
8614         checks.
8615
8616 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8617
8618         * mini.c (mono_spill_call): add support for soft-float.
8619
8620         * mini.c (mono_method_to_ir): add support for soft-float
8621         to inlined functions that return float.
8622
8623         * mini.c (mono_method_to_ir): add support for soft-float
8624         to cee_stsfld opcode on float fields.
8625
8626 2007-11-05  Geoff Norton  <gnorton@novell.com>
8627
8628         * mini-x86.h: Fix the structure access for X86 Leopard.
8629
8630
8631 2007-11-05  Martin Baulig  <martin@ximian.com>
8632
8633         * mini-trampolines.c
8634         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
8635         after compiling the method to notify the debugger.
8636
8637 2007-11-05  Martin Baulig  <martin@ximian.com>
8638
8639         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
8640
8641 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
8644         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
8645
8646 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
8647
8648         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
8649         native-to-managed wrappers.
8650         
8651 2007-11-01  Geoff Norton  <gnorton@novell.com>
8652
8653         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
8654         members.
8655
8656 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8657
8658         * mini.c, mini-x86.c: when getting back from unmanaged code
8659         to managed via a marshaled delegate we also need to set the
8660         right domain.
8661
8662 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8663
8664         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
8665         for amd64.
8666
8667 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8668
8669         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
8670         let the debugger or other external agents to tell the JIT when
8671         a sw breakpoint has been inserted in the code that the JIT needs
8672         to be able to inspect.
8673
8674 2007-10-31  Martin Baulig  <martin@ximian.com>
8675
8676         * debug-debugger.h
8677         (MonoDebuggerInfo): Remove `runtime_class_init'.
8678
8679 2007-10-30  Martin Baulig  <martin@ximian.com>
8680
8681         * debug-mini.h
8682         (mono_debugger_thread_created): Added `MonoThread *' argument.
8683         (mono_debugger_extended_notification): New public method.
8684         (mono_debugger_trampoline_compiled): New public method.
8685
8686         * debug-mini.c
8687         (MonoDebuggerThreadInfo): Added `thread' and
8688         `extended_notifications' fields.
8689
8690         * debug-debugger.c
8691         (debugger_executable_code_buffer): New static variable.
8692
8693         * debug-debugger.h
8694         (MonoDebuggerInfo): Added `executable_code_buffer',
8695         `executable_code_buffer_size', `breakpoint_info_area',
8696         `breakpoint_table' and `breakpoint_table_size'.
8697
8698 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
8699
8700         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
8701         that IP  either is an unused value or the vtable pointer. IMT 
8702         calls use vtable + offset now. Reduced by almost half the size
8703         of IMT entries.
8704
8705 2007-10-26  Jonathan Chambers <joncham@gmail.com>
8706
8707         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
8708         defines to access param registers. Replace long usage with
8709         gsize as sizeof(long) != sizeof(void*) on Win64.
8710
8711         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
8712         on Win64. Fix intrinsic, use _AddressOfReturnAddress
8713         instead of non-existant _GetAddressOfReturnAddress.
8714
8715         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
8716         param registers. Save/restore %rdi and %rsi in MonoLMF.
8717
8718         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
8719         param registers. Modify (throw_exception) signature to take 
8720         %rdi and %rsi on Win64. 
8721
8722         Code is contributed under MIT/X11 license.
8723
8724 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8725
8726         * helpers.c: unlink debugging output files.
8727
8728 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8729
8730         * mini.c: Move mono_create_ftnptr () to object.c.
8731
8732 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8733
8734         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
8735         optional. This function can now be used to disassemble code generated
8736         outside the JIT such as trampolines and IMT thunks.
8737
8738         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
8739
8740         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
8741         vtable pointer from a ldr instruction.
8742
8743         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
8744         new IMT call sequence.
8745
8746         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
8747         call sequence for interface invocations.
8748
8749         * mini-arm.c (mono_arch_emit_imt_argument): added, required
8750         for imt support. This function is empty since IMT on ARM requires no
8751         special handling on the IR side.
8752
8753         * mini-arm.c (mono_arch_find_imt_method): added, required for
8754         imt support.
8755
8756         * mini-arm.c (mono_arch_find_this_argument): added, required
8757         for imt support.
8758
8759         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
8760         a ldr instruction to load a value stored in the code stream.
8761
8762         * mini-arm.c (mono_arch_build_imt_thunk):added, required
8763         for imt support.
8764
8765
8766 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * mini.c (mini_init): Install the jump trampoline callback.
8769
8770 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8771
8772         * mini-trampolines.c: handle synchronized methods with the common
8773         vtable trampoline (bug #335601).
8774
8775 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
8776
8777         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
8778
8779         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
8780         64 bit platforms.
8781
8782         * mini-ia64.h mini-ia64.c: Add support for IMT.
8783
8784         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
8785         prolog. Fixes #331958.
8786
8787 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
8790
8791 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8792
8793         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
8794         trampoline.
8795
8796 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8797
8798         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
8799         trampoline.
8800
8801 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
8802
8803         * mini-x86.c, mini-x86.h: x86 support for the common vtable
8804         trampoline.
8805
8806 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8807
8808         * mini-trampolines.c: changed the magic rampoline to understand
8809         the common vtable trampoline method: the method to invoke is
8810         determined by the vtable displacement of the call.
8811
8812 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
8813
8814         * mini.c, mini.h: register the common vtable trampoline if the
8815         architecture supports it.
8816
8817 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
8818
8819         * cpu-amd64.md: use the correct max length for tls_get.
8820
8821 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
8824         CEE_STELEM_ANY. Fixes #333696.
8825
8826 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
8827
8828         * exceptions-x86.c: provide more graceful handling of the case where
8829         we followed a bogus function pointer from managed code (bug #332866).
8830
8831 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8832
8833         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
8834         replaces the generic_shared flag and will carry more information
8835         in the future.
8836
8837         * generic-sharing.c: Added mini_type_stack_size() which allows
8838         allows open types if given a generic sharing context.
8839         mini_get_basic_type_from_generic() takes a
8840         MonoGenericSharingContext* instead of a MonoCompile* now.
8841
8842         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
8843         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
8844         mini-sparc.c, mini-x86.c: Trivial changes required by the two
8845         changes above.  Just passing arguments through to the right
8846         places.
8847
8848 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8849
8850         * mini-arm.c: unify the call emission to emit_code_seq().
8851
8852 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
8853
8854         * tramp-arm.c: reduced the trampoline size.
8855
8856 2007-10-10  Mark Probst  <mark.probst@gmail.com>
8857
8858         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
8859         variable handling out of arch-specific code.
8860
8861 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
8862
8863         * mini-arm.c: implemented fast delegate dispatch.
8864
8865 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
8868         that fp elimination is turned off if the space required by locals is too
8869         big. Fixes #331958.
8870
8871 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8872
8873         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
8874         ARM to the new style trampoline.
8875
8876 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
8877
8878         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
8879
8880         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
8881
8882 2007-10-09  Martin Baulig  <martin@ximian.com>
8883
8884         * debug-debugger.h
8885         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
8886         `field_info_offset_offset'.     
8887
8888 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8889
8890         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
8891         removed more internal usage of the r11 register and made it available
8892         to the register allocator.
8893
8894 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8895
8896         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
8897         when sharing generics and treat type variables as references.
8898
8899 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8900
8901         * mini-ppc.c: started removing the internal uses of register r11
8902         to eventually allow the register allocator to manage it as an
8903         additional available register.
8904
8905 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8906
8907         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
8908
8909 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8910
8911         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
8912         specific trampolines as they are not performance critical as a jump
8913         target (maybe align as before only for AOT code?). This saves about
8914         200 KB of native code on x86 for monodevelop startup.
8915
8916 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8917
8918         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
8919         monodevelop startup.
8920
8921 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
8922
8923         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
8924
8925         * mini-sparc.h mini-sparc.c: Implement IMT support.
8926
8927         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
8928         its smaller and doesn't clobber sparc_g1.
8929
8930         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
8931
8932 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8933
8934         * mini-ppc.c: optimized the size of the IMT thunks a bit.
8935
8936 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
8937
8938         * mini-ppc.c: implemented fast delegate invocation.
8939
8940 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8941
8942         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
8943
8944 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8945
8946         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
8947         code to the new style trampoline in preparation for IMT support.
8948
8949 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8950
8951         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
8952         systems already. This also reduces the specific trampiline sizes and
8953         prepares for the use of r12 as the IMT identifier register.
8954
8955 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8956
8957         * mini-mips.h: endianess fix (simplified from a patch by
8958         Thomas Kunze <thommy@tabao.de>, bug #323737).
8959
8960 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8961
8962         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
8963         to access ucontext fields and enable netbsd support
8964         (partially from Magnus Henoch <mange@freemail.hu>).
8965
8966 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8967
8968         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
8969         use the preprocessor from the CPP env var if it is set.
8970
8971 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8972
8973         * mini-trampolines.c: fixed an assertion and moved it earlier in the
8974         code, before interface_offset gets used.
8975
8976 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
8979         mono_class_setup_vtable () before accessing klass->vtable.
8980
8981 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
8984         hackish.
8985
8986 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
8987
8988         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
8989         IMT slots (this saves hundreds of KB of memory in programs like
8990         IronPython and Monodevelop).
8991
8992 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8993
8994         * mini.c: print the delegate counter.
8995
8996 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
8997
8998         * mini-x86.c: make it easier to enable the debugging code for IMT
8999         slots.
9000
9001 2007-09-28  Martin Baulig  <martin@ximian.com>
9002
9003         * debug-debugger.h
9004         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
9005         `mono_method_klass_offset' and `mono_method_token_offset'.
9006
9007 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9008
9009         * mini.c: First generics sharing implementation.  Can only share
9010         in very simple cases.  If sharing doesn't work it falls back to
9011         dedicated compilation.
9012
9013         * mini.h: Flag in MonoCompile to specify whether generic
9014         compilation is shared.  Flags enum for marking which generic inst
9015         of a context is used.  Prototypes for helper functions.
9016
9017         * generic-sharing.c: Helper functions for generic method sharing.
9018
9019         * optflags-def.h: Optimization flag (gshared) for enabling generic
9020         method sharing added.
9021
9022         * Makefile.am: generic-sharing.c added.
9023
9024 2007-09-19 Daniel Nauck <dna@mono-project.de>
9025
9026         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
9027
9028 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
9029         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
9030         fixes bug 325507.
9031
9032 2007-09-19  Martin Baulig  <martin@ximian.com>
9033
9034         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
9035         mono_debug_cleanup() is now part of mono_cleanup().
9036
9037 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9038
9039         * driver.c (mono_main): Fix a warning.
9040
9041 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9042
9043         * aot-compiler.c: Optimize various parts when processing large assemblies.
9044         Fixes ##325568.
9045
9046         * mini.c (mono_patch_info_hash): Improve hash function.
9047
9048 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9049
9050         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
9051         
9052         Code is contributed under MIT/X11 license.
9053
9054 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * mini.c (mini_init): Fix a leak.
9057
9058         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
9059
9060 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9061
9062         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
9063
9064 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
9067
9068 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
9071         variance tests.
9072
9073         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
9074
9075         * mini.c (handle_alloc): Enable managed allocators in AOT code.
9076
9077         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
9078
9079         * aot-runtime.c (decode_patch_info): Ditto.
9080
9081 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9082
9083         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
9084         static case. Cache delegates in architecture specific code, 
9085         based on number of parameters.
9086         
9087         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
9088         in architecture specific code, based on number of parameters.
9089         
9090         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
9091         caching happen in architecture specific code now.
9092         
9093         Code is contributed under MIT/X11 license.
9094
9095 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9096
9097         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
9098         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
9099         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
9100
9101         Code is contributed under MIT/X11 license.
9102
9103 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9104         * mini.c: (mono_thread_abort) Fixed bug #82416.
9105
9106 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9107
9108         * mini.: hook the new managed GC allocation feature into the JIT.
9109
9110 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9111
9112         * mini.c: implementation for the new runtime tls opcode.
9113
9114 2007-09-11  Martin Baulig  <martin@ximian.com>
9115
9116         * debug-debugger.h
9117         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
9118         `mono_method_inflated_offset'.
9119
9120 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * driver.c mini.h mini.c: Add a new devel command line option for injecting
9123         async exceptions into a method.
9124
9125         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
9126         purpose of testing whenever the unwinder works at every instruction.
9127
9128 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9129
9130         * mini.c: check accessibility of method used in ldftn (fixes
9131         bug #82635).
9132
9133 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
9136
9137         * inssel.brg: Fix a warning.
9138
9139 2007-09-03  Martin Baulig  <martin@ximian.com>
9140
9141         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
9142         now takes the `main_method' as argument.
9143
9144 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
9145
9146         * cpu-sparc.md (endfilter): Add missing src1:i argument.
9147
9148 2007-08-30  Jonathan Chambers <joncham@gmail.com>
9149
9150         * driver.c: include the cil-coff.h header on Windows.
9151         
9152         Code is contributed under MIT/X11 license.
9153
9154 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9155
9156         * mini.c, driver.c: don't include the cil-coff.h header.
9157
9158 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9159
9160         * mini.c: flag places that needs fixes fo soft-float support.
9161
9162 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
9163
9164         * mini.h, inssel-float.brg: fix soft-float constant loads on big
9165         endian systems (partially from Dean Jenkins, bug #81924).
9166
9167 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9168
9169         * mini.c (check_linkdemand): Remove embedded reference object in
9170         call to LinkDemandSecurityException.
9171         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
9172         with an IntPtr instead of a reference object.
9173
9174 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9175
9176         * mini.c (handle_initobj): Handle alignment properly.
9177
9178         * inssel.brg (mini_emit_memset): Ditto. 
9179
9180         * inssel.brg (mini_emit_memcpy): Ditto. 
9181
9182         * inssel-sparc.brg: Ditto.              
9183
9184         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
9185
9186 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
9187
9188         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
9189         exceptions raised in unmanaged code. Fixes part of #82594.
9190
9191 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9192
9193         * mini.c (mono_method_to_ir), declsec.c
9194         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
9195
9196 2007-08-22  Martin Baulig  <martin@ximian.com>
9197
9198         * debug-mini.h
9199         (MonoDebuggerThreadInfo): New typedef.
9200         (mono_debugger_thread_table): New global variable.
9201         (mono_debugger_thread_created): New public function.
9202         (mono_debugger_thread_cleanup): New public function.
9203
9204         * debug-debugger.h
9205         (MonoDebuggerInfo):
9206         - removed `get_current_thread' and `lookup_assembly'.
9207         - removed `data_table'.
9208         - added `thread_table'.
9209
9210         * mini.c
9211         (mono_thread_start_cb): Call mono_debugger_thread_created().
9212         (mono_thread_attach_cb): Likewise.
9213         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
9214         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
9215         initial domain.
9216
9217         * driver.c (mono_main): Move mono_debug_init() up, before calling
9218         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
9219
9220 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9221
9222         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
9223         together when passing several arguments of type double (gives a small
9224         speedup and saves a few bytes of generated code).
9225
9226 2007-08-20  Jb Evain  <jbevain@novell.com>
9227
9228         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
9229
9230 2007-08-20  Jb Evain  <jbevain@novell.com>
9231
9232         * mini.c (mono_method_to_ir): throw MethodAccessException
9233         and FieldAccessException instead of InvalidProgramException.
9234
9235 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9236
9237         * mini.c: CoreCLR security checks.
9238
9239         * mini.h: Removed MonoSecurityMode (moved to
9240         metadata/security-manager.h) and mono_security_mode global var
9241         (replaced by set/get functions in security-manager.h).
9242
9243         * driver.c: Added "core-clr-test" security mode for testing.  Used
9244         set-function for setting security mode.
9245
9246 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9247
9248         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
9249         the new jit_info_table.
9250
9251         * driver.c: Test code for the new jit_info_table (enabled by the
9252         define MONO_JIT_INFO_TABLE_TEST).
9253
9254 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
9257         detection of call <REG> instruction sequence. Fixes build on freebsd.
9258
9259 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * mini-exceptions.c: Fix a warning.
9262
9263 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9264
9265         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
9266         stack overflow handling code on amd64 too.
9267
9268         * mini-exceptions.c (mono_setup_altstack): Make this use 
9269         mono_thread_get_stack_bounds ().
9270
9271         * mini-x86.h: Disable sigaltstack on solaris x86.
9272
9273 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
9274
9275         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
9276
9277 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
9278
9279         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
9280
9281 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
9284
9285         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
9286
9287 2007-08-03  Neale Ferguson <neale@sinenomine.net>
9288
9289         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
9290         due to alignment.
9291
9292 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9293
9294         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
9295         to be emitted (bug #82281).
9296
9297 2007-08-01  Martin Baulig  <martin@ximian.com>
9298
9299         Merged the `debugger-dublin' branch.
9300
9301         * debug-debugger.h (MonoDebuggerInfo):
9302         Removed the `old_*' compatibility entries.
9303         Added `debugger_version' and `data_table'.
9304         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
9305         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
9306
9307         * debug-mini.c
9308         (MiniDebugMethodBreakpointInfo): Add `address_list'.
9309         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
9310         instead of a `gconstpointer'.
9311         (mono_debugger_insert_method_breakpoint): Return a
9312         `MonoDebugMethodAddressList *'.
9313
9314 2007-06-28  Martin Baulig  <martin@ximian.com>
9315
9316         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9317
9318 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9319
9320         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
9321         __builtin_frame_address () since it is broken on older gcc versions.
9322
9323 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9324
9325         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
9326         on the stack overflow handling and made the managed stack overflows
9327         catchable in most cases using soft guard pages.
9328         * exceptions-x86.c: added code to restore the protection in the soft
9329         guard pages at the end of exception handling.
9330
9331 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
9334
9335 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9336
9337         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
9338         exception handling.
9339
9340 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
9341
9342         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
9343         signal handling support until it has been ported to the new mechanism.
9344         * mini.c: fixed stack overflow detection and use the new
9345         architecture code  to handle signals on the altstack.
9346
9347 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9348
9349         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
9350         stack overflows on the alt stack.
9351
9352 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9353
9354         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
9355         stack overflows on the alt stack.
9356
9357 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
9358
9359         * exceptions-ppc.c: cleanup preparing for altstack support.
9360
9361 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9362
9363         * exceptions-arm.c: cleanup preparing for altstack support.
9364
9365 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9366
9367         * mini.c (print_jit_stats): Output hazard pointer stats.
9368
9369 2007-07-26  Mark Probst  <mark.probst@gmail.com>
9370
9371         * driver.c, mini.c: Replaced security mode flags with a single
9372         enum variable.
9373
9374 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9375
9376         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
9377
9378 2007-07-25  Mark Probst  <mark.probst@gmail.com>
9379
9380         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
9381         (which doesn't do anything yet) for activating Core CLR
9382         (Silverlight) security.
9383
9384 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9385
9386         * mini-codegen.c: work around a possible gcc bug on arm.
9387
9388 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9389
9390         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
9391         message for platforms that don't support AOT compilation.
9392
9393 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
9394
9395         * mini.h, mini.c, driver.c: temporary smcs hack.
9396
9397 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
9398
9399         * mini-arm.h, mini-arm.c: arm EABI fixes.
9400
9401 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9402
9403         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
9404         case.
9405
9406         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
9407         trampolines taking a method argument.
9408
9409         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
9410
9411         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
9412         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
9413
9414         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
9415         JIT compilation throws an exception. Fixes #82050.
9416
9417 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9418
9419         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
9420         with the MONO_EXCEPTION_ defines.
9421
9422 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
9425         #82117.
9426         
9427         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
9428         the cause of an assertion.
9429
9430 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
9431
9432         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
9433         removed.
9434
9435 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
9438         assert. Should fix #82103.
9439
9440 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
9443         here too. Fixes #82095.
9444
9445         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
9446         addresses.
9447
9448         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
9449
9450         * mini-amd64.h: Enable IMT for amd64.
9451         
9452         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
9453
9454 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
9457
9458 2007-07-12  Mark Probst  <mark.probst@gmail.com>
9459
9460         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
9461         as soon as check_linkdemand sets an exception_type.
9462
9463 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
9464
9465         * mini-x86.c: fixed offsets for IMT call sequence.
9466         * mini-x86.h: enable IMT again.
9467
9468 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9469
9470         * trace.c (mono_trace_enter_method): Decode MonoType too.
9471
9472         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
9473
9474         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
9475
9476         * mini-amd64.c: Add preliminary IMT implementation.
9477         
9478 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
9479
9480         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
9481         understand the new IMT-base interface invocation (thanks to
9482         Daniel Nauck for the report and the remote debugging session).
9483
9484 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9485
9486         * mini-x86.c: size and speed optimizations for the IMT bsearch.
9487
9488 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9489
9490         * Makefile.am (aotcheck): Make this actually use the AOTed code.
9491
9492 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
9493
9494         * mini-trampolines.c: implement AOT IMT support.
9495         * mini-x86.h: enable IMT support for wider testing.
9496
9497 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9498
9499         * inssel.brg (emit_imt_argument): Add aot support here.
9500
9501         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
9502
9503 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9504
9505         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
9506         of the IMT implementation, partially from massi, with my
9507         implementation of the bsearch sequence. Disabled by default until
9508         the AOT code is implemented.
9509
9510 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9511
9512         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
9513
9514         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
9515
9516 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9517
9518         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
9519         arch-independent IMT JIT code from Massimiliano
9520         Mantione (massi@ximian.com) with small cleanups from me.
9521
9522 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
9523
9524         * Makefile.am: fix svn invocation to get the svn revision to be
9525         independent of the local language (build fix).
9526
9527 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9528
9529         * mini.c (inline_method): Reset cfg->exception_type if the
9530         inlining is aborted.  Fixes: 82049.
9531
9532 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9533
9534         * mini.c: remove assert from exception handling code when exception_ptr
9535         is not set.
9536
9537 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9538
9539         * mini.c (mono_codegen): Add an assert.
9540
9541         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
9542         enter and leave code.
9543         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
9544
9545 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9546
9547         * mini-ppc.c: fixed memory corruption for localloc(0)
9548         (bug #81852).
9549
9550 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
9551         
9552         * mini.c: Fix warnings.
9553
9554 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9555
9556         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
9557         to emit better double->int conversions.
9558
9559 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9560
9561         * mini.c: the provided Min/Max optimizations are valid for unisgned
9562         ints.
9563
9564 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
9565
9566         * 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
9567
9568 2007-06-28  Miguel de Icaza  <miguel@novell.com>
9569
9570         * mini.c (mono_running_on_valgrind): Add support for reporting the
9571         method and  its boundaries to valgrind.
9572
9573 2007-06-28  Martin Baulig  <martin@ximian.com>
9574
9575         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
9576
9577 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
9578
9579         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
9580
9581         * generic.2.cs: Add new test case.
9582
9583 2007-06-25  Martin Baulig  <martin@ximian.com>
9584
9585         Merged the `debugger-dublin' branch.
9586
9587         * debug-mini.c
9588         (mono_debugger_insert_method_breakpoint): New public method.
9589         (mono_debugger_remove_method_breakpoint): Likewise.
9590         (mono_debugger_check_breakpoints): New static method.
9591         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
9592
9593         * debug-debugger.h (MonoDebuggerInfo):
9594         Renamed (to keep backward compatibility in the vtable):
9595         `insert_breakpoint' -> `old_insert_breakpoint'.
9596         `remove_breakpoint' -> `old_remove_breakpoint'.
9597         `create_string' -> `old_create_string'.
9598         `lookup_class' -> `old_lookup_class'.
9599         `lookup_type' -> removed; changed into a dummy field.
9600         `lookup_assembly' -> `old_lookup_assembly'.
9601         Added (same functionality, but different signature):
9602         `create_string', `lookup_class', `lookup_assembly'
9603         Added new:
9604         `get_method_addr_or_bpt', `remove_method_breakpoint',
9605         `runtime_class_init'.
9606
9607         * debug-debugger.c: Merged the `debugger-dublin' branch.
9608
9609 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
9610
9611         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
9612         well.
9613         (peephole_pass): Likewise.
9614
9615 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9616
9617         * driver.c: hopefully make setaffinity work also for ancient
9618         versions of linux.
9619
9620 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
9621
9622         * driver.c : win32 build fix.
9623
9624 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9625
9626         * driver.c: check for the MONO_NO_SMP env var and bind to a single
9627         processor if it is set.
9628
9629 2007-06-21  Martin Baulig  <martin@ximian.com>
9630
9631         * debug-mini.h: New file.
9632
9633         * debug-mini.c
9634         (mono_debugger_insert_breakpoint_full): Moved here from
9635         ../metadata/mono-debug-debugger.c.
9636         (mono_debugger_remove_breakpoint): Likewise.
9637         (mono_debugger_breakpoint_callback): Likewise.
9638
9639 2007-06-15  Raja R Harinath  <rharinath@novell.com>
9640
9641         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9642         changes in MonoGenericClass.
9643
9644 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
9645
9646         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
9647
9648 2007-06-14  Raja R Harinath  <rharinath@novell.com>
9649
9650         * jit-icalls.c (mono_helper_compile_generic_method): Update to
9651         removal of MonoGenericMethod.
9652
9653 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9654
9655         * mini-exceptions.c: hooks for the exception events profiling API.
9656
9657 2007-06-14  Randolph Chung  <tausq@debian.org>
9658
9659         * Makefile.ma: Add hppa target.
9660         * mini-arch.h: Include mini-hppa.h
9661         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
9662         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
9663         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9664
9665 2007-06-14  Randolph Chung  <tausq@debian.org>
9666
9667         * inssel.brg: Add rules for "chained" compare-branch operations so that
9668         a single compare op can affect multiple branches.  Adjust cost for
9669         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
9670         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
9671         cost for some rules so that they can more easily be overridden by
9672         per-arch rules (with fixes from lupus).
9673         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9674
9675 2007-06-13  Randolph Chung  <tausq@debian.org>
9676
9677         * mini-ops.h: Reorder branch ops so that they match the order of the
9678         corresponding CEE_* ops.  The code expects them this way.
9679         Add new ops for HPPA target.
9680         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9681
9682 2007-06-13  Randolph Chung  <tausq@debian.org>
9683
9684         * mini-exceptions.c: Handle cases where the stack grows towards
9685         larger addresses.
9686         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
9687
9688 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9689
9690         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
9691         counter.
9692         * driver.c: explain where a non-matching corlib is found.
9693
9694 2007-06-13  Mark Probst  <mark.probst@gmail.com>
9695
9696         * mini.c (print_jit_stats): Output dynamic code allocation stats.
9697
9698 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
9699
9700         * mini-exceptions.c: Generate a method profile leave event during
9701         an exception to ensure that the profiler gets notified.
9702
9703 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
9706         branch.
9707
9708         * cpu-amd64.md: Add long_and/or/xor opcodes.
9709
9710 2007-06-06  Wade Berrier  <wberrier@novell.com>
9711
9712         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
9713         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
9714         length of instruction shr_imm (expected 8, got 10)
9715
9716 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
9717
9718         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
9719
9720 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9721
9722         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9723         MonoInternalHashTable again (fixed bug in the internal hash table
9724         code).
9725
9726 2007-06-06  Mark Probst  <mark.probst@gmail.com>
9727
9728         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
9729         Have to figure out what makes it crash the SWF regression.
9730
9731 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
9732
9733         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
9734
9735 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9736
9737         * mini.c: optimize out the type check when storing null in a
9738         reference array.
9739
9740 2007-06-04  Mark Probst  <mark.probst@gmail.com>
9741
9742         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
9743         MonoInternalHashTable.
9744
9745 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9746
9747         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
9748         signed integer methods.
9749
9750 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
9753         permanently since the current approach doesn't work.
9754
9755 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
9756
9757         * inssel.brg (stmt): Only call delegate->invoke_impl if 
9758         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
9759
9760 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9761
9762         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
9763         the sreg2==rdx case.
9764         
9765         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
9766         account if it contains a rex prefix.
9767         (peephole_pass): Handle OP_FMOVE as well.
9768
9769 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
9772         as it causes regressions.
9773
9774 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
9775
9776         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
9777         static case as well.
9778
9779         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
9780
9781         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9782         (mono_arch_get_this_arg_from_call): Ditto.
9783
9784         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
9785
9786         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
9787         invoke_impl field.
9788
9789         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
9790         (mono_arch_get_this_arg_from_call): Ditto.
9791
9792         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
9793         
9794         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
9795         try to create optimized invoke code and use that for further invocations. 
9796         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
9797
9798         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
9799
9800 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
9801
9802         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
9803         sealed classes or methods.
9804         *devirtualization.cs: tests for the new optimization
9805
9806 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
9809         by the update_volatile () function.
9810
9811 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
9814         require it.
9815
9816         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
9817
9818 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
9819
9820         * mini.c: Add configure checks for header files.
9821         * mini-x86.c: Add configure checks for header files.
9822         * trace.c: Add configure checks for header files.
9823         * aot-runtime.c: Add configure checks for header files.
9824         * aot-compiler.c: Add configure checks for header files.
9825         * driver.c: Add configure checks for header files.
9826         * mini-codegen.c: Add configure checks for header files.
9827         
9828         Code is contributed under MIT/X11 license.
9829
9830 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
9833         icompare_imm -128 + op_iclt. Fixes #81703.
9834
9835 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
9838
9839 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9840
9841         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
9842         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
9843         so that all isinst checks now use "interface_bitmap".
9844
9845 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * cpu-amd64.md (jmp): Fix a warning.
9848
9849         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
9850
9851         * basic.cs: Add new regression test.
9852
9853         * basic.cs: Remove test which is now in basic-long.cs.
9854
9855         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
9856
9857         * basic-long.cs: Add new test.
9858         
9859 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
9862
9863 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9864
9865         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
9866
9867         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
9868         places.
9869         
9870         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
9871         throwing code a bit.
9872
9873         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
9874         the exception throwing code a bit.
9875
9876         * mini-x86.c (get_call_info): Allocate result from a mempool.
9877
9878 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
9879
9880         * aot-compiler.c (find_typespec_for_class): Fix the assert.
9881
9882         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
9883
9884         * mini.h (MonoCompile): Add 'token_info_hash' field.
9885
9886         * mini.c: Save token->method associations during compilation so the AOT 
9887         compiler can use it.
9888         
9889         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
9890         which reference generic classes and methods.
9891
9892 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
9893
9894         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
9895
9896         * aot-compiler.c (compile_method): Fix a typo in a comment.
9897
9898         * aot-runtime.c (decode_cached_class_info): Skip generic types.
9899
9900         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
9901         everything generic.
9902
9903         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
9904
9905 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * mini.h (MonoCompile): Add 'args' field.
9908
9909         * mini.c (mono_compile_create_vars): Store variables representing the arguments
9910         into cfg->args.
9911
9912         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
9913
9914 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
9915
9916         * mini.c (mono_compile_get_interface_var): Remove this unused function.
9917
9918         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
9919
9920         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
9921         opcodes for some opcodes.
9922
9923         * mini.h *.brg *.c: Use the new opcodes.
9924
9925 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9926
9927         * mini.h: Bumped aot revision.
9928
9929         * inssel.brg: modified code generation of type checks for interfaces
9930         to use the new "MonoClass.interface_bitmap" instead of the old
9931         "MonoClass.interface_offsets".
9932
9933 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
9936
9937 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
9940         64 bit platforms.
9941
9942 2007-04-27  Neale Ferguson <neale@sinenomine.net>
9943
9944         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
9945
9946 2007-04-27  Wade Berrier  <wberrier@novell.com>
9947
9948         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
9949         mini.h) to fix build.
9950
9951 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
9954         
9955         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
9956         causes the corlib unit tests to fail.
9957
9958 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
9961
9962         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
9963
9964         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
9965         opcodes to the comparison relations.
9966
9967         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
9968         opcodes to their types.
9969         
9970         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
9971
9972         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
9973         it in cfg->arch.cinfo.
9974
9975         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
9976
9977         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
9978         cfg->cil_offset_to_bb.
9979
9980 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9981
9982         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
9983         created becase of initlocals.
9984
9985 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * mini-alpha.c cpu-alpha.md: More alpha port work from 
9988         Sergey Tikhonov <tsv@solvo.ru>.
9989
9990 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
9991
9992         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
9993
9994 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
9995
9996         * cpu-s390.md (break): Correct the length of break instruction.
9997
9998 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
9999
10000         * mini.c: fix a couple of soft-float issues and comments.
10001
10002 2007-04-15  Miguel de Icaza  <miguel@novell.com>
10003
10004         * trace.c (is_filenamechar): - is also a filename char.
10005
10006 2007-04-15  Neale Ferguson <neale@sinenomine.net>
10007
10008         * mini-s390.c: Correct checking for enum type in return value processing.
10009
10010 2007-04-14  Raja R Harinath  <rharinath@novell.com>
10011
10012         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
10013         (version.h): Makefile is in the build directory.
10014
10015 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
10016
10017         * mini-amd64.h: fix for assertion failure on Solaris/amd64
10018
10019 2007-04-11  Martin Baulig  <martin@ximian.com>
10020
10021         * mini.c (can_access_member): Fix handling of generic classes;
10022         fixes #81259.
10023
10024 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
10025
10026         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
10027
10028 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
10031
10032 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10033
10034         * mini-codegen.c: make sure the right spill amount is
10035         used for fp or integer registers (fixes the float_sub_spill() on ppc).
10036
10037 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
10038
10039         * mini-ppc.c: fixes for the fp_branch_nan test.
10040
10041 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
10042
10043         * basic.cs: Comment out new test which still fails on ia64.
10044
10045 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10046
10047         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
10048
10049 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10050
10051         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
10052
10053 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
10054
10055         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
10056         on 64 bit machines. Fixes part of #80738.
10057
10058         * basic.cs: Add regression test.
10059
10060 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10061
10062         * inssel.brg basic.cs: Revert previous change to fix build.
10063
10064         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
10065         platforms.
10066         
10067         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
10068
10069         * basic.cs: Add new regression test.
10070
10071 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
10074         many arguments.
10075
10076 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10077
10078         * cpu-s390x.md: Correct length of break instruction.
10079
10080 2007-03-16  Neale Ferguson <neale@sinenomine.net>
10081
10082         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
10083         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
10084
10085 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
10086
10087         * *.c: Begin WIN64 port.
10088         * mini.c:  Use correct register in profiler.
10089         * mini-amd64.c: No inline assembly on Win64.
10090         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
10091         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
10092         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
10093         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
10094         mono_arch_ip_from_context for Win64.
10095         
10096         Contributed under MIT/X11 license.
10097
10098 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
10099
10100         * exceptions-amd64.c (seh_handler): Ditto.
10101
10102         * exceptions-x86.c (seh_handler): Fix a memory leak.
10103
10104 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
10105
10106         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
10107         mini-s390x.c: fixed peephole optimizations to deal
10108         correctly with 1 and 2 byte reload avoidance.
10109
10110 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
10111
10112         * cpu-s390.md, cpu-s390x.md: update localloc length.
10113
10114 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10115
10116         * cpu-g4.md: added missing descriptions.
10117
10118 2007-03-14  Miguel de Icaza  <miguel@novell.com>
10119
10120         *  Makefile.am: Add support so the tail tests are not executed on
10121         PowerPC as that is a known limitation of the PowerPC port.
10122
10123 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10124
10125         * runmdesc.bat:  Move to msvc directory.
10126         
10127 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10128
10129         * runmdesc.bat:  Run executable that was produced by the current
10130         target and sent via an argument.
10131         
10132 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
10135         #81102.
10136
10137         * generics.2.cs: Add regression test.
10138
10139 2007-03-09  Wade berrier  <wberrier@novell.com>
10140
10141         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
10142
10143 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
10146         AOT code depends on this.
10147
10148 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10149
10150         * mini.c: more precise tracking of types in the eval stack
10151         (part of fix for bug #81044).
10152
10153 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
10154
10155         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
10156
10157         * aot-compiler.c (encode_patch): Remove an obsolete comment.
10158
10159 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10160
10161         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
10162
10163         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
10164
10165 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
10168         a pointer on 64 bit systems. Fixes #80190.
10169
10170         * iltests.il: Add new regression test.
10171
10172 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini.c: inline a constant for Environment.IsRunningOnWindows.
10175
10176 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
10177
10178         * trace.c: Remove an erroneous alignemnt check when tracing.
10179           Fixes --trace on OSX86.
10180
10181 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10182
10183         * mini-$(arch).h: initialize SP in context for all the archs.
10184
10185 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
10186
10187         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
10188         regressions in the thread tests.
10189
10190 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
10193         - fixed implementation of LOCALLOC opcode
10194         - implemented non-un compare for floats
10195         - code cleanup
10196         - implementation of FDIV and CKFINITE opcodes
10197         - fixes for latest mono updates
10198         - additional arch opcodes
10199
10200 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10201
10202         * Makefile.am: simplify and merge rules for cross-compilation.
10203
10204 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
10205
10206         * local-propagation.c: Actually *apply* the fix for bug 80591...
10207
10208 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
10209
10210         * mini-exceptions.c: backuot part of the last change
10211         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
10212
10213 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
10214         * inssel.brg: Fix bug 59286.
10215
10216
10217 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
10218
10219         * mini-exceptions.c: patch from Zoltan to correctly check for
10220         stack boundaries (using the stack register, not the frame register),
10221         fixes bugs #80724, #79717.
10222
10223 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
10224
10225         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
10226         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
10227
10228         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
10229         presence of frame pointer elimination.
10230
10231 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
10232         
10233         * mini-x86.h: NetBSD UCONTEX_REG defines.
10234
10235 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
10236
10237         * inssel-amd64.brg: Fix amd64 build.
10238
10239 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
10240
10241         * mini.h: remove extern to workaround what looks likes gcc bug 26905
10242         on amd64.
10243
10244 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
10247         ends.
10248
10249         * mini-<ARCH>.c: Use mono_is_regsize_var ().
10250
10251 2007-01-30 Mark Mason <mason@broadcom.com>
10252
10253            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
10254            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
10255            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
10256            beginning support for CEE_JMP [not quite working yet]
10257            * tramp-mips.c: LMF handling now works
10258         
10259 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
10262
10263         * mini.h (NULLIFY_INS): New macro.
10264
10265 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10266
10267         * mini.c: statistical profiler fix for windows, patch
10268         from Tor Lillqvist (tml@novell.com).
10269
10270 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
10271         * local-propagation.c: Fix bug 80591.
10272
10273 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10274
10275         * Makefile.am: put back the --export-dynamic option as with
10276         the previous gmodule flags (thanks to Robert Jordan).
10277
10278 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
10281
10282         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
10283         simplify and speed up the local register allocator. Also rename some fields
10284         like iassign->vassign.
10285         
10286         * regalloc.c: Remove some functions which are no longer used since their
10287         inlined version is in mini-codegen.c.
10288         
10289         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
10290
10291         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
10292
10293 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
10296         narrowing. Fixes #80622.
10297
10298         * iltests.il: Add new regresssion test. 
10299
10300 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10301
10302         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
10303         debug-debugger.c, debug-debugger.h: warning fixes.
10304         * driver.c: updated copyright year and made it fit in one line.
10305
10306 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
10307
10308         * aot-runtime.c: updated to use mono-dl instead of gmodule.
10309
10310 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
10311
10312         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
10313
10314         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
10315
10316         * iltests.il: Add new test for bug #80507.
10317
10318 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
10319
10320         * mini-arm.h: use soft-float also on vfp for now.
10321
10322 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10323
10324         * mini.c: fix some more soft-float issues.
10325
10326 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
10329
10330 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
10331         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
10332         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
10333         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
10334
10335 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
10336
10337         * mini-arm.c: typo fix.
10338
10339 2007-01-23  Neale Ferguson <neale@sinenomine.net>
10340
10341         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
10342
10343 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
10344
10345         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
10346         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
10347
10348         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
10349
10350         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
10351
10352         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
10353         
10354         * inssel.brg: Fix a warning.
10355
10356         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
10357
10358         * abcremoval.c ssa.c ssapre.c: Update after this change.
10359         
10360         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
10361
10362         * dominators.c (df_set): Use mono_bitset_union_fast.    
10363
10364 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10365
10366         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
10367         mini-codegen.c: reduce relocations and memory usage for the cpu
10368         description.
10369
10370 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
10371
10372         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
10373
10374         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
10375         to reduce their size.
10376
10377 2007-01-19 Mark Mason <mason@broadcom.com>
10378
10379         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
10380         * mini-mips.c: more configuration macros, support long conditional branches, additional
10381         asserts, fix epilog instrumentation.
10382         * mini-mips.h: use standard stack walk
10383         * cpu-mips.md: increase size of div, rem and conditional branches
10384         
10385 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
10386
10387         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
10388         to cpu spec data.
10389
10390 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
10393         (compile_method): Ditto.
10394
10395         * aot-runtime.c (decode_klass_info): Ditto.
10396
10397         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
10398         needed by the code generated by inssel.brg. Also fix a warning.
10399
10400 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
10401
10402         * mini.c: deal with enums that become genericinsts by
10403         being nested in a generic class (bug #79956).
10404
10405 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
10406
10407         * mini.c: match the generic definition to check for
10408         private access with generic types (bug #78431).
10409
10410 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
10411
10412         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
10413         to make life easier for people cross-compiling that insist on not
10414         using scratchbox.
10415
10416 2007-01-17 Mark Mason <mason@broadcom.com>
10417
10418         * inssel-long.brg: patch to deal with mips missing flags
10419         * inssel-long32-mips.brg: implement overflow checks
10420         * insset-mips.brg: implement overflow checks
10421         * mini-mips.h: implement conditional exception handling
10422         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
10423           Remove unused code, minor cleanups.
10424         * exceptions-mips.c: minor cleanups
10425         * mini-ops.h: add mips conditional exception ops
10426         * cpu-mips.md: add mips conditional exception ops
10427
10428         
10429 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
10430
10431         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
10432         to deal with mips missing of flags.
10433
10434 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
10435
10436         * exceptions-ppc.c: execute fault handlers.
10437
10438 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
10439
10440         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
10441
10442 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
10443
10444         * mini.c: handle also floating point values in initialize_array.
10445
10446 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10447
10448         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
10449         array initialization and make it conditional on the intrins option.
10450
10451 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
10452
10453         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
10454         relocations and put the patch info names close to the enum definition.
10455
10456 2007-01-15 Mark Mason <mason@broadcom.com>
10457
10458         * basic.cs, exceptions.cs: break up large tests to increase debugability.
10459
10460 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10461
10462         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
10463
10464 2007-01-12  Raja R Harinath  <rharinath@novell.com>
10465
10466         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
10467
10468 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10469
10470         * Makefile.am: distribute the mips sources.
10471
10472 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10473
10474         * mini-codegen.h: handle bug #80489 here, by excluding ecx
10475         directly.
10476
10477 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
10478
10479         * cpu-x86.md: back out for now as this triggers other regressions.
10480
10481 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
10482
10483         * cpu-x86.md: force src1 and dest regpair for long shift instructions
10484         to eax:edx, so ecx can't get allocated to them (bug #80489).
10485
10486 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
10487
10488         * mini.c, mini-exceptions.c: enabled running fault handlers
10489         (bug #80469).
10490
10491 2007-01-03  Miguel de Icaza  <miguel@novell.com>
10492
10493         * driver.c: If nothing fail, do not use the string "failed",
10494         because it makes it very annoying to view test result logs on the
10495         web. 
10496
10497 2006-12-30  Miguel de Icaza  <miguel@novell.com>
10498
10499         * debug-debugger.c (mono_debugger_main): Rename "main" to
10500         "main_method" to prevent a warning.
10501
10502         Remove a warning for unused field.
10503
10504 2006-12-28  Martin Baulig  <martin@ximian.com>
10505
10506         * debug-debugger.c
10507         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
10508
10509 2006-12-22  Martin Baulig  <martin@ximian.com>
10510
10511         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
10512         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
10513         seperate `.mdb_debug_info' section, so we can access it from the
10514         debugger even if the binary is stripped.
10515
10516         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
10517         from the `.mdb_debug_info' here to prevent the linker from
10518         removing that section.
10519
10520         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
10521         mdb-debug-info64.s.
10522
10523 2006-12-19  Robert Jordan  <robertj@gmx.net>
10524
10525         * mini-x86: enable the code to return small structures in
10526         registers for FreeBSD as well. Fixes bug #80278.
10527         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
10528
10529 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10530
10531         * mini-x86.c: align the stack when calling the profiler
10532         function instrumenting the prolog (on OSX).
10533
10534 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10535
10536         * mini.c: emit a break opcode where Debugger.Break () is called.
10537
10538 2006-12-13  Miguel de Icaza  <miguel@novell.com>
10539
10540         * mini.c (mono_method_to_ir): Provide useful information on this
10541         assert, to prevent others from debugging like I did.
10542
10543 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10544
10545         * mini.c: enable code which was incorrectly commented
10546         (bug #80235).
10547
10548 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10549
10550         * mini-x86.c: enable on OSX, too, the code to return small
10551         structures in registers.
10552
10553 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10554
10555         * mini-x86.c: remove the use of the dynamic code manager here, too.
10556
10557 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
10558
10559         * mini.h, debug-debugger.c, tramp-*.c: fixed 
10560         mono_debugger_create_notification_function() to use
10561         mono_global_codeman_reserve () instead of a dynamic code manager.
10562
10563 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10564
10565         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
10566         ves_array_element_address() jit icall and use a generated
10567         managed method instead (which is about 4 times faster for a rank 3
10568         array access).
10569
10570 2006-11-29  Mark Mason  <mason@broadcom.com>
10571
10572         * basic-calls.cs: additional tests for passing
10573         structures as function arguments.
10574
10575 2006-11-29  Mark Mason  <mason@broadcom.com>
10576
10577         * mini-mips.h: disable custom exception handling
10578         * mini-mips.c: throw/rethrow should use jalr to call
10579         exception stubs.  Fixed bug with passing structures
10580         by value. More support for tracing floating point
10581         functions.
10582
10583 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10584
10585         * mini.c: fixed typo in the soft-float ldind.r4 handling
10586         (bug #80086).
10587
10588 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10589
10590         * mini.c, mini.h, driver.c: added --runtime command line
10591         option to select a different runtime than the autodetected one.
10592         * jit.h: added API for embedders to initialize with a specific
10593         runtime version.
10594
10595 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
10596
10597         * mini.c: handle also boxing of r4 values (bug #80024).
10598
10599 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10600
10601         * mini-ppc.c: force indirect calls until we reserve
10602         enough address space for all the generated code.
10603
10604 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
10605
10606         * exceptions-arm.c: workaround bugs in the libc definition
10607         of struct ucontext.
10608
10609 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10610
10611         * inssel.brg: fixes from me and Mark Mason.
10612
10613 2006-11-23  Dick Porter  <dick@ximian.com>
10614
10615         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
10616         semaphore display now we've fixed the initial value
10617
10618 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10619
10620         * inssel.brg: partially revert the last change to fix the build.
10621
10622 2006-11-21  Mark Mason  <mason@broadcom.com>
10623
10624         * inssel.brg: Add and use compare-and-branch macros to support
10625         architectures that do not have condition code registers (ie. MIPS).
10626         * *-mips.{c,brg,md}: Fix copyright statements
10627
10628 2006-11-20  Mark Mason  <mason@broadcom.com>
10629
10630         * Makefile.am: remove mini-codegen.c from list of MIPS sources
10631         * mini.c: Allow GET_CONTEXT to be specified by the arch port
10632         * mini.h: Added declaration for mono_print_ins()
10633         * mini-codegen.c: added ins_spec initializer for MIPS
10634         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
10635         vreg to be virtual and hreg to be non-virtual.
10636         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
10637         is not yet working/implemented correctly.
10638         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
10639         non-static, fixup calls to print_ins() from other parts in the file.
10640
10641 2006-11-20  Mark Mason  <mason@broadcom.com>
10642
10643         * basic-calls.cs: added tests for passing structures as arguments
10644         to calls.
10645
10646 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10647
10648         * inssel-long32.brg: optimize signed division by power of two.
10649
10650 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10651
10652         * mini-arm.c: added support for interworking with thumb code
10653         (mono must be still be built using the ARM instruction encoding).
10654
10655 2006-11-19  Miguel de Icaza  <miguel@novell.com>
10656
10657         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
10658         verifier has different rules for it.   Fixes a few verifier issues
10659         in the test suite.
10660
10661         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
10662         at the end, so people know what happened.
10663
10664 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10665
10666         * brach-opts.c: in optimize_exception_target() make sure we
10667         are in a catch clause (fixes bug #79871).
10668
10669 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10670
10671         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
10672         more soft-float support fixes.
10673
10674 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
10675
10676         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
10677         that are passed half on the stack and half in registers.
10678
10679 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10680
10681         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
10682         more mips integration work from Mark E Mason 
10683         <mark.e.mason@broadcom.com>.
10684
10685 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
10686
10687         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
10688         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
10689         tramp-mips.c: added sources for the mips port, not
10690         integrated in the build yet. Contributed by
10691         Mark E Mason <mark.e.mason@broadcom.com>.
10692
10693 2006-11-14  Neale Ferguson <neale@sinenomine.net>
10694
10695         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
10696
10697 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10698
10699         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
10700         put the soft-float rules in its own file since it seems to
10701         break s390 compilation.
10702
10703 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10704
10705         * mini-arm.c: fixed wrnings.
10706
10707 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
10708
10709         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
10710         inssel-arm.brg: ARM support for soft-float.
10711
10712 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
10713
10714         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
10715         loads and stores of 32 bit fp values.
10716
10717 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
10720
10721         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
10722         works. Fixes #79852 and #79463.
10723
10724 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10725
10726         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
10727         more soft-float support WIP and fixes.
10728
10729 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
10730
10731         * mini-arm.c: some VFP updates.
10732
10733 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10734
10735         * mini-exceptions.c: 0 is a valid local var offset in some
10736         architectures, don't assert (bug #78508).
10737
10738 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
10739
10740         * exceptions-arm.c: fixed off by one error in stack walk code.
10741
10742 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10743
10744         * mini.h, mini.c: more precise tracking of type load exceptions.
10745
10746 2006-11-03  Robert Jordan  <robertj@gmx.net>
10747
10748         * Makefile.am: [WIN32] Add monow.exe target.
10749         * driver.c: [WIN32] Don't detach the console when debugging.
10750         Fixes bug #79797.
10751         
10752 2006-10-30  Miguel de Icaza  <miguel@novell.com>
10753
10754         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
10755
10756 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * aot-compiler.c (emit_method_info): Add a case missed earlier.
10759
10760         * driver.c (mini_regression): Fix --regression with AOT.
10761
10762         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
10763
10764 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
10767
10768         * mini-sparc.h: Don't use sigaction on sparc/linux.
10769
10770         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
10771
10772         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
10773
10774         * mini-exceptions.c: Add proper include files for getpid ().
10775
10776 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
10777
10778         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
10779         address instead of a MonoJitInfo* to avoid decoding the exception info for the
10780         method.
10781
10782         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
10783         name cache to reduce its size.
10784
10785         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10786
10787 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10788
10789         * mini-x86.c: Save/restore the current LMF structure more efficiently using
10790         the mono_lmf TLS variable.
10791
10792         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
10793         trampoline lmf frames.  
10794
10795         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
10796
10797 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
10800         the mono_lmf TLS variable.
10801
10802         * mini-exceptions.c: Access the LMF structure through accessors.
10803
10804         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
10805         variable instead of in jit_tls->lmf.
10806
10807         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
10808         
10809         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
10810         trampoline lmf frames.
10811
10812         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
10813
10814 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10815
10816        * mini.c trace.c mini-x86.c: Revert these too.
10817         
10818        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
10819        signature change.
10820
10821 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
10822
10823         * genmdesc.c: removed now dead code.
10824
10825 2006-10-09  Robert Jordan <robertj@gmx.net>
10826
10827         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
10828
10829 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10830
10831         * mini.h: do not leave gaps in the opcode values.
10832
10833 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
10834
10835         * jit-icalls.h: flag functions as internal here, too.
10836
10837 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
10838
10839         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
10840         functions with the internal attribute.
10841
10842 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
10843
10844         * aot-compiler.c: fclose the file descriptor in the profile read loop.
10845
10846 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10847
10848         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
10849         for soft-float.
10850
10851 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10852
10853         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
10854         tail calls as on other platforms.
10855
10856         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
10857
10858         * iltests.il: Add a few tailcall tests.
10859
10860 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10861
10862         * driver.c: fix loop for old compilers (bug #79521).
10863
10864 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
10867
10868         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
10869
10870         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
10871         metadata without any code.
10872
10873         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
10874         more precise debugging information using gdb.
10875
10876 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * inssel-ia64.brg: Make the helper methods static.
10879
10880 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10881
10882         * inssel-x86.brg: make the helper methods static.
10883
10884 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
10885
10886         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
10887
10888 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
10889
10890         * mini.c: updates for monoburg changes.
10891         * inssel.brg: make a few helper functions static as they should.
10892
10893 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10894
10895         * Makefile.am: Move mini-codegen.c to common_sources.
10896
10897 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10898
10899         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
10900         instructions.
10901         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
10902         mini-ppc.h: port to use the common local register allocator.
10903
10904 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * mini.h: Remove the comment too then.
10907
10908 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
10909
10910         * mini.h: put back backend.data which is to be used shortly and
10911         doesn't increase the size of MonoInst. If any 64 bit arch aligned
10912         pointers on 4 byte boundaries it'd have much bigger issues running
10913         and you can ifdef it out anyway.
10914
10915 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
10918         MonoInst size by 4 bytes on 64 bit machines.
10919
10920 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10921
10922         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
10923         replacement with more meaningful field names. Arch maintainers, please
10924         check the assigned names are good enough for your arch.
10925
10926 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
10929         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
10930
10931 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10932
10933         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
10934         relocations and memory requirements, put the optimization flags
10935         definitions in their own file.
10936
10937 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
10940
10941         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
10942
10943 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
10944
10945         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
10946
10947 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
10948
10949         * inssel.brg: use the correct function to get the size of an item
10950         in an array, given an element class.
10951         * aot-compiler.c: do not access class->class_size directly.
10952
10953 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10954
10955         * mini.h, debug-mini.c: added a debugging function to print
10956         info about local variables and arguments in a jitted method.
10957
10958 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
10959
10960         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
10961
10962         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
10963
10964 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
10967         inner and outer loops when passing vtypes.
10968
10969 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
10970
10971         * mini-ppc.c: take into account the cpu errata for cache flushing
10972         which caused some random errors (bug #79381).
10973
10974 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
10975
10976         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
10977         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
10978
10979 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10980
10981         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
10982         loaded.
10983
10984         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
10985         freebsd ports tree.
10986
10987         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
10988         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
10989
10990         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
10991         displacement.
10992
10993 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
10996
10997 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
11000         macro does not have to be changed during debugging.
11001
11002         * 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>.
11003
11004         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
11005
11006         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
11007         
11008         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
11009         MONO_ARCH_NO_EMULATE_MUL is defined.
11010
11011         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
11012
11013         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
11014
11015         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
11016
11017         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
11018         
11019 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
11020
11021         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
11022         stuff to mini-exceptions.c where it is used.
11023
11024         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
11025         setup code, the real one is in mini-exceptions.c.
11026
11027         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
11028         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
11029         some changes from the freebsd ports tree.
11030
11031         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
11032         constants.
11033         
11034         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
11035
11036 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
11037
11038         * mini.c: on Linux, check for /proc to be mounted
11039         (bug# 79351, novell bug#201204).
11040
11041 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11042
11043         * mini.c: handle cases where pthread_attr_getstack() behaves
11044         incorrectly (bug #78096).
11045
11046 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
11047
11048         * mini-arm.c: support larger stack frames (bug #79272).
11049
11050 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
11051
11052         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
11053
11054         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
11055         tokens.
11056
11057         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
11058         mono_class_from_name () to find a class from its name.
11059
11060         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
11061
11062 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
11063
11064         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
11065
11066 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
11067
11068         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
11069
11070 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
11073         callinfo->trampoline.
11074
11075         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
11076         fixes #79271.
11077         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
11078         future.
11079
11080 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
11081
11082         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
11083
11084 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
11087         stats.method_trampolines, it is already done by the generic trampoline code.
11088
11089         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
11090         
11091 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
11092
11093         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
11094
11095         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
11096
11097         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
11098
11099         * mini.c (print_jit_stats): Print mscorlib mempool size too.
11100         
11101         * mini.c (print_jit_stats): Print new stats.
11102
11103         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
11104
11105 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
11106
11107         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
11108         Address on two dimensional arrays. Fixes #78729.
11109
11110         * mini.h (MonoCompile): Add a 'skip_visibility' field.
11111
11112         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
11113         a method.
11114
11115         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
11116
11117         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
11118         #79130.
11119         
11120         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
11121         a race condition.
11122         (mini_get_ldelema_ins): Ditto.
11123
11124 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
11127         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
11128         Fixes #79213.
11129
11130 2006-08-29 Neale Ferguson <neale@sinenomine.net>
11131
11132         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
11133         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
11134
11135         * exceptions-s390x.c: Cosmetic change.
11136
11137         * tramp-s390.c: Fix warning.
11138
11139         * cpu-s390.md: Correct length of mul_imm.
11140
11141 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11142
11143         * aot-compiler.c: added binary writer with ELF backend
11144         implementation (only on Linux/x86 for now).
11145
11146 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11147
11148         * Makefile.am: Don't run net 2.0 AOT tests.
11149
11150         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
11151         (mono_compile_assembly): Skip net 2.0 assemblies as well.
11152
11153         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
11154
11155 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11156
11157         * aot-compiler.c: simplified and refactored the asm-writing code
11158         to allow different backends.
11159
11160 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11163
11164         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
11165         little. Share patches of type TYPE_FROM_HANDLE as well.
11166
11167         * mini.c (mono_patch_info_equal): New helper function.
11168         (mono_patch_info_hash): Ditto.
11169
11170         * aot-compiler.c (emit_method_code): Fix s390 build.
11171
11172         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
11173         is not handled because it is stored as a flag and not as a type ctor. Fixes
11174         #79016.
11175
11176 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * aot-compiler.c: Fix computation of GOT slot statistics.
11179         
11180         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
11181         Also remove support for not PIC AOT.
11182
11183         * mini.h: Bump AOT file format version.
11184
11185         * objects.cs: Add a test for #78990.
11186
11187         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
11188         (peter.dettman@iinet.net.au). Fixes #79087.
11189
11190         * basic-long.cs: Add a test for the above.
11191
11192 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
11195         
11196         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
11197         code somewhat.
11198
11199 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
11202         exceptions.
11203
11204 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
11205
11206         * mini.c: Don't verify COM proxy invoke calls
11207         
11208
11209 2006-08-10  Dick Porter  <dick@ximian.com>
11210
11211         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
11212         which process is holding semaphores locked.
11213
11214 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * mini-ia64.c mini-amd64.c: Fix #79027.
11217
11218         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
11219
11220         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
11221
11222         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
11223         implicit arguments in a vararg call. Fixes #79027.
11224
11225 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
11226
11227         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
11228         (mono_get_array_new_va_signature): Ditto.
11229
11230 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
11231
11232         * aot-runtime.c: Call init_plt lazily.
11233
11234         * inssel-long.brg: Fix unsigned long->int conversion.
11235
11236         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
11237
11238         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
11239         that most data is now in the .rss/.data section.
11240
11241 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
11244
11245         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
11246
11247         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
11248
11249         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
11250
11251         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
11252         virtual call. Fixes #79010.
11253
11254         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
11255         and use the result as the this argument in the real call.
11256
11257         * generics.2.cs: Add a new test for #79010.
11258         
11259 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
11260
11261         * mini-x86.c: Fix a warning.
11262
11263         * aot-compiler.c: Add a bunch of statistics.
11264
11265         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
11266
11267 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
11270
11271 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11272
11273         * 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>.
11274
11275 2006-07-13  Miguel de Icaza  <miguel@novell.com>
11276
11277         * mini.c (mono_method_to_ir): Obtain the original method in the
11278         CIL stream and use this to perform validation.
11279
11280         Fixed: #78816
11281
11282 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
11283
11284         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
11285         (mono_arch_call_opcode): Ditto.
11286
11287         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
11288         #78826.
11289
11290         * mini.c (mono_patch_info_dup_mp): New helper function.
11291         
11292         * aot-compiler.c (compile_method): Fix some of the memory allocated during
11293         compilation. Fixes #78827.
11294
11295 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11296
11297         * declsec.c: Use original security informations for
11298           MONO_WRAPPER_MANAGED_TO_MANAGED.
11299
11300 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11301
11302         * mini.c: Allow Com Interop methods/classes and
11303         don't verify COM wrapper calls
11304         
11305
11306 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
11307
11308         * inssel-long32.brg: Fix long->i4 checked conversion.
11309
11310         * exceptions.cs: Add a test for the above.
11311
11312 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11313
11314         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
11315
11316         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
11317         leaks.
11318
11319         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
11320         #78775.
11321
11322 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
11323
11324         * mini.c: Fix solaris/x86 exception handling.
11325
11326         * Makefile.am: Get rid of $(ICU_LIBS).
11327
11328 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
11331         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
11332         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
11333
11334         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
11335
11336         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
11337         this function causes a SIGSEGV.
11338
11339 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
11340
11341         * mini.c: Remove unused solaris/x86 includes.
11342
11343 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11344
11345         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
11346
11347 2006-06-20  Jb Evain  <jbevain@gmail.com>
11348
11349         * cpu-g4.md: fix max length of start_handler instruction.
11350
11351 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
11352         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
11353
11354 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
11355         * ssa.c: Fixed bug 78653 for SSA based deadce.
11356         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
11357         MonoInst.flags, used in SSA based deadce.
11358         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
11359         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
11360
11361 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11362
11363         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
11364         it can end up using non executable memory on ppc64 systems
11365         running ppc32 userspace (fix from Johannes Berg).
11366
11367 2006-06-14  Dick Porter  <dick@ximian.com>
11368
11369         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
11370         4.1.1
11371
11372 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
11373         * mini.c: Made so that inline is locally disabled if it would
11374         trigger a .cctor, because too many apps depend on this behavior
11375         (which seems to be also the one of the MS CLR).
11376
11377 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
11378
11379         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
11380         No idea why this worked before.
11381
11382         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
11383         which branch to outer exception clauses since they could skip the
11384         inner finally clauses. Fixes #78633.
11385
11386         * exceptions.cs: Add a test for the above.
11387
11388         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
11389         Fixes #78629.
11390
11391         * iltests.il: Add a test for the above.
11392
11393 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
11394
11395         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
11396         after the end of a try bblock, to prevent asserts in mini_method_compile ().
11397
11398         * iltests.il: Add a test for the above.
11399
11400 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
11403         
11404         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
11405         methods as instrinsics.
11406
11407 2006-06-09  Wade Berrier <wberrier@novell.com>
11408
11409         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
11410         (simple-cee-ops.h ssapre-mini-ops.h)
11411
11412 2006-06-09  Neale Ferguson <neale@sinenomine.net>
11413
11414         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
11415         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
11416         instruction).
11417         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
11418         * cpu-s390x.md: Fix max. length values for a couple of instructions.
11419
11420 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11421
11422         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
11423
11424 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
11425
11426         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
11427         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
11428         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
11429         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
11430         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
11431         of opcodes, so that bug 78549 should not happen again.
11432         * ssapre.c: Updated to use the renamed files.
11433
11434 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
11437         in OP_ATOMIC_EXCHANGE_I4.
11438
11439 2006-06-07  Wade Berrier <wberrier@novell.com>
11440
11441         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
11442         in mono_debugger_create_notification_function)
11443
11444 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
11447         
11448         * mini.c (type_from_stack_type): Disable some changes which do not
11449         seem to work.
11450
11451         * driver.c: Reenable opts.
11452
11453         * mini.h (MonoStackSlot): New structure to keep track of the verification state
11454         of the evaluation stack.
11455         
11456         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
11457         evaluation stack trace at entry to the bblock.
11458
11459         * mini.c (merge_stacks): New function to perform verification of stack merges.
11460         Turned off by default.
11461
11462         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
11463         STACK_MP.
11464         
11465 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
11466
11467         * local-propagation.c: Fixed bug 78549.
11468
11469 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
11470
11471         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
11472
11473 2006-06-02  Miguel de Icaza  <miguel@novell.com>
11474
11475         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
11476         tramp-arm.c, tramp-ia64.c
11477         (mono_debugger_create_notification_function): Update signature to
11478         new signature and use new protocol for creating the notification
11479         function.  
11480
11481         Should fix the build.
11482
11483 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
11484
11485         * exceptions-ppc.c (mono_jit_walk_stack)
11486         (ves_icall_get_frame_info): Fix the build
11487
11488 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11489
11490         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
11491
11492 2006-05-31  Raja R Harinath  <rharinath@novell.com>
11493
11494         * il2tests.2.il: New file for generics CIL tests.  Add test for
11495         #78019.
11496         * Makefile.am: Update.
11497
11498         Fix #78019
11499         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
11500         to nullable types.
11501
11502 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
11503
11504         * aliasing.c: Fixed bug 78311.
11505
11506 2006-05-29  Martin Baulig  <martin@ximian.com>
11507
11508         * mini-exceptions.c (mono_find_jit_info): When computing the
11509         native offset, check whether we're actually inside the method's
11510         code; call mono_debug_print_stack_frame() to format the frame.
11511         (ves_icall_System_Exception_get_trace): Call
11512         mono_debug_print_stack_frame() to format the stack frame.
11513         (ves_icall_get_trace): Update to the new debugging API.
11514         (mono_jit_walk_stack_from_ctx): Likewise.
11515         (ves_icall_get_frame_info): Likewise.
11516
11517         * mini.c (get_method_from_ip): Use the new debugging API.
11518         (mono_print_method_from_ip): Likewise.
11519
11520         * exceptions-ppc.c
11521         (mono_jit_walk_stack): Use the new debugging API.
11522         (ves_icall_get_frame_info): Likewise.   
11523
11524 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
11527
11528 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
11529
11530         * mini.c: Added "limitator" to inline for debugging.
11531
11532 2006-05-24  Martin Baulig  <martin@ximian.com>
11533
11534         * debug-debugger.c (mono_debugger_init): Create a private,
11535         malloc()-based code manager for the notification function and
11536         intentionally leak it on exit.  This fixes the crash-on-exit race
11537         condition.
11538
11539         * tramp-amd64.c
11540         (mono_debugger_create_notification_function): Added
11541         `MonoCodeManager *' argument.
11542
11543         * tramp-x86.c
11544         (mono_debugger_create_notification_function): Added
11545         `MonoCodeManager *' argument.
11546
11547 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
11548
11549         * aliasing.c: Fixed 64 bit issue.
11550         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11551         default since all known bugs are fixed (one more time!).
11552
11553 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11554
11555         * mini.c: write barrier support.
11556
11557 2006-05-23  Martin Baulig  <martin@ximian.com>
11558
11559         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
11560         check at the top of the file.
11561
11562 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
11563
11564         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
11565         reverting changes without reason and without changelog entries.
11566
11567 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11568
11569         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
11570         to a few opcodes. Fixes #78439.
11571
11572         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
11573         consistency with other archs.
11574
11575         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
11576
11577 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11578
11579         * debug-debugger.c: fix the build.
11580
11581 2006-05-17  Martin Baulig  <martin@ximian.com>
11582
11583         * debug-debugger.c
11584         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
11585         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
11586         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
11587         (debugger_attach): Call GC_mono_debugger_add_all_threads().
11588
11589 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11590
11591         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
11592
11593 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11594
11595         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
11596         MONO_TYPE_GENERICINST.
11597         
11598         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
11599         MONO_TYPE_GENERICINST.
11600
11601 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
11604         #78325.
11605
11606 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
11607
11608         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
11609         mempool.
11610         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
11611
11612 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11613
11614         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
11615         mono_trace_cleanup ().
11616
11617         * iltests.il: Fix problem with the newly added test.
11618
11619         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
11620         due to register constraints, free up the previous hreg. Fixes #78314.
11621
11622         * iltests.il: Add new test for #78314.  
11623
11624         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
11625         Interlocked.Add. Fixes #78312.
11626
11627         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
11628         
11629 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * inssel.brg (mini_emit_virtual_call): Fix a warning.
11632
11633 2006-05-05  Martin Baulig  <martin@ximian.com>
11634
11635         * debug-mini.c (mono_debug_open_block): New method.
11636
11637         * mini-amd64.c
11638         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11639         the beginning of each basic block.
11640
11641         * mini-x86.c
11642         (mono_arch_output_basic_block): Call mono_debug_open_block() at
11643         the beginning of each basic block.
11644
11645 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11646
11647         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11648         default until I understand why they break the build on amd64.
11649
11650 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini.c (mini_cleanup): Call mono_cleanup ().
11653
11654         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
11655         errors.
11656
11657 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
11658
11659         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
11660         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
11661         default since all known bugs are fixed, and I cannot reproduce bug
11662         77944... I'm asking Matt Hargett to test again after this commit.
11663
11664 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
11665
11666         * mini-codegen.c: Fixed typo that thrashed inline.
11667
11668 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * dominators.c (compute_dominators): Avoid using a worklist since
11671         it is not correct in some cases. Instead, iterate over all bblocks as
11672         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
11673
11674 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11675
11676         * mini.c (mono_jit_compile_method_inner): Use
11677         mono_prepare_exception_from_error that resets the value
11678         internally.
11679
11680 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11681
11682         * mini.c: Move the mini_loader_error_to_exception to metadata. 
11683         
11684 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11685
11686         * aliasing.c: Fixed bug 78210.
11687
11688 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
11689
11690         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
11691         default until all their problems (or the ones they trigger) are fixed.
11692
11693 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
11694
11695         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
11696         
11697         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
11698         as loaded only after resolving patches since that could invoke the same method.
11699
11700         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
11701
11702         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
11703         functions.
11704
11705         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
11706         AOT loader.
11707
11708         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
11709         stack.
11710
11711         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
11712         made from AOT code through the PLT table.
11713
11714         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
11715         holding the plt offset when a call is made to the aot plt trampoline.
11716         
11717 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11718
11719         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
11720         amd64 AOT support.
11721
11722         * Makefile.am (common_sources): Fix build breakage.
11723
11724         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
11725         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
11726         intra-assembly calls if possible.
11727         
11728         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
11729
11730         * mini-trampolines.c: Handle PLT entries.
11731
11732         * mini.c: Avoid creating a GOT var for calls.
11733
11734         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
11735         from mscorlib code.
11736
11737         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
11738         from mscorlib code.
11739
11740         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
11741         AOT code.       
11742
11743         * mini.h: Bump AOT file format version.
11744         
11745         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
11746         covers more cases.
11747
11748 2006-04-25  Martin Baulig  <martin@ximian.com>
11749
11750         * driver.c: Disable copyprop, consprop and inline when running
11751         inside the debugger.
11752
11753 2006-04-25  Martin Baulig  <martin@ximian.com>
11754
11755         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
11756         with `get_current_thread' and added `detach'.
11757         (MonoDebuggerMetadataInfo): Added `thread_size',
11758         `thread_tid_offset', `thread_stack_ptr_offset' and
11759         `thread_end_stack_offset'.
11760
11761 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
11762
11763         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
11764         aot-runtime.c.
11765
11766         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
11767         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
11768
11769         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
11770
11771         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
11772
11773         * aot.c: Add support for ADJUSTED_IID.  
11774
11775 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11776
11777         * aot.c (emit_method_order): Don't align method_order_end.
11778
11779         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
11780         the interface ID changes.
11781
11782 2006-04-21  Dick Porter  <dick@ximian.com>
11783
11784         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
11785         cleaning up a thread.  Fixes the new part of bug 77470.
11786
11787 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
11788
11789         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
11790         to managed wrapper.
11791                      
11792 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11793
11794         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
11795         
11796         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
11797         SIGSEGV. Fixes #78072.
11798
11799         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
11800         unregister our SIGABRT handler.
11801
11802 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
11803
11804         * mini.c: Disabled inline where it can alter the call stack in a
11805         way visible from managed code.
11806         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
11807         default.
11808
11809 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
11810
11811         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
11812         on other platforms. Fixes #78089.
11813
11814 2006-04-13  Martin Baulig  <martin@ximian.com>
11815
11816         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
11817         determine whether we're inside the debugger.
11818
11819         * debug-debugger.h
11820         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
11821
11822 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
11825         handler clauses. Fixes #78024.
11826
11827         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
11828         in the CALL_MEMBASE opcodes. Fixes #78088.
11829         (mono_arch_get_vcall_slot_addr): Ditto.
11830
11831 2006-04-10  Martin Baulig  <martin@ximian.com>
11832
11833         * debug-debugger.c: The thread handling code has now been moved
11834         into ../metadata/threads.c.
11835
11836 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11837
11838         * driver.c (mono_main): Fix --with-gc=none build.
11839
11840         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
11841         (mono_spillvar_offset_float): Ditto.
11842         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
11843         hreg, not when its !global, since on ia64, there is a third category: stacked
11844         registers.      
11845
11846 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
11847
11848         * mini.c: set MonoInst->klass for load field address and a few other
11849         places.
11850
11851 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
11854
11855 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11856
11857         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
11858         the branch opt changes.
11859
11860 2006-04-06  Dick Porter  <dick@ximian.com>
11861
11862         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
11863         
11864         * wapihandles.c (mini_wapi_seminfo): 
11865         * driver.c (mono_main): Add semaphore info option
11866
11867 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11868
11869         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
11870         branch optimization changes. Fixes #78009.
11871
11872 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
11873
11874         * mini.c: ignore accessibility of methods in managed->native wrappers.
11875
11876 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11877
11878         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
11879         
11880         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
11881
11882 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * mini.c: Modify the branch optimizations to preserve the invariant that
11885         the entries inside the in_bb and out_bb arrays are unique.
11886         (mono_unlink_bblock): Avoid creation of new arrays.
11887
11888 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * mini.c (mono_unlink_bblock): Fix regression caused by previous
11891         change (#77992).
11892
11893 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
11894
11895         * mini.c (optimize_branches): Remove the "optimizations" in
11896         the cbranch1/cbranch2 -> branch cases which were causing several
11897         problems in the past. Fixes #77986.
11898
11899 2006-03-31  Chris Toshok  <toshok@ximian.com>
11900
11901         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
11902         default optimizations :(
11903
11904 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
11907         branch.
11908
11909 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
11910
11911         * local-propagation.c: Added comments to structs and removed
11912         "Mono" prefixes from local tree mover types.
11913
11914 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
11915
11916         * Makefile.am (arch_sources): Define this for each architecture so 
11917         libmono_la_SOURCES is defined in one place.
11918
11919 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11920
11921         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
11922         from handles/.
11923
11924 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
11925
11926         * driver.c: print the GC name supplied by configure.
11927
11928 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
11929
11930         * local-propagation.c: Added tree mover, and moved here all the
11931         local propagation code from mini.c
11932         * mini.c: Added support for treeprop, and moved all the local
11933         propagation code to local-propagation.c
11934         * mini.h: Added support for treeprop
11935         * driver.c: Added support for treeprop, enabled consprop, copyprop,
11936         treeprop, inline and deadce by default
11937         * Makefile.am: Added local-propagation.c
11938
11939 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
11940
11941         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
11942
11943 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
11944
11945         * debug-debugger.c: make it compile without the Boehm GC.
11946
11947 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11948
11949         * mini.c: fixed issue with mismatch when an icall is registered
11950         with multiple names but same address.
11951
11952 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11953
11954         * declsec.c, mini-exceptions.c: use write barrier to set reference
11955         fields of managed objects.
11956
11957 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
11960         (can_access_internals): Fix a warning.
11961
11962         * mini.c (print_method_from_ip): Rename this to 
11963         mono_print_method_from_ip so it gets exported.
11964
11965         * trace.c: Deal with strings inside StringBuilder's containing garbage
11966         and fix memory leaks. Fixes #77848.
11967
11968 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
11969
11970         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
11971         fixes #77787.
11972
11973 2006-03-16 Neale Ferguson <neale@sinenomine.net>
11974         
11975         * mini-s390.c: Remove OP_X86_TEST_NULL.
11976
11977 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
11978
11979         * mini.c: use the correct GetHashCode() for the moving collector.
11980
11981 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
11982
11983         * liveness.c: Regalloc spill cost tuning.
11984
11985 2006-03-15 Neale Ferguson <neale@sinenomine.net>
11986         
11987         * mini-s390x.h: Correct S390_LONG macro.
11988
11989         * mini-s390x.c: Cleanup unused code.
11990
11991 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11992
11993         * jit-icalls.h: New file.
11994
11995         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
11996         icalls and include that instead of including jit-icalls.c.
11997
11998         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
11999         OP_X86 opcodes.
12000
12001 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini.c: when checking for member accessibility, also check for
12004         friend assemblies and for explicit interface implementations.
12005
12006 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
12009
12010         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
12011
12012         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12013         common cases are done first.    
12014
12015         * mini-ops.h: Only define platform specific opcodes on the given platform.
12016
12017         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
12018         branch.
12019         
12020 2006-03-14  Martin Baulig  <martin@ximian.com>
12021
12022         Revert Paolo's change from r57348:
12023
12024         * mini.h: don't use gboolean for bitfields.
12025         * mini.c: verifier changes for fields and methods accessibility.
12026
12027 2006-03-13  Neale Ferguson <neale@sinenomine.net>
12028
12029         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
12030
12031         * mini-s390x.c: Fix conv_r_un.
12032
12033         * cpu-s390, cpu-s390x.md: Fix lengths.
12034
12035 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12036
12037         * mini.c: nested types have access to all the nesting
12038         levels, not just the enclosing types.
12039
12040 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12041
12042         * mini.c: added a few more verification checks.
12043
12044 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * liveness.c: Merge optimizations from the linear-il branch.
12047
12048 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12049
12050         * mini-ia64.c (emit_call): Add a comment.
12051
12052         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
12053
12054         * tramp-ia64.c: Fix some warnings.
12055
12056 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12057
12058         * mini.h: don't use gboolean for bitfields.
12059         * mini.c: verifier changes for fields and methods accessibility.
12060
12061 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12062
12063         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
12064         lazy icall wrapper changes.
12065
12066         * dominators.c: Replace all the dominator algorithms with faster
12067         ones from the linear-il branch.
12068
12069         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
12070         the mempool.
12071
12072         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
12073         common cases are done first.
12074
12075         * mini-amd64.c: Fix some warnings.
12076
12077         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
12078         from the mempool.
12079
12080         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
12081         added code.
12082
12083         * mini.h: Add a missing prototype.
12084
12085 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * mini.c: Compile icall wrappers lazily.
12088
12089         * mini-codegen.c: Use printf instead of g_print since its much faster.
12090
12091         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
12092         function.
12093
12094         * mini.c (optimize_branches): Cache the negative result from 
12095         remove_block_if_useless ().
12096
12097         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
12098         Also fix some bblock linking issues.
12099
12100         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
12101         assembly files.
12102
12103         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
12104
12105         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
12106         accessed fields first, for better cache behavior.
12107         
12108 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12109
12110         * mini.c: speedup IList<T> array accesses.
12111
12112 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12113
12114         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
12115         inline_costs counter. Fixes #77190.
12116
12117 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
12118
12119         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
12120         trace messages. Fixes #77706.
12121
12122 2006-03-04  Martin Baulig  <martin@ximian.com>
12123
12124         * tramp-amd64.c, tramp-x86.c
12125         (mono_debugger_create_notification_function): Use
12126         mono_global_codeman_reserve() to allocate a buffer at runtime and
12127         return it.
12128
12129         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
12130
12131         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
12132         notification function at runtime and then call `initialize' in the
12133         `MONO_DEBUGGER__debugger_info' vtable.
12134
12135 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12136
12137         * iltests.il: Fix a visibility problem.
12138
12139 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12140
12141         * driver.c, mini.c: add hooks for the counters API.
12142
12143 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
12144
12145         * driver.c: show disabled options.
12146
12147 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12148
12149         * linear-scan.c: always use cost-driven selection.
12150
12151 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12152
12153         * jit-icalls.c (helper_compile_generic_method): Revert change from
12154         2006-02-24.
12155
12156 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
12157
12158         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
12159
12160 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12161
12162         * inssel.brg: style fixes, mostly to force the updated monoburg
12163         to run for people using svn.
12164
12165 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12166
12167         * mini.c: match monoburg changes.
12168
12169 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12170
12171         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
12172         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
12173         declaration in the header file.
12174
12175 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12176
12177         * helpers.c: reduce relocations and mem usage.
12178
12179 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12180
12181         * mini.h, mini-codegen.c: disable logging features if
12182         requested by configure.
12183
12184 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
12185
12186         * mini.c: tiny verifier changes.
12187
12188 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12189
12190         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
12191         cpu-pentium.md: stack alignment changes for osx/x86,
12192         partially from Geoff Norton <gnorton@customerdna.com>.
12193
12194 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12195
12196         * jit-icalls.c (helper_compile_generic_method): Update to changes
12197         in metadata/class.c.
12198
12199 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12200         
12201         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
12202         
12203         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
12204         interface calls with large offsets.
12205
12206 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12207
12208         * jit-icalls.c (helper_compile_generic_method): Document the
12209         special-case we depend on so that we can inflate the method twice
12210         with the same context with no bad side-effects.
12211
12212 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12213
12214         * mini-x86.c, mini-amd64.c: fix for case when xen support
12215         is disabled.
12216
12217 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12218
12219         * mini-x86.c, mini-amd64.c: generate code to access tls items
12220         in a faster way for Xen systems.
12221
12222 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12223
12224         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
12225         updates and compilation fixes for the OSX/x86 port, mostly from
12226         Geoff Norton <gnorton@customerdna.com>.
12227
12228 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12229
12230         * inssel.brg: faster interface call implementation
12231         to sync with the interface_offsets MonoVTable changes.
12232
12233 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12234
12235         * mini.c: more verification checks.
12236
12237 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
12238
12239         * mini.c: added a few more verification checks.
12240
12241 2006-02-17      Neale Ferguson <neale@sinenomine.net>
12242
12243         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
12244         facility on the processor and use it if available.
12245
12246 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12247
12248         * driver.c, aot.c, mini.c: throw exception if the IL code is
12249         invalid or unverifiable.
12250
12251 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12252
12253         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
12254         m.StructField.
12255
12256 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
12257
12258         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
12259
12260 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12261
12262         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
12263         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
12264         handling of instantiated generic valuetypes.
12265
12266 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12267
12268         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
12269         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
12270         instead.
12271
12272         * generics.2.cs: Revert the nullable reftypes tests.
12273
12274 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
12277         using __builtin_frame_address (1) as it doesn't work in the presence
12278         of optimizations. Hopefully fixes #77273.
12279
12280         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
12281         -> generics.cs change as it doesn't work with some automake versions.
12282
12283 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12284
12285         * mini.c: handle systems that sue a different way to
12286         retrieve the stack address of the current thread.
12287
12288 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
12291         it specially in the makefile.
12292
12293         * generics.2.cs: Add tests for nullable reference types.
12294
12295 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12296
12297         * mini.c: always handle the case when mono_jit_init()
12298         is called in a thread different from the main thread,
12299         confusing libgc (bug #77309).
12300
12301 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
12302
12303         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
12304
12305 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12306
12307         * mini.c: change optimize_branches () to use a single loop
12308         and introduce a new optimization to simplify some range checks.
12309
12310 2006-02-03  Martin Baulig  <martin@ximian.com>
12311
12312         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
12313         and merged with debugger_thread_manager_add_thread().
12314         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
12315         inform the debugger about the main thread.
12316
12317 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12318
12319         * basic.cs: Add test for div.un/rem.un constant folding.
12320
12321 2006-02-03  Neale Ferguson <neale@sinenomine.net>
12322
12323         * cpu-s390x.md: correct int_xor_imm length
12324
12325 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * generics.2.cs: New test for #77442.
12328
12329         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
12330         #77442.
12331
12332 2006-02-02  Martin Baulig  <martin@ximian.com>
12333
12334         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
12335         <mono/metadata/mono-debug-debugger.h>   
12336
12337         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
12338
12339 2006-02-02  Martin Baulig  <martin@ximian.com>
12340
12341         * debug-debugger.h: New header file for debug-debugger.c.
12342
12343         * debug-debugger.c: Big API cleanup; don't run the managed Main()
12344         function is a separate thread anymore; add support for attaching.
12345
12346 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12347
12348         * tramp-x86.c: Fix a warning.
12349
12350 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12351
12352         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
12353         on very large methods.
12354
12355         * aot.c (load_patch_info): Fix a warning.
12356
12357 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12358
12359         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
12360         mini-ops.h: alu membase optimizations.
12361
12362 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
12363
12364         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
12365         to speedup StringBuilder.
12366
12367 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * dominators.c (mono_compute_natural_loops): Fix detection of
12370         loop body start blocks.
12371
12372         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
12373
12374 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12375
12376         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
12377         #75145.
12378
12379 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
12380
12381         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12382
12383 2006-01-25  Martin Baulig  <martin@ximian.com>
12384
12385         * debug-debugger.c: Moved the `MonoDebuggerManager' and
12386         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
12387         started to cleanup this file a little bit.
12388
12389 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
12390
12391         * mini.c: optimize a codepath frequently happening in generics code.
12392
12393 2006-01-23  Martin Baulig  <martin@ximian.com>
12394
12395         * Makefile.am: Only compile debug-debugger.c on supported platforms.
12396
12397         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
12398         functions directly.
12399
12400         * driver.c: debug-debugger.c is only available if
12401         `MONO_DEBUGGER_SUPPORTED' is defined.   
12402
12403 2006-01-23  Martin Baulig  <martin@ximian.com>
12404
12405         * debug-debugger.c: Only enable this on platforms where the Mono
12406         Debugger is working (x86 and x86_64).
12407
12408 2006-01-21  Martin Baulig  <martin@ximian.com>
12409
12410         The Mono Debugger is now using the normal `mono' instead of the
12411         `mono-debugger-mini-wrapper' when executing managed code.
12412
12413         * debug-debugger.c: New file; previously known as
12414         debugger/wrapper/wrapper.c.
12415
12416         * debug-mini.c (mono_init_debugger): Removed.
12417
12418         * driver.c (mono_main): Added new `--inside-mdb' command line
12419         argument which is used when running inside the debugger.
12420
12421 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
12422
12423         * liveness.c (mono_analyze_liveness): Remove some unused data
12424         structures.
12425
12426 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
12429
12430 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
12433         depends on implementation details of monobitset.
12434
12435         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
12436         Fixes #77271.
12437
12438 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * liveness.c: Update after monobitset changes.
12441
12442 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
12443
12444         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
12445
12446 2006-01-11 Neale Ferguson <neale@sinenomine.net>
12447
12448         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
12449
12450         * mini-s390x.c: Remove warning messages.
12451
12452 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12453
12454         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
12455
12456 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * generics.2.cs: Add ldelem/stelem_any test.
12459
12460 2006-01-10 Neale Ferguson <neale@sinenomine.net>
12461
12462         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
12463
12464 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
12467         
12468 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
12469
12470         * generics.2.cs: Reenable vtype tests.
12471
12472         * inssel-x86.brg: Remove an icorrect valuetype rule.
12473
12474 2006-01-06 Neale Ferguson <neale@sinenomine.net>
12475
12476         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
12477         initial support for OP_ABS.
12478
12479 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12480
12481         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
12482
12483 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12484
12485         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
12486         conversion and implement LADD/LSUB.
12487
12488         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
12489         architectures.
12490
12491 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12492
12493         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
12494
12495         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
12496         architectures.
12497
12498 2006-01-05 Neale Ferguson <neale@sinenomine.net>
12499
12500         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
12501         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
12502         (stack walk problem).
12503
12504 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * aot.c (mono_aot_load_method): Fix a warning.
12507
12508 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12509
12510         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
12511
12512 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12513
12514         * iltests.il: Add test for #77148.
12515
12516         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
12517         #77148.
12518
12519 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12520
12521         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
12522
12523 2006-01-03  Neale Ferguson <neale@sinenomine.net>
12524
12525         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
12526         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
12527
12528         * basic-long.cs: Add lconv-to-r4/r8 tests.
12529
12530 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12531
12532         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
12533
12534         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
12535         here as on other archs.
12536
12537 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12538
12539         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
12540
12541 2005-12-29 Neale Ferguson <neale@sinenomine.net>
12542
12543         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
12544         
12545         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
12546
12547         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
12548         instrument_prolog; Add memory_barrier instruction.
12549
12550 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
12551
12552         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
12553
12554 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
12557
12558         * aliasing.c inssel.brg: Fix warnings.
12559
12560         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
12561         could skip initialization of some parts of memory.
12562
12563         * mini.c mini-ia64.c: Fix warnings.
12564
12565         * inssel-sparc.brg: Add an implementation of lneg which actually works.
12566
12567 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12568
12569         * aliasing.c (mono_build_aliasing_information): Add a workaround for
12570         a crash seen on sparc.
12571
12572         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
12573         
12574         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
12575
12576 2005-12-21 Neale Ferguson <neale@sinenomine.net>
12577
12578         * mini-ops.h: Add s390_backchain instruction
12579
12580         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
12581
12582         * cpu-s390.md: Add s390_backchain instruction
12583
12584         * mini-s390.c: Significant ABI changes
12585
12586         * mini-s390.h: Cater for zero length structures
12587
12588 2005-12-20 Neale Ferguson <neale@sinenomine.net>
12589
12590         * mini-s390.c: ABI fixes
12591
12592         * inssel-s390.brg: Remove debug statements
12593
12594         * cpu-s390.md: Fix length of ATOMIC_xx operations
12595
12596 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * basic-float.cs: Add float<->long conversion tests.
12599
12600 2005-12-16 Neale Ferguson <neale@sinenomine.net>
12601
12602         * mini-s390.c: Fix LOCALLOC processing.
12603
12604         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
12605
12606 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * iltests.il: Add tests for some opcodes not covered by the other
12609         tests.
12610
12611 2005-12-15 Neale Ferguson <neale@sinenomine.net>
12612
12613         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
12614         register loading for Tail processing; Correct trace output.
12615
12616         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
12617
12618         * cpu-s390.md: Correct size of jmp instruction. 
12619
12620 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12621
12622         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
12623
12624 2005-12-13 Neale Ferguson <neale@sinenomine.net>
12625
12626         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
12627           Bring s390 up to current level.
12628
12629 2005-12-12  Zltan Varga  <vargaz@gmail.com>
12630
12631         * generics.2.cs: Disable the newly added tests as they do not work yet.
12632         
12633         * generics.2.cs: Add valuetype tests.
12634
12635 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * basic-long.cs: Add i4->u8 test.
12638
12639         * objects.cs: Add tests for JIT intrinsic.
12640
12641         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
12642         optimizations lost by a mistake.
12643
12644 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * basic-long.cs: Remove a test moved to objects.cs.
12647
12648         * arrays.cs: Add more array tests.
12649
12650 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12651
12652         * arrays.cs: Add new tests for multi-dimensional arrays.
12653
12654 2005-12-06  Raja R Harinath  <rharinath@novell.com>
12655
12656         * Makefile.am (test_sources2): Add generics.2.cs.
12657         (EXTRA_DIST): Add test_sources2.
12658
12659 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12660
12661         Support for boxing and unboxing nullable types as well as the
12662         isinst operation on nullables, per the CLI ammendment.
12663
12664         * inssel.brg (CEE_ISINST): Special case for nullable
12665
12666         * mini.c (handle_unbox_nullable): new method
12667         (handle_box): Special case for nullable types
12668         (mono_method_to_ir): Call handle_unbox_nullable in correct
12669         places.
12670
12671         * generics.2.cs: New test suite
12672
12673         * Makefile.am: Support for regression tests with generics.
12674
12675 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
12676
12677         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
12678         allocated to registers. Fixes #76800.
12679
12680 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
12681
12682         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
12683
12684 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
12687         of platforms.
12688
12689 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
12692         objects.cs.
12693
12694         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
12695         
12696         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
12697 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
12698
12699         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
12700         single precision before storing to a single precision location.
12701
12702 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12703
12704         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
12705
12706 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
12709         correct files.
12710
12711         * basic.cs: Remove test_0_byte_compares test which was moved to
12712         objects.cs a long time ago.
12713
12714 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
12715
12716         * aliasing.c: Fixed aliasing issue on 64 bit archs.
12717
12718 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
12719
12720         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
12721         handlers are called.
12722
12723         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
12724         throwing code.
12725
12726          * mini-ia64.c: Add support for the throw->branch exception 
12727         optimization.   
12728
12729         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
12730
12731 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12732
12733         * mini.c: Enabled "fastpath" deadce :-)
12734         
12735 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
12736
12737         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
12738         alias analysis pass to support it.
12739         * mini.h: Likewise.
12740         * ssa.c: Likewise.
12741         * liveness.c: Likewise (liveness computation can use aliasing
12742         information to be more accurate).
12743         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
12744         moreover made so that "--compile-all" uses the given optimization
12745         flags and not the default ones.
12746         * aliasing.c: Alias analysis (new file).
12747         * aliasing.h: Likewise.
12748         * Makefile.am: added "aliasing.c" and "aliasing.h".
12749         
12750 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
12753         OP_L opcodes.
12754
12755 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
12758         fp >= end_of_stack exit condition, as it is not needed, and it might
12759         become true for fp eliminated frames.
12760
12761 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12762
12763         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
12764         coded offsets.
12765
12766 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
12767
12768         * mini-arm.c: fixed alignment of doubles/longs to match
12769         the C ABI (bug #76635).
12770
12771 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
12772
12773         * aot.c: fix compilation with --enable-minimal=aot.
12774
12775 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
12776
12777         * mini-arm.c: fixed compatibility with the new
12778         floating point emulator package for compares.
12779
12780 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
12781
12782         * mini.c : reverted sig->pinvoke changes (r51396-51397).
12783
12784 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
12785
12786         * mini-exceptions.c (print_stack_frame): Output to stderr.
12787         (mono_handle_native_sigsegv): Ditto.
12788
12789 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12790
12791         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
12792         OP_LCONV_TO_OVF_I implementation.
12793
12794         * mini-amd64.c: Add support for the throw->branch exception 
12795         optimization.
12796
12797         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
12798         when the catch clause catches a more general exception, i.e. Object.
12799
12800 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
12801
12802         * cpu-ia64.md: Remove unused opcodes.
12803
12804         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
12805         specific defines for architectures defining USE_SIGACTION.
12806
12807         * mini-ia64.c: Fix some warnings.
12808
12809         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
12810         version seemed to skip a frame.
12811
12812 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12813
12814         * mini.c: Clean up the usage of sig->pinvoke flag. Now
12815         only calls which are made to native code use this flag.
12816
12817 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12818
12819         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
12820         varargs methods as well.
12821         
12822         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
12823         which have save_lmf set. Reorganize methods prologs a bit.
12824
12825         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
12826         debugger to the proper place.
12827
12828 2005-10-29  Martin Baulig  <martin@ximian.com>
12829
12830         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
12831         when running inside the debugger until the debugger has support
12832         for it.
12833
12834 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * mini.h: Fix a warning.
12837
12838 2005-10-24  Miguel de Icaza  <miguel@novell.com>
12839
12840         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
12841         we expose publicly, this returns the string.
12842
12843 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
12844
12845         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
12846         with fp elimination.
12847
12848 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12849
12850         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
12851         native stacktrace using the glibc 'backtrace' function if available.
12852
12853 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
12854
12855         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
12856
12857         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
12858         handle SIGSEGVs received while in native code.
12859
12860         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
12861         code, call mono_handle_native_sigsegv which will abort the runtime
12862         after printing some diagnostics, instead of converting it into a
12863         confusing NullReferenceException.
12864
12865 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12866
12867         * cpu-pentium.md: Remove unused opcodes.
12868
12869 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
12870
12871         * mini-amd64.h (MonoLMF): Add rsp field.
12872
12873         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
12874         the lmf too.
12875
12876 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
12877
12878         * mini-codegen.c (get_register_spilling): Fix some warnings.
12879
12880 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
12881
12882         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
12883         elimination during exception handling. Enable fp elimination by
12884         default.
12885
12886         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
12887         elimination.
12888
12889 2005-10-16  Martin Baulig  <martin@ximian.com>
12890
12891         * mini-exceptions.c
12892         (mono_debugger_run_finally): New public method for the debugger.
12893
12894 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12895
12896         * debug-mini.c (mono_debug_init_method): Fix warning.
12897
12898         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
12899         the 'exname' parameter const to fix some warnings.
12900
12901 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
12902
12903         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
12904         introduced by the previous patch.
12905
12906 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * basic-float.cs: Add test for precision of float arithmetic.
12909
12910         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
12911         when loading/storing single values from/to memory.
12912
12913         * mini.c (mono_jit_compile_method_with_opt): Create the function
12914         pointers in the correct domain.
12915
12916 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12917
12918         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
12919         introduced by previous patch.
12920         
12921         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
12922         when out_filter_idx is NULL.
12923
12924         * mini-exceptions.c: Don't run filter clauses twice during exception
12925         handling. Fixes #75755.
12926
12927 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * aot.c: Add support for ldflda wrappers.
12930
12931         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
12932         #75902.
12933
12934 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
12935
12936         * mini.c, mini.h: do not consider exception handlers blocks when
12937         setting up interface variables.
12938
12939 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
12940
12941         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
12942
12943 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
12946         causes a regression.
12947
12948         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
12949
12950 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
12951
12952         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
12953         of the OP_P definitions.
12954
12955         * TODO: Add a proposal for dealing with the CEE/OP mess.
12956
12957         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
12958         optimizations from the x86 port.
12959
12960         * cpu-amd64.md: Ditto.
12961
12962         * basic.cs basic-long.cs: Add tests.
12963
12964 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
12965
12966         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
12967         Patrik Torstensson's implementation of my exception-handling
12968         optimization idea, when the exception object is not used
12969         (bug #62150).
12970
12971 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
12972
12973         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
12974         of the mul_imm optimizations from the old jit.
12975
12976 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
12977
12978         * mini.c, liveness.c: patch by Patrik Torstensson and
12979         Zoltan Varga to improve performance in methods with
12980         exception clauses.
12981
12982 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12983
12984         * driver.c: Remove 'Globalization' entry from --version.
12985
12986 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
12989         there is a profiler interested in JIT events.
12990
12991         * aot.c: Load profile files produced by the AOT profiling module, and
12992         reorder methods based on the profiling info. Add a 'method_order' table
12993         to the AOT file to make mono_aot_find_jit_info work with the reordered
12994         methods.
12995
12996         * mini.h: Bump AOT file version info.
12997
12998 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
12999
13000         * mini-arm.h: work around what looks like a gcc bug when optimizations
13001         are enabled.
13002
13003 2005-09-28  Raja R Harinath  <rharinath@novell.com>
13004
13005         * Makefile.am (AM_CFLAGS): Don't use += to append inside
13006         conditionals.  Use ...
13007         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
13008
13009 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
13010
13011         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
13012         to determine the amount of memory to copy when passing valuetypes.
13013
13014         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
13015         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
13016
13017 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
13020         information about aot.
13021
13022 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13023
13024         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13025         macros. This will allow a deadlock debugger to easily be plugged
13026         in.
13027
13028 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
13029
13030         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
13031
13032 2005-09-27  Raja R Harinath  <rharinath@novell.com>
13033
13034         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
13035         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
13036         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
13037         ($(arch_built)) [CROSS_COMPILING]: Error out.
13038
13039 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * aot.c: Add support for the no_special_static flag for classes.
13042
13043 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13044
13045         * Reapply reverted patches.
13046
13047         * *: Revert r50174 as well.
13048
13049         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
13050
13051 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13052
13053         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
13054
13055 2005-09-23  Miguel de Icaza  <miguel@novell.com>
13056
13057         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
13058         part of the SIG_HANDLER_SIGNATURE.  
13059
13060 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13061
13062         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
13063         statistics.
13064
13065         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
13066         introduced by previous patch.
13067
13068 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
13071         saved registers too.
13072
13073         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
13074         upon the information returned by get_call_info ().
13075         
13076         * mini-x86.c (add_float): Fix stack size calculation.
13077         (mono_arch_call_opcode): Rewrite this so it works based up the
13078         information returned by get_call_info ().
13079         (mono_arch_get_this_vret_args): Ditto.
13080
13081 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
13082
13083         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
13084         in cinfo to determine the registers which need to be used.
13085
13086 2005-09-20  Miguel de Icaza  <miguel@novell.com>
13087
13088         * driver.c (mono_main): Add --server and --desktop flags. 
13089
13090 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
13091
13092         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
13093         registers as global registers.
13094
13095         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
13096         longer needed with the new register allocator.
13097
13098         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
13099
13100         * cpu-ia64.md: Remove unused opcodes.
13101         
13102         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
13103         
13104 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
13105
13106         * cpu-amd64.md: Remove unused opcodes.
13107
13108         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
13109         needed with the new register allocator.
13110
13111         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
13112         reg-reg moves.
13113
13114 2005-09-16  Raja R Harinath  <rharinath@novell.com>
13115
13116         * Makefile.am (check-local): Don't invoke semdel-wrapper.
13117
13118 2005-09-16  Martin Baulig  <martin@ximian.com>
13119
13120         * exceptions-amd64.c
13121         (throw_exception): Don't call mono_debugger_throw_exception() if
13122         we're a rethrow - see the FIXME in the code.
13123
13124 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
13125
13126         * mini.c (mono_init_exceptions): This only works on some architectures.
13127         
13128 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
13131         on ia64.
13132
13133         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
13134
13135         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
13136         now in mini-exceptions.c.
13137
13138 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
13139
13140         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
13141         now in mini-exceptions.c.
13142
13143 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * exceptions-x86.c: Applied patch from Patrik Torstensson 
13146         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
13147
13148         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
13149         code into mini-exceptions.c. Add some assertions to it.
13150
13151 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * aot.c (emit_section_change): Applied patch from "The Software Team" 
13154         (<software@solmersa.com>). Fix as errors on windows.
13155
13156 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13157
13158         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
13159         method info into the LMF.
13160
13161 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13162         
13163         * mini-ia64.c: Add proper unwind info for method epilogs.
13164
13165         * exceptions-ia64.c: Add some code to help debugging.
13166         
13167         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
13168
13169         * mini-exceptions.c: Fix warning.
13170
13171 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
13172
13173         * mini.c: Really fix build.
13174
13175         * mini-x86.c mini-amd64.c: Fix build.
13176
13177 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
13180
13181         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
13182         some Interlocked methods as intrinsics.
13183
13184         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
13185         for Thread methods as well.
13186
13187         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
13188
13189         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
13190
13191         * mini-ia64.c mini-x86.c mini-amd64.c 
13192         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
13193         OP_MEMORY_BARRIER.
13194         
13195         * mini.c (mono_init_exceptions): Fix build breakage.
13196
13197 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
13198
13199         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
13200         of instructions. Use the new ia64_unw_op macros for emitting unwind
13201         info.
13202
13203         * mini.c (mono_init_exceptions): Initialize exception handling
13204         related trampolines at startup.
13205
13206 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
13207
13208         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
13209
13210 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * mini.c: Handle type loading errors gracefully during compilation and
13213         throw the appropriate exception.
13214
13215 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
13216
13217         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
13218         for the mono binary.
13219
13220 2005-09-09  Martin Baulig  <martin@ximian.com>
13221
13222         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
13223         the release.
13224
13225 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13226
13227         * mini-arm.h: use emulation for conv.r.un for the release.
13228
13229 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
13230
13231         * mini-arm.c, objects.cs: more fixes and tests for them.
13232
13233 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13234
13235         * mini-arm.c: align structures to at least 4 bytes to be able
13236         to keep our current optimized memcpy.
13237
13238 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
13239
13240         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
13241
13242 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13243
13244         * mini.c: ignore SIGPIPE.
13245
13246 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
13247
13248         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
13249
13250         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
13251
13252 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * mini.h: Add prototype for mono_allocate_stack_slots_full.
13255
13256 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
13257
13258         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
13259         exception handling support.
13260         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
13261         patch by Brian Koropoff <briank@marakicorp.com>).
13262
13263 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini.c: revert another 'optimization' which breaks when
13266         items on the eval stack need to be saved at a basic block end
13267         (bug #75940).
13268
13269 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
13270
13271         * jit-icalls.c: for arrays, ensure we always provide
13272         lower bounds.
13273
13274 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
13277         
13278         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
13279
13280 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
13283         arguments in their original register.
13284
13285 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
13288         memset/memcpy.
13289
13290         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
13291         when ssapre is enabled.
13292
13293         * inssel-long.brg: Fix bug in previous patch.
13294
13295         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
13296         multiplication by a constant.
13297
13298 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
13301         icc.
13302
13303         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
13304         saving registers.
13305
13306 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
13307
13308         * inssel-arm.brg: apply changes tested by Brian Koropoff
13309         <briank@marakicorp.com>.
13310
13311 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
13314         
13315 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
13318         to the same register if dreg is just a base register.
13319         (print_ins): Improve printing of membase opcodes.
13320
13321         * inssel-x86.brg: Add optimized ldind(reg) rules.
13322
13323         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
13324
13325 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
13326
13327         * mini.c: when running under valgrind, set the stack bottom for
13328         the GC at the actual approximate stack for the app (fixes running
13329         mono with valgrind).
13330
13331 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
13332
13333         * mini.c: do no break at the first valuetype to init found
13334         (fixes bug #75791).
13335
13336 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
13337
13338         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
13339
13340 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
13341
13342         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
13343
13344 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
13345
13346         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
13347
13348 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13349
13350         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
13351
13352         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
13353         code.
13354
13355         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
13356         code.
13357
13358         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
13359         methods.
13360
13361 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
13362
13363         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
13364
13365 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13366
13367         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
13368         in the tail recursion optimization.
13369
13370         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
13371         debug info into the assembly file.
13372
13373         * iltests.il: Add test for filter regions.
13374
13375         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
13376         initial stack of filter regions. Fixes #75755.
13377
13378 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
13379
13380         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
13381         stack requirements.
13382
13383 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13384
13385         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
13386         the check for an already compiled method on non-ia64 platforms.
13387         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
13388         proper domain.
13389
13390         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
13391
13392         * inssel-x86.brg: Add some optimized call rules.
13393
13394 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13395
13396         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
13397         method here.
13398
13399         * mini.h mini-trampolines.c: Pass the trampoline argument to 
13400         mono_arch_patch_delegate_trampoline.
13401
13402         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
13403
13404         * mini-trampolines.c: Fix build.
13405
13406         * mini-amd64.h: Add delegate trampolines.
13407
13408         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
13409
13410         * inssel-amd64.brg: Add optimized call rules.
13411         
13412         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
13413
13414         * inssel-ia64.brg: Add optimized ldind(reg) rules.
13415
13416 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13417
13418         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
13419         change.
13420
13421         * mini-ia64.c: Remove LMF fixmes.
13422
13423         * mini-ia64.h: Remove most fields from LMF.
13424
13425         * inssel-ia64.brg (stmt): Fix unaligned access errors.
13426
13427         * mini-trampolines.c: Add support for IA64 function descriptors.
13428
13429         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
13430         for IA64 function descriptors.
13431
13432 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
13433
13434         * tramp-arm.c: patch the vtable for virtual calls. Added
13435         support code to register/unregister the LMF.
13436         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
13437         more LMF work.
13438
13439 2005-08-19  Dick Porter  <dick@ximian.com>
13440
13441         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
13442         bit value if needed.
13443
13444 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13445
13446         * mini.c (mini_get_method): Move handling of wrapper data here.
13447
13448         * mini.c (mono_method_to_ir): Add support for dynamic methods.
13449
13450         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
13451         virtual.
13452
13453         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
13454         bblock->code does not remain empty.
13455
13456 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
13457
13458         * arrays.cs: Add regression test for #75832.
13459
13460         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
13461         rules. Fixes #75832.
13462
13463         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
13464         instruction scheduling.
13465
13466 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
13467
13468         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
13469
13470 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13471
13472         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
13473
13474         * mini-codegen.c: Fix VC build.
13475
13476         * cpu-pentium.md: Increase length of atomic_exhange_i4.
13477
13478 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13479
13480         * mini.h: fix signature for mono_register_opcode_emulation.
13481
13482 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
13483
13484         * mini.c: Get rid of most of the helper_sig_... constants using
13485         mono_create_icall_signature ().
13486
13487 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13488
13489         * jit-icalls.c (helper_ldstr): New helper function.
13490
13491         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
13492
13493         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
13494         throw, load the string using a helper call instead of creating a string object.
13495
13496         * aot.c: Update after LDSTR changes.
13497
13498         * mini.h: Bump AOT file version.
13499         
13500         * aot.c: Save class size info into the AOT file. Print more statistics during
13501         compilation.
13502
13503         * mini.h: Bump AOT file version.
13504
13505         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13506         ordering of disasm cases. Fixes #74957.
13507
13508 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
13509
13510         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
13511         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
13512         the generic code needed for the ARM port.
13513
13514 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
13515
13516         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
13517         inssel-arm.brg: more ARM features and fixes.
13518
13519 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
13520
13521         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
13522         ARM port work in progress.
13523
13524 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13525
13526         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
13527
13528         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
13529
13530         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
13531
13532         * inssel.brg (mini_emit_memset): Add support for unaligned access.
13533
13534         * *-ia64.*: Ongoing IA64 work.
13535         
13536         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
13537
13538 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13539
13540         * TODO: Remove out-of-data todo stuff.
13541
13542         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
13543         dead code.
13544
13545         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
13546
13547         * mini.h: Bump corlib version.
13548
13549 2005-07-27  Martin Baulig  <martin@ximian.com>
13550
13551         * mini-codegen.c
13552         (create_copy_ins): Added `const unsigned char *ip' argument; set
13553         `copy->cil_code' from it.
13554
13555 2005-07-27  Martin Baulig  <martin@ximian.com>
13556
13557         * mini-exceptions.c (mono_handle_exception): Don't call
13558         mono_debugger_handle_exception() for filters.
13559
13560 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
13561
13562         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
13563         as well.
13564
13565 2005-07-26  Martin Baulig  <martin@ximian.com>
13566
13567         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
13568
13569         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
13570         helper_compile_generic_method() if the method is actually virtual
13571         and non-final.
13572
13573 2005-07-26  Martin Baulig  <martin@ximian.com>
13574
13575         * mini.c
13576         (trampoline_code): Renamed to `mono_trampoline_code' and made it
13577         public; this is now accessed directly by the debugger.
13578         (mono_generic_trampoline_code): Removed.
13579
13580         * debug-mini.c
13581         (mono_debug_init_method): Also add interncalls and wrappers.
13582
13583 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
13584
13585         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
13586
13587 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13588
13589         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
13590
13591 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13592
13593         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
13594
13595 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13596
13597         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
13598         getting TLS offsets on AMD64 too.
13599
13600 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
13601
13602         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
13603
13604 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
13605
13606         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
13607         inssel-arm.brg, mini-arm.h: ARM port work in progress.
13608
13609 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13610
13611         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
13612
13613         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
13614         to mini.c.
13615
13616         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
13617         mono_sparc_is_virtual_call ().
13618         
13619         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
13620
13621         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
13622         trampoline parameters.
13623
13624         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
13625         
13626         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
13627         to mono_arch_get_vcall_slot_addr.
13628
13629         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
13630         trampoline code.
13631
13632         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
13633
13634 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13635
13636         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
13637
13638 2005-07-19  Martin Baulig  <martin@ximian.com>
13639
13640         * exceptions-amd64.c (throw_exception): Call
13641         mono_debugger_throw_exception() here like we're doing it on i386.
13642
13643 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
13644
13645         * mini-ia64.c: Add optimized TLS access support.
13646
13647 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
13648
13649         * mini-exceptions.c: Ongoing IA64 work.
13650
13651         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
13652
13653         * mini.c: Use the default optimization set when embedding. Fixes
13654         #75194.
13655
13656 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
13657
13658         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
13659         of trampolines to a separate file.
13660
13661         * mini-trampolines.c: New file.
13662
13663         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
13664         separate file.
13665         
13666         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
13667         amd64/ia64 code.
13668
13669         * mini-codegen.c: Fix cygwin build.
13670
13671 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
13672
13673         * mini.c: Add some minor changes needed by the IA64 port.
13674
13675         * *-ia64.*: Ongoing IA64 work.
13676
13677 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
13678
13679         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
13680         trampolines into arch-independent and arch-dependent parts.
13681
13682         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
13683
13684 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
13685
13686         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
13687
13688         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
13689         the xp-regalloc-branch for amd64.
13690
13691         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
13692         xp-regalloc-branch for x86.
13693
13694 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13695
13696         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
13697
13698 2005-07-06  Martin Baulig  <martin@ximian.com>
13699
13700         * mini.c
13701         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
13702         (mono_jit_runtime_invoke): Likewise.
13703
13704 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13705
13706         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
13707         on x86 too.
13708         
13709         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
13710         without loading their metadata. Reorganize the file format so exception handling+
13711         debug info is kept separate from normal method info. Create MonoJitInfo 
13712         structures for methods lazily.
13713
13714         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
13715         loading metadata.
13716         (x86_class_init_trampoline): Patch AOT class init trampolines too.
13717
13718         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
13719
13720         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
13721         in AOT code.
13722
13723         * mini.h: Bump AOT file version.
13724
13725 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
13726
13727         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13728
13729 2005-07-01  Raja R Harinath  <rharinath@novell.com>
13730
13731         * Makefile.am (check-local): Call semdel-wrapper.
13732
13733 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
13734
13735         * mini-x86.c: Revert the last change as it seems to break the build..
13736
13737 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13738
13739         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
13740         
13741         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
13742
13743 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
13744
13745         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
13746         outside of the macro, so strange stuff doesn't happen with gcc4
13747         (NEW_AOTCONST_TOKEN): Likewise.
13748
13749 2005-06-28  Martin Baulig  <martin@ximian.com>
13750
13751         * mini.c (mini_class_is_system_array): New static method; use this
13752         instead of `klass->parent == mono_defaults.array_class' everywhere
13753         since this also works for the new generic array class.
13754
13755 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13756
13757         * inssel.brg: Remove warnings.
13758
13759 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
13760
13761         * mini-ia64.c: Ongoing IA64 work.
13762
13763         * basic-float.cs: Add float->i1 conversion test.
13764
13765         * iltests.il: Add conv.u4 test.
13766
13767 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
13768
13769         * inssel-long.brg: Fix bug caused by last change.
13770
13771 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
13772
13773         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
13774         BSDs.  Allows the x86 JIT to work on OSX86
13775
13776 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
13777
13778         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
13779         u4->i8 conversion.
13780
13781         * mini-ia64.c: Ongoing IA64 work.
13782
13783 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13784
13785         * mini-ia64.c: Ongoing IA64 work.
13786
13787         * driver.c: Clean up jit_code_hash as well when using --regression.
13788
13789         * inssel-long.brg: Fix long->i4/u4 conversion rules.
13790
13791         * basic-long.cs: Add tests for long->u4 conversion.
13792
13793 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
13794
13795         * mini.c: Take mono_get_domainvar out of macros. This makes sure
13796         that we do not depend on undefined C behavior: the order stuff
13797         gets evaluated within an expression. Fixes mono when compiled on
13798         GCC 4.
13799
13800 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
13801
13802         * *-ia64.*: Ongoing IA64 work.
13803
13804         * aot.c: Lower memory usage while loading AOT methods.
13805
13806         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
13807
13808         * mini.h: Bump AOT file format version.
13809
13810 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13811
13812         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
13813
13814 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
13815
13816         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
13817         not on callee assembly). Fixed some comments.
13818
13819 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
13820
13821         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
13822         it gets proper disassembly.
13823         (emit_method_info): Remove some dead code.
13824
13825         * mini.c (mini_method_compile): Allways allocate the GOT var in
13826         mono_method_to_ir for emulating opcodes.
13827
13828 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
13829
13830         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
13831         before freeing the code memory. Fixes #74990.
13832
13833         * objects.cs: Add regression test for #74992.
13834
13835         * liveness.c: Extend live ranges of arguments to the beginning of the
13836         method. Fixes #74992.
13837
13838         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
13839         so it points into the faulting instruction.
13840
13841 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
13842
13843         * jit-icalls.c (mono_imul_ovf): Add exception handling.
13844
13845         * *-ia64.*: Ongoing IA64 work.
13846
13847         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
13848
13849 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
13850
13851         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
13852
13853         * *-ia64.*: Ongoing IA64 work.
13854
13855 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
13856
13857         * basic-long.cs: Add tests for add/sub.ovf.
13858
13859         * basic.cs: Add tests for sub.ovf.
13860
13861         * *-ia64.*: Ongoing IA64 work.
13862
13863 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
13864
13865         * *-ia64.*: Ongoing IA64 work.
13866
13867         * basic.cs: Add conv.ovf.i4.un test.
13868
13869 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
13870
13871         * mini.c: (remove_block_if_useless) Fixed bug 75061.
13872         
13873 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13874
13875         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
13876
13877 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13878
13879         * *-ia64.*: Ongoing IA64 work.
13880
13881 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13882
13883         * trace.[ch]:
13884         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
13885
13886 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
13887
13888         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
13889
13890 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
13891
13892         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
13893
13894         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
13895         of a call is callable by a near call.
13896
13897 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
13898
13899         * mini-ia64.c: Ongoing IA64 work.
13900
13901 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
13902
13903         * genmdesc.c: Make the generated array non-static.
13904
13905         * inssel-long.brg: Fix LSHR_IMM rule.
13906
13907         * *-ia64.*: Ongoing IA64 work.
13908
13909         * *-ia64.*: Ongoing IA64 work.
13910
13911 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13912
13913         * *-ia64.*: Ongoing IA64 work.
13914
13915         * *-ia64.*: Ongoing IA64 work.
13916         
13917         * mini-ia64.c: Ongoing IA64 work.
13918
13919         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
13920
13921 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
13922
13923         * objects.cs basic-calls.cs: Move some tests to objects.cs.
13924         
13925         * objects.cs basic-long.cs: Move some tests to objects.cs.
13926
13927 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
13928
13929         * *-ia64.*: Ongoing IA64 work.
13930
13931         * iltests.il: Add a new test.
13932
13933         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
13934         newobj. Fixes #75042.
13935
13936 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
13937
13938         * *-ia64.*: Ongoing IA64 work.
13939         
13940         * *-ia64.*: Ongoing IA64 work.
13941         
13942         * *-ia64.*: Ongoing IA64 work.
13943
13944         * basic.cs objects.cs: Move tests accessing static variables as well.
13945
13946         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
13947
13948 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
13949
13950         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
13951
13952         * driver.c: Always print failed tests.
13953
13954         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
13955         frame pointer.
13956
13957         * *ia64*: Ongoing IA64 work.
13958
13959 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13960
13961         * basic.cs: Add tests for add.ovf. Fix warnings.
13962
13963 2005-05-18  Miguel de Icaza  <miguel@novell.com>
13964
13965         * driver.c (mono_main): Avoid crash if no argument is passed to
13966         --break;  Do not use g_error, but f_printf.   And fix all other
13967         ocurrences of the same crash.
13968
13969 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
13970
13971         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
13972         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
13973         Fixes #74742.
13974
13975 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
13976
13977         * *-ia64.*: Add beginnings of IA64 backend.
13978
13979         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
13980
13981 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
13982
13983         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
13984         Fixes #74925.
13985
13986         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
13987
13988         * mini-amd64.c: Fix a warning.
13989
13990 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
13991
13992         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
13993         in float_neg. Fixes #74897.
13994
13995         * mini-amd64.c (emit_call): Fix another near call bug.
13996
13997 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
13998
13999         * declsec.c: Keep the appdomain information in the structure. Added a 
14000         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
14001         value gets overwritten).
14002         * declsec.h: Set the default MonoArray for the the stack to 6. Added
14003         an MonoAppDomain member to MonoSecurityFrame.
14004         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
14005         used in the stack walk. Now use a MonoArray which grow (double) when
14006         it gets full.
14007
14008 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14009
14010         * mini.c: Re-enabled runtime cleanup, since running threads should
14011         now properly stop when exiting.
14012
14013 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14014
14015         * mini-codegen.c: New file contaning the arch-independent local
14016         register allocator. Not used by any architectures yet.
14017
14018         * mini.h linear-scan.c: Merge some changes from the 
14019         mini-xp-local-regalloc branch.
14020
14021 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14022
14023         * mini-amd64.c (emit_call): Fix calls to native functions when the
14024         runtime is compiled as a shared library. Fixes #74756.
14025
14026         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
14027         on a literal field. Fixes #74751.
14028
14029 2005-04-25  Raja R Harinath  <rharinath@novell.com>
14030
14031         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
14032
14033 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14034
14035         * objects.cs: Add missing null casting test.
14036
14037 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14038
14039         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
14040         in wrapper methods. Also rename 'address' variable to 'offset'.
14041
14042 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14043
14044         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
14045         warnings.
14046         
14047         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
14048
14049         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
14050         work on windows.
14051
14052 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
14053
14054         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
14055
14056 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14057
14058         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
14059         just the last bytes.
14060
14061 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
14062
14063         * aot.c (mono_compile_assembly): Fix warning.
14064
14065         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
14066         by the _MSC_VER stuff.
14067
14068 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14069
14070         * inssel-long.brg: Fix #74588.
14071
14072         * cpu-amd64.md: Fix #74591.
14073
14074         * iltests.il: Add new regression tests.
14075
14076 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14077
14078         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
14079         valuetype.
14080
14081 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
14082
14083         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
14084
14085         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
14086         from Bill Middleton <flashdict@gmail.com>.
14087
14088 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14089
14090         * arrays.cs: Add new regression test. Fix warnings.
14091
14092 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
14093
14094         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
14095         and leakage in CKFINITE.
14096
14097         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
14098         this to a null op since it is called on amd64 too.
14099
14100         * exceptions-amd64.c (get_throw_trampoline): Align stack.
14101
14102         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
14103         body since this is not used on amd64.
14104         
14105         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
14106
14107         * mini-amd64.c: Remove obsolete fixmes.
14108
14109         * mini.c (print_method_from_ip): Fix debugging support.
14110
14111 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14112
14113         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
14114         so that expressions that don't give much gain are not reduced.
14115         * ssapre.h: Likewise.
14116
14117 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14118
14119         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
14120
14121         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
14122
14123         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
14124
14125 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
14126
14127         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
14128
14129         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
14130
14131 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
14132
14133         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
14134         stack touching.
14135
14136         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
14137
14138         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
14139
14140         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
14141
14142         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
14143         MONO_ARCH_USE_SIGACTION. Fixes #74252.
14144
14145         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
14146
14147         * mini-x86.c: Fix up stack overflow handling.   
14148
14149         * exceptions.cs: Add new regression test.
14150
14151 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
14152
14153         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
14154         mono_jit_thread_attach.
14155
14156         * mini.c (mono_method_to_ir): Verify called method is not abstract.
14157
14158 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14159
14160         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
14161         avoid calling constructors using callvirt.
14162
14163         * inssel.brg: Fix #74073.
14164
14165 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14166
14167         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
14168         compilation with non-GCC compilers.
14169         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
14170         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
14171
14172 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
14173
14174         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
14175         klass->interface_offsets (will likely fix bug#74073).
14176
14177 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14178
14179         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
14180
14181 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
14182
14183         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
14184         to amd64_div_reg_size ().
14185         
14186         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
14187
14188 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14189
14190         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
14191
14192 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14193
14194         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
14195
14196 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14197
14198         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
14199         
14200         * mini.c (mono_precompile_assembly): Load and precompile referenced
14201         assemblies as well. Fixes #74015.
14202
14203 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14204
14205         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
14206
14207 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14208
14209         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
14210         a lot of checks and (anyway) permissions cannot work until corlib is 
14211         loaded.
14212
14213 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
14214
14215         * mini-ppc.c: fixed ABI issue on sysv/ppc.
14216
14217 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14218
14219         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
14220         calls (fixes bug#72824).
14221
14222 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14223
14224         * mini.c: fix tail recursion elimination (see test in bug#73936).
14225
14226 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
14227
14228         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
14229         some fp functions in sse2 mode.
14230
14231 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
14232
14233         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
14234
14235 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
14236
14237         * mini.h mini.c: Add mono_get_jit_tls_key ().
14238
14239         * mini-x86.c: Enable fast TLS support on windows.
14240
14241 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14242
14243         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
14244         * mini.c: Check for p/invoke method when generating code. If a
14245         p/invoke method, or it's class, isn't decorated with [Suppress
14246         UnmanagedCodeSecurity] then generate code to call System.Security.
14247         UnmanagedDemand (only if the security manager is active).
14248
14249 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14250
14251         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
14252         last change as it seems to cause strange crashes.
14253         
14254 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14255
14256         * *.c: handle unsafe function pointers where needed.
14257
14258 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * mini.c (mono_jit_free_method): Remove the fixme too.
14261
14262 2005-03-15  Miguel de Icaza  <miguel@novell.com>
14263
14264         * mini.c: As discussed, make the code actually free the delegate
14265         thunk now, to enable the debugging of delegate problems, use
14266         MONO_DEBUG=1 when running Mono. 
14267
14268         This takes also care of parts of the leaks as seen by Joe.
14269
14270 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
14271
14272         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
14273         thread_tls_offset calculation.
14274
14275 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
14276
14277         * declsec.c: Reworked linkdemand checks for icall. The previous code
14278         was using the declaration code (untrusted) and didn't work as expected
14279         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
14280         specific case.
14281
14282 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14283
14284         * iltests.il: Add new localloc test.
14285
14286         * mini-amd64.c: Handle large stack allocations the same way as on
14287         windows if stack overflow handling is working.
14288         
14289         * mini-amd64.c: Allocate the signal stack using mmap.
14290
14291         * mini.c (sigsegv_signal_handler): Fix reading of context.
14292
14293         * mini-exceptions.c: Fix up stack overflow handling.
14294
14295         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
14296
14297         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
14298
14299         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
14300
14301         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
14302
14303         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
14304         tramp_init functions as they are no longer needed.
14305
14306 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
14307
14308         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
14309         
14310         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
14311
14312         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
14313         
14314         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
14315         support that now.
14316
14317         * mini-ops.h: Add OP_LMUL_IMM.
14318
14319         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
14320         long mul/div opcodes as intrinsic.
14321
14322         * mini-amd64.c (emit_call): Handle the case when the callee might be
14323         an AOT method.
14324
14325 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14326
14327         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
14328         extra safe.
14329         
14330         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
14331
14332         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
14333
14334 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
14335
14336         * mini.c (mono_codegen): Don't leak here, to help people running
14337         monogrind.
14338
14339 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14340
14341         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
14342         conversions in sse2 mode.
14343
14344         * basic-float.cs: Add regression test.
14345         
14346         * mini-amd64.c: Reenable sse2.
14347
14348 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14349
14350         * mini-amd64.c: Disable sse2 until some regressions are fixed.
14351
14352 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
14353
14354         * driver.c: Copyright text should include 2005.
14355         
14356 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
14357
14358         * cpu-amd64.md (load_membase): Fix more max lengths.
14359
14360 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
14361
14362         * cpu-amd64.md (load_membase): Fix max length.
14363
14364         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
14365
14366         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
14367
14368         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
14369         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
14370
14371         * basic-float.cs: Add rounding regression test.
14372
14373         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
14374
14375 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
14376
14377         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
14378         structures in registers for pinvoke wrappers.
14379
14380 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14381
14382         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
14383
14384 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
14387         wrapper to mono_jit_thread_attach.
14388
14389         * mini.c (mini_jit_thread_attach): New jit icall.
14390
14391         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
14392         native->managed wrappers.
14393
14394         * exceptions.cs: Add new regression test.
14395
14396         * mini.c (optimize_branches): Check regions in the cbranch to throw
14397         block case as well. Fixes #73242.
14398
14399 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14400
14401         * mini.c: thread safety fixes.
14402
14403 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
14404
14405         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
14406         patching stuff, since delegates use jump trampolines so there is
14407         no caller.
14408
14409         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
14410         jump trampolines.
14411         
14412         * tramp-amd64.c: Fix build.
14413
14414         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
14415         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
14416
14417         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
14418         Rename this to mono_arch....
14419         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
14420
14421         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
14422
14423         * mini-amd64.c (emit_call): If both the caller and the callee is
14424         guaranteed to have 32 bit addresses, emit a normal call.
14425
14426         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
14427
14428         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
14429         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
14430         method_ptr inside delegates.
14431
14432 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
14433
14434         * mini.c (mono_jit_free_method): Free the method info even if the native code is
14435         invalidated. Fixes #73001.
14436
14437         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
14438
14439         * mini-x86.c: Only use stdcall for pinvokes on windows.
14440
14441 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14442
14443         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
14444         * mini-x86.c: remove unreliable __thread var offset detection,
14445         use the correct accessors and enable by default.
14446
14447 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14448
14449         * mini.c (mono_jit_free_method): Fix memory leak.
14450
14451 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
14452
14453         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
14454
14455 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
14456
14457         * cpu-amd64.md: Fix lengths of atomic opcodes.
14458
14459 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14460
14461         * driver.c: try to not imply using ICU is any good.
14462
14463 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14464
14465         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
14466         functions as inline ops.
14467
14468         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
14469         some Interlocked functions as inline ops.
14470
14471         * mini.c (move_basic_block_to_end): Fix bug in last patch.
14472
14473         * mini.h (MonoBasicBlock): Reorganize fields a bit.
14474
14475         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
14476
14477         * mini.c: Add support for OP_NOT_TAKEN.
14478
14479         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
14480         structures in registers for pinvoke wrappers.
14481
14482         * mini-amd64.c: Fix warnings.
14483
14484 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
14485
14486         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
14487
14488         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
14489
14490         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
14491         address instead of loading the address from it.
14492
14493         * mini-x86.c: Add support for returning small structs in registers
14494         on Win32. Fixes part of #70864.
14495         
14496 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
14497
14498         * trace.c (get_token): Improve error checking.
14499
14500 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14501
14502         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
14503
14504 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
14505  
14506         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
14507         it can be reused for MonoClass.
14508         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
14509         _LINKDEMAND.
14510
14511 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
14512
14513         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
14514         instead of a MonoReflectionMethod. The method information wasn't used
14515         when displaying SecurityException details (but will be now).
14516
14517 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
14518
14519         * Makefile.am : windows build fix.
14520
14521 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14522
14523         * iltests.il: Add new regression test.
14524
14525         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
14526         #72522.
14527
14528 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
14529  
14530         * mini.c: Moved linkdemand check into helper function check_linkdemand
14531         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
14532         LDFTN, LDVIRTFTN).
14533
14534 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
14535
14536         * declsec.c: Added statistics counter for different kinds of 
14537         LinkDemands.
14538         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
14539         (and commented) declaration.
14540         * mini.c: Added statistics counter for security Demand code 
14541         generation. Added display of security statistics.
14542
14543 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14544
14545         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
14546         Fix compilation errors under gcc-2.95.
14547
14548 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14549
14550         * mini.c, driver.c: Use the new jit trampoline hashtable
14551
14552 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
14555
14556 2005-02-11  Martin Baulig  <martin@ximian.com>
14557
14558         * debug-mini.c (mono_debug_close_method): Free the line number array.
14559
14560 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14561
14562         * aot.c: Break up large methods into smaller ones. Share GOT slots for
14563         icalls.
14564
14565         * mini.h: Bump AOT file format version. 
14566
14567 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14568
14569         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
14570         APTC and P/Invoke.
14571         * declsec.h: Added macros to get/set lazyly initialized security 
14572         informations about assemblies. Added new enum for different type of
14573         possible LinkDemand violation. Added function to check LinkDemands.
14574         * mini.h: Added a field to MonoCompile to hold any security violation
14575         detected when JITting a method (so it can be thrown later).
14576         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
14577         and CEE_CALLVIRT. Added code to throw exception at the end of
14578         mini_method_compile (note: the exception is unhandled right now).
14579
14580 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14581
14582         * mini.c, jit-icalls.c: use the managed implementation of
14583         memset for initobj and memset, to avoid managed <-> unmanaged
14584         transitions.
14585
14586 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
14587
14588         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
14589         optimization if it would need a GOT var.
14590
14591         * basic.cs: Add tests for constant propagation and switch statements.
14592
14593         * ssa.c: Fix out-of-range constant propagation and switch statements.
14594
14595 2005-02-09    <vargaz@freemail.hu>
14596
14597         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
14598
14599 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
14600
14601         * cpu-amd64.md (load_membase): Fix max length of load_membase.
14602
14603 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
14604
14605         * mini.c: update to new signature of mono_class_get_allocation_ftn().
14606
14607 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
14608
14609         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
14610         arithmetic operations.
14611
14612 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini-ppc.c: add a workaround for broken user code that
14615         DllImports vararg functions with non-vararg signatures.
14616
14617 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14618
14619         * mini.c (mono_jit_compile_method_inner): Add detection and a 
14620         meaningfull error message for assemblies written in Managed C++.
14621
14622         * tramp-amd64.c mini-amd64.h: Add support for 
14623         create_trampoline_from_token ().
14624
14625         * aot.c mini-x86.c abcremoval.c: Applied patch from
14626         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14627
14628 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14629
14630         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
14631         which takes a MonoImage/token as parameter instead of a MonoMethod.
14632
14633         * aot.c: Use the new trampoline for initializing vtables.
14634
14635         * aot.c: Add support for ldfld/stfld_remote wrappers.
14636
14637         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
14638         rules for compare <MEM>, IMM.
14639
14640         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
14641
14642         * aot.c: Handle inherited finalizers correctly.
14643
14644 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14645
14646         * inssel.brg (stmt): Add a missing _setup_... ().
14647
14648         * aot.c: Save some parts of the class state to the AOT file and use it
14649         to recompute that state when a class is initialized.
14650
14651         * mini.c: Install AOT hooks into the runtime.
14652
14653         * mini.h: Bump AOT file format version.
14654         
14655         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
14656         Fixes #72148.
14657
14658         * iltests.il: Add new test.
14659
14660 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14661
14662         * mini.c: fix typo.
14663
14664 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
14665
14666         * mini.c: setup the statistical profiler in the thread attach
14667         callback to cope with the new single thread code.
14668
14669 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14670
14671         * mini-ppc.c: ensure we have enough room for the profiler
14672         calls (fixed bug#72084).
14673
14674 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14675
14676         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
14677         it.
14678
14679 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14680
14681         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
14682
14683 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14684
14685         * ssapre.c: Fixed an issue with down safety (this allows IronPython
14686         to succesfully execute parrotbench).
14687         * ssapre.h: Likewise.
14688
14689 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
14690
14691         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
14692         variable for stores to method arguments (fixes a SSAPRE issue).
14693
14694 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14695
14696         * mini.c: handle value types in dup, fixes gen-112.cs.
14697
14698 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
14699
14700         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
14701         sequence for calls in dynamic methods to avoid thunks.
14702
14703 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14704
14705         * mini.c: correctly remove dynamic methods from the hashtable.
14706
14707 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14708
14709         * driver.c: Disabled SSAPRE until fix the bug that appears
14710         in IronPython's parrotbench.
14711
14712 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14713
14714         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
14715
14716         * mini.c (mono_method_to_ir): Revert the previous change.
14717         
14718         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
14719         when AOT compiling.
14720
14721         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
14722         mono_jit_info_table_find () etc. when running under valgrind.
14723
14724         * inssel.brg: Fix warnings.
14725
14726         * mini-exceptions.c: Fix warnings.
14727
14728 2005-01-31  Martin Baulig  <martin@ximian.com>
14729
14730         * driver.c (compile_all_methods_thread_main): Don't try to compile
14731         generic methods or anything which has type parameters.
14732
14733 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14734
14735         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
14736
14737         * TestDriver.cs: Add --verbose flags.
14738
14739         * graph.c ssa.c: Fix 64 bit warnings.
14740         
14741         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
14742         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
14743         Fix 64 bit warnings.
14744
14745         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
14746         variable not spotted by gcc.
14747         
14748         * mini-amd64.c inssel-amd64.brg: Applied patch from  
14749         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
14750         X86_COMPARE_MEMBASE opcodes.
14751
14752         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
14753
14754 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14755
14756         * *: MonoMethod->signature might be NULL now. You *MUST* use
14757         mono_method_signature.
14758
14759 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14760
14761         * driver.c (compile_all_methods_thread_main): Compile the methods
14762         without invoking cctors.
14763
14764 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14765
14766         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
14767         * basic-calls.cs: test for the above.
14768
14769 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14770
14771         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
14772         MonoJitInfo changes.
14773
14774 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
14775
14776         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
14777         eagerly if it contains dynamic methods.
14778         
14779         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
14780
14781         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
14782         trace, it is now computed by an icall from trace_ips.
14783         
14784         * mini-exceptions.c: Fix a warning.
14785
14786 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini-exceptions.c: don't bother getting stack trace info if
14789         it's not going to be used.
14790
14791 2005-01-27  Raja R Harinath  <rharinath@novell.com>
14792
14793         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
14794         ssapre-mini-ops.h.
14795
14796 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
14799
14800         * aot.c: Avoid calling mono_method_get_header () if not needed.
14801
14802         * mini.h: Bump AOT file format version.
14803         
14804         * mini.c (mono_emit_native_call): Allocate a GOT var here.
14805
14806         * mini.c (mono_print_tree): Print more info for calls.
14807
14808 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14809
14810         * declsec.h: Remove warning by adding missing include for marshal.h
14811
14812 2005-01-26  Martin Baulig  <martin@ximian.com>
14813
14814         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
14815         `ip' twice.
14816
14817 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
14818
14819         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
14820         flags.
14821
14822         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
14823
14824         * aot.c (mono_compile_assembly): Fix a warning.
14825
14826 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
14827
14828         * declsec.c: Look for security attributes on the original MonoMethod 
14829         (and not the wrapped one). This fix permissions on icalls.
14830
14831 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14832
14833         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14834
14835         * mini.c (mono_allocate_stack_slots): Add a fixme.
14836
14837         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
14838
14839 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14840
14841         * inssel.brg: optimize casts of sealed types (more
14842         optimizations waiting for fixes in remoting).
14843
14844 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
14845
14846         * inssel.brg (stmt): Add another dummy rule.
14847
14848         * driver.c: Fix warnings.
14849
14850         * driver.c (mono_main): If running under valgrind, instruct glib to use
14851         the system allocation functions so valgrind can track the memory
14852         allocated by the g_... functions.
14853
14854         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
14855
14856         * mini-ops.h: Add OP_DUMMY_STORE opcode.
14857
14858         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
14859
14860         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
14861         variables in try regions.
14862
14863         * mini.c (mini_method_compile): Don't disable optimizations on large
14864         methods when AOT compiling.
14865
14866         * mini.c (mono_allocate_stack_slots): New arch independent method to 
14867         allocate stack slots. Not yet used.
14868
14869 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14870
14871         * debug-mini.c (mono_debug_close_method): Plug some leaks.
14872
14873 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
14874
14875         * mini-ppc.c: make the branch info relative as the code
14876         buffer can be reallocated.
14877
14878 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14879
14880         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
14881         * driver.c: Removed the AOT/security restriction. Now initialize the
14882         security manager (in metadata) if --security is used.
14883         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
14884         rather than the pointer to declarative security, when AOT is used.
14885
14886 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
14887
14888         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
14889         basic blocks, reduced intrinsic exception throwing code size.
14890
14891 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
14892
14893         * driver.c (mini_usage): Reorder the usage screen.
14894
14895 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
14896
14897         * mini.c (mono_resolve_patch_target): Fix warning.
14898
14899 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
14900
14901         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
14902         previous patch.
14903
14904         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14905
14906         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
14907         breaks the amd64 build.
14908
14909         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
14910         register allocation. Fixes #71454.
14911
14912         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
14913
14914         * arrays.cs: Add new regression test.   
14915
14916 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14917
14918         * ssapre.c: Turned usage of snprintf to GString.
14919         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
14920         (I left it on by mistake in my previous commit).
14921
14922 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
14923
14924         * mini.c, cfold.c, basic-calls.cs: preserve side effects
14925         on cond branch optimization (fixes bug# 71515).
14926
14927 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14928
14929         * abcremoval.c: Fixed bug 71062.
14930         * abcremoval.h: Likewise.
14931
14932 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
14933
14934         * mini.c: Added a new functionality to optimize_branches, the removal
14935         of useless basic blocks, and fixed some problem in the removal of
14936         critical edges; some utility functions added for both purposes.
14937         * ssapre.c: Added complex expression support, and fixed bug 70637.
14938         * ssapre.h: Likewise.
14939         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
14940         enabled in SSAPRE.
14941         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
14942         * driver.c: Re-enabled SSAPRE.
14943
14944 2005-01-19  Martin Baulig  <martin@ximian.com>
14945
14946         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
14947         the result of mono_get_method_constrained().
14948
14949 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
14950
14951         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
14952         manager.
14953
14954 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
14955
14956         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
14957         be detected.  Fixes #59296.
14958
14959 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14960
14961         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
14962         which can happen. Fixes #71361.
14963
14964 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14965
14966         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
14967         manager.
14968
14969 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14970
14971         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
14972         appdomain-unload.exe to fail.
14973         
14974         * mini.c: Fix some memory leaks.
14975
14976 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
14977
14978         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
14979         Fixed bug and sped up some codepaths.
14980
14981 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14982
14983         * mini.c: Fix some memory leaks.
14984
14985         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
14986         conversion.
14987
14988         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
14989
14990         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
14991         #71320.
14992
14993         * iltests.il: Add regression test for #71320.
14994
14995 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14996
14997         * mini.c (mono_codegen): Fix installation of profiler hooks.
14998
14999         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
15000
15001 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15002
15003         * mini.h, mini.c, cfold.c: optimize access to enum
15004         readonly fields, too. Eval conditional branches if possible
15005         to perform unreachable code removal in more cases.
15006
15007 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
15008
15009         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
15010
15011         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
15012         code manager.
15013
15014         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
15015         WinXP DEP. Fixes #71244.
15016
15017 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
15020
15021 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15022
15023         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
15024
15025 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15026
15027         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
15028         changes.
15029
15030         * mini.h: Bump AOT version.
15031
15032         * mini.h (MonoCompile): Change exvar to a hash table.
15033
15034         * mini.c: Allocate a separate exvar for each handler block.
15035
15036         * mini.c: Get rid of the computation of filter_lengths, its not needed.
15037
15038         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
15039         ex var with the pending exception and only throw if the two are equal.
15040         Fixes #68552.
15041         
15042         * exceptions.cs: Add tests for rethrow and nested catch clauses.
15043
15044         * mini-x86.c: Fix warnings.
15045
15046         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
15047         used by all the ports now.
15048
15049         * aot.c: Add write-symbols and save-temps options.
15050
15051 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15052
15053         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
15054
15055 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
15056
15057         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
15058         operations.
15059
15060         * tramp-s390.c: Check vtable slot belongs to the domain.
15061
15062         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
15063         as per other platforms.
15064
15065         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
15066
15067 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15068
15069         * driver.c: we don't run the Main() code in a subthread anymore.
15070
15071 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
15072
15073         * mini.c: added experimental rtc support in the statistical
15074         profiler: if the user has the permission, more accurate statistics
15075         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
15076         The MONO_RTC value must be restricted to what the linux rtc allows:
15077         power of two from 64 to 8192 Hz.
15078
15079 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
15080
15081         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
15082
15083 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
15084
15085         * mini-ppc.c: better icache flush for smp.
15086
15087 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15088
15089         * mini-amd64.c (emit_move_return_value): Fix memory leak.
15090
15091         * mini-x86.c (get_call_info): Add the get_call_info () code from the
15092         amd64 port, not yet used.
15093
15094 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15095
15096         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
15097         a struct type.
15098
15099 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15100
15101         * driver.c: Added --security option to activate the security manager.
15102         Right now this will allow code generation for declarative demands and
15103         is disabled when AOT is specified.
15104         * mini.c: Add code generation for declarative security demands.
15105         * mini.h: Add mono_use_security_manager as an extern gboolean.
15106
15107 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15108
15109         * aot.c (mono_compile_assembly): Speed up compilation a bit by
15110         emitting more dense assembly code.
15111
15112         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
15113         exception throwing stuff.
15114
15115 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15116
15117         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
15118         dead code.
15119
15120         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
15121         left in by mistake.
15122
15123         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
15124         fixed.
15125
15126         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
15127
15128         * tramp-*.c: Only patch vtable slots if the object is in the current
15129         domain. Fixes appdomain-unload.exe.
15130
15131         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
15132         
15133         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
15134         x86 branch.
15135
15136 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15137
15138         * mini.c (reverse_branch_op): New helper function.
15139
15140         * mini.c (optimize_branches): Run the new optimization only on 
15141         platforms which support it. Also reverse all kinds of branches.
15142
15143         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
15144
15145         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
15146         a throw statement.
15147
15148         * mini.c (optimize_branches): Reverse not-equals branches if the false
15149         bblock is a throw. This happens a lot of time with argument checking in
15150         corlib.
15151
15152         * mini.c (mono_codegen): Add support for placing basic blocks after
15153         the function epilogue.
15154
15155         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
15156         function epilogue.
15157         
15158 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
15159
15160         * mini.c (setup_stat_profiler): Only set this up if the platform
15161         supports ITIMER_PROF.
15162
15163 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15164
15165         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
15166         previous patch.
15167
15168         * inssel.brg: Fix a warning.
15169
15170 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15171
15172         * mini.c: added support for statistical profiler 
15173         (run with: --profile=default:stat).
15174
15175 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
15176
15177         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
15178
15179         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
15180
15181         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
15182         related to global registers from the amd64 port.
15183
15184 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15185
15186         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
15187
15188         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
15189         with global registers.
15190         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
15191
15192         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
15193
15194 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
15195
15196         * debug-mini.c (encode_value): Fix off-by-one.
15197
15198         * aot.c (encode_value): Likewise.
15199
15200         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
15201
15202 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15203
15204         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
15205         AOT.
15206
15207         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
15208         
15209         * aot.c (emit_method_info): Increase size of temp buffer.
15210
15211         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
15212         the AOT case.
15213
15214 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
15215
15216         * aot.c (emit_method_info): Fix build.
15217         
15218         * aot.c: Further rework of the AOT file format to reduce the size of
15219         the method info data.
15220
15221         * mini.h: Bump AOT file format version.
15222
15223 2004-12-27  Martin Baulig  <martin@ximian.com>
15224
15225         * mini.c (mini_get_method): New static method; call
15226         mono_get_method_full() and mono_get_inflated_method().
15227         (mono_method_to_ir): Use mini_get_method() instead of
15228         mono_get_method_full(). 
15229
15230 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
15231
15232         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
15233
15234 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
15235
15236         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
15237
15238         * inssel-amd64.brg: Add some optimization rules.
15239
15240 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15241
15242         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
15243         standard not GC'd stuff is fine.
15244
15245 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
15246
15247         * aot.c: Rework the AOT file format to get rid of most of the global
15248         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
15249
15250         * mini.h: Bump AOT file format version.
15251         
15252 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
15253
15254         * mini.h: Bump AOT file format version.
15255
15256         * aot.c (mono_aot_is_got_entry): New function to determine if an 
15257         address is inside a GOT.
15258
15259         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
15260
15261         * cpu-pentium.md: Increase the maximum size of some instructions which
15262         might involve a got access.
15263         
15264         * mini.c (get_method_from_ip): Another debug helper function.
15265
15266         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
15267         when got var accesses are created during the decompose phase.
15268
15269         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
15270
15271         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
15272         argument mini_compile_method and to MonoCompile, and use this to
15273         determine whenever a given method is compiled for AOT. This allows the
15274         other methods compiled during AOT compilation to be free of AOT stuff,
15275         so the backends does not need to add special support for them by
15276         creating a fake GOT etc.
15277
15278         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
15279         longer needed.
15280
15281 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15282
15283         * mini.c (mono_method_to_ir): It turns out that some of the
15284         x-appdomain wrappers are lax with types, so just ignore this for
15285         all wrappers.
15286
15287         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
15288         at the vtable->klass. If it is non-shared code we can just use the
15289         vtable.
15290
15291 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
15292
15293         * mini-ppc.c: access MonoDomain from tls, too.
15294
15295 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
15296
15297         * declsec.c: Removed unused variable (and related warning ;-)
15298
15299 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
15300
15301         * iltests.il: New test for LDELEMA on an array of ref types.
15302
15303         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
15304         all ldelema's on reftypes.
15305         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
15306         it was the wrong place to put it.
15307
15308         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
15309         register to pop to make this cleaner, at the request of Paolo.
15310
15311 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15312
15313         * mini-ops.h (OP_GETHASHCODE): New op.
15314
15315         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
15316
15317         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
15318         operation.
15319
15320         For a microbenchmark, this reduces the cost of Hashtable.get_Item
15321         by 25%.
15322         
15323         * mini-x86.c (mono_arch_output_basic_block): Rather than
15324
15325         add ebp, 4
15326
15327         Emit
15328
15329         pop edx
15330
15331         The first is 3 bytes while the second is 1. This saves 36 kb on
15332         mscorlib, quite a big saving. When bootstraping mcs, I was able to
15333         see a small boost because of icache locality.
15334
15335         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
15336
15337 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
15338
15339         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
15340         started code sharing with the generic code.
15341
15342 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
15343
15344         * mini-ppc.c, cpu-g4.md: added code for direct access to
15345         tls data slots.
15346
15347 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
15348
15349         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
15350          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
15351         to OP_TLS_GET.
15352
15353 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15354
15355         * declsec.c|h: Added functions to cache the declarative stack modifiers
15356         in MonoJitInfo and to create a security frame from a MonoJitInfo 
15357         structure.
15358         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
15359         created. Register internal calls for System.Security.SecurityFrame::
15360         _GetSecurityFrame and _GetSecurityStack.
15361         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
15362         the definitions for the new stack walk/callback mechanism.
15363         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
15364         first security frame for LinkDemands and InheritanceDemands) and
15365         GetSecurityStack for Demands. Both use the new mono_walk_stack code
15366         from lupus.
15367         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
15368         walk initialization (lupus).
15369
15370 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15371
15372         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
15373         idiom.
15374         (handle_loaded_temps): Do not create a temporary variable for
15375         things that we know are temps. They will never be modified.
15376         (mono_spill_call): Set MONO_INST_IS_TEMP
15377         (mono_emulate_opcode): ditto
15378         (emit_tree): ditto
15379         (mono_method_to_ir.CEE_DUP): ditto
15380
15381 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
15382
15383         * mini.c (type_to_eval_stack_type): Make this handle the void type
15384         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
15385         (emit_tree): use ip_in_bb to special case some common idioms
15386         Update all callers to pass in the IP.
15387         (mono_method_to_ir): Make CEE_CALL* do the above as well.
15388
15389         This gives us a nice 2% speedup in mcs bootstrap.
15390
15391         * mini-x86.c (peephole_pass): Peephole pass to make
15392         mov  [foo], eax
15393         push [foo]
15394
15395         into
15396
15397         mov [foo], eax
15398         push eax
15399
15400         * mini.c (ip_in_bb): new method.
15401         (mono_method_to_ir): use this method rather than doing the hash
15402         lookup ourselves.
15403
15404         * linear-scan.c (mono_linear_scan): When expiring actives, you
15405         don't need to keep around variables that expire on this
15406         instruction. This makes it so that:
15407              a = b + 1
15408         will turn into:
15409              store (ebx add (ebx, 1))
15410         which will become
15411              add ebx, 1
15412
15413 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
15414
15415         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
15416         combination to avoid doing two copies. Fix up problems with previous
15417         patch.
15418
15419         * mini.c: Fix 64 bit warnings.
15420
15421         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
15422
15423 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
15426         changes from the x86 code.
15427
15428         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
15429
15430 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15431
15432         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
15433         throwing code to reduce its size, unify the AOT and non-aot code and 
15434         get rid of relocations in the AOT case.
15435
15436         * mini-x86.h mini.c exceptions-x86.c 
15437         (mono_arch_get_throw_corlib_exception): New arch specific function to 
15438         raise corlib exceptions which doesn't require relocations in the 
15439         caller.
15440
15441         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
15442
15443 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15444
15445         * mini.c (mono_emit_method_call): Only allocate the got var when it is
15446         needed.
15447
15448         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
15449         in the AOT case.
15450
15451 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15452
15453         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
15454         with add function when used from Inc/dec atomic 
15455         functions. Re-enabled optimization on x86.
15456         * mini-ops.h: renamed atomic_add functions to
15457         allow _add to match the Interlocked::Add and
15458         _add_next to match Interlocked::Inc/Dec.
15459
15460 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
15461
15462         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
15463         linking of BBs to the end BB, and enabled SSAPRE also with
15464         consprop and copyprop (which was prevented by that bug).
15465
15466 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15467
15468         * mini-x86.c: disabling the Interlocked optimizing code. 
15469
15470 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15471
15472         * aot.c (load_aot_module): Move reading of got_addr after the AOT
15473         file version check.
15474         
15475 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
15476
15477         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
15478         interlocked optimization due lack of support on x86, rewrote 
15479         exchange to take into account that base may be in eax.
15480         
15481         xsp works again; activated Interlocked optimizing code.
15482         
15483 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15486
15487 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
15488
15489         * mini-ops.h: Add new opcodes.
15490
15491         * mini.h: Add new patch types. Add got_var to MonoCompile.
15492
15493         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
15494         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
15495         make it work with all kinds of patchable code.
15496
15497         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
15498         address of the GOT, and referencing entries in the GOT.
15499
15500         * mini.c: Add code to load the GOT address if needed by an opcode.
15501
15502         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
15503         independent AOT code on the x86 using an elf-style Global Offset Table.
15504
15505 2004-12-14  Raja R Harinath  <rharinath@novell.com>
15506
15507         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
15508
15509 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15510
15511         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
15512         when running xsp.
15513
15514 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
15515
15516         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
15517         of Interlocked:Increment/Decrement/Add as inline ops.
15518         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
15519
15520 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
15521
15522         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
15523         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
15524
15525 2004-12-12  Duncan Mak  <duncan@ximian.com>
15526
15527         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
15528         again. `patch_info->table_size' is no longer valid after Zoltan's
15529         commit #37636.
15530
15531 2004-12-12  Martin Baulig  <martin@ximian.com>
15532
15533         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
15534         if we are the "real" method, ie. not an inlined method inside it.
15535
15536 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
15537
15538         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
15539         before we look in the special fields table. This fixes
15540         ../tests/thread-static-init.cs.
15541
15542 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15543
15544         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
15545         for Array get_Rank and get_Length. Fixes bug #70465.
15546
15547 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
15550         separate structure to reduce the size of MonoJumpInfo.
15551
15552 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15553
15554         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
15555
15556 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
15557
15558         * mini.c (mini_get_inst_for_method): Changed to allow ports
15559         to return a MonoInst instead of opcode 
15560         (renamed mini_get_opcode_for_method to better reflect the new functionality)
15561         
15562         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
15563         Allow ports to return a created MonoInst instead of op-code, will enable
15564         new optimizations.
15565         (renamed mini_get_opcode_for_method to better reflected the functionality)
15566
15567 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
15570
15571 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15572
15573         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
15574         Fixes #69985.
15575
15576 2004-12-08  Martin Baulig  <martin@ximian.com>
15577
15578         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
15579         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
15580
15581 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
15584         correctly.
15585
15586         * exceptions.cs: Disable some tests which depend on properties of x86 fp
15587         arithmetic.
15588
15589 2004-12-08  Raja R Harinath  <rharinath@novell.com>
15590
15591         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
15592
15593 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
15596         bug introduced by the previous patch.
15597
15598 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15599
15600         * mini-ppc.c, objectc.cs: handle large structs passed by value
15601         (fixes bug #69972).
15602
15603 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15604
15605         * mini-ppc.c: OP_ARGLIST implementation from
15606         Geoff Norton  <gnorton@customerdna.com>.
15607
15608 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15609
15610         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
15611         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
15612
15613 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
15614
15615         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
15616
15617 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15618
15619         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
15620         support.
15621
15622 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15623
15624         * mini-sparc.c: Zero out localled-ed memory.
15625
15626         * iltests.il: Add tests for zeroing out localloc-ed memory.
15627
15628 2004-12-04  Martin Baulig  <martin@ximian.com>
15629
15630         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
15631         mono_method_get_signature_full().       
15632
15633 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
15634
15635         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
15636         and some utility functions (always for SSAPRE), integrated SSAPRE.
15637         * mini.h: Likewise.
15638         * driver.c: Added ssapre option.
15639         * ssa.c: Small fix on OP_ARG handling.
15640         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
15641         * Makefile.am: Likewise.
15642
15643 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15644
15645         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
15646         now in the xp code.
15647
15648         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
15649         icall.
15650
15651 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15652
15653         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
15654         
15655         * cpu-s390.md : Increase instruction length of oparglist.
15656
15657         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
15658
15659 2004-11-30  Martin Baulig  <martin@ximian.com>
15660
15661         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
15662         virtual generic methods.  We call a special helper_compile_generic_method()
15663         icall to retrieve the method from the vtable, inflate and compile
15664         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
15665
15666         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
15667
15668 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
15671
15672 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
15673
15674         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
15675         Fixes #69929.
15676
15677 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
15678
15679         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
15680         platforms with PIC aot.
15681
15682 2004-11-28  Martin Baulig  <martin@ximian.com>
15683
15684         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
15685         Fixes gen-112.cs.
15686
15687 2004-11-28  Martin Baulig  <martin@ximian.com>
15688
15689         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
15690         the result of mono_type_get_underlying_type() to check whether
15691         we're byref.
15692
15693 2004-11-26  Martin Baulig  <martin@ximian.com>
15694
15695         * mini.c
15696         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
15697         in the g_assert().
15698
15699 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
15700
15701         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
15702         the same way as the other arguments so they won't get clobbered.
15703
15704         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
15705         calls through R11 since it is clobbered by the trampoline code.
15706
15707 2004-11-26  Raja R Harinath  <rharinath@novell.com>
15708
15709         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
15710         pick up in-tree mscorlib.dll.
15711
15712 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15713
15714         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
15715
15716         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
15717         runtime data/code are now stored in a table similar to the GOT in ELF. 
15718         This allows the code itself to be position independent.
15719
15720         * aot.c: Fix loading of referenced assemblies after the lazy assembly
15721         loading changes.
15722
15723         * aot.c: Attach ELF type (object/function) directives to all global
15724         symbols.
15725
15726         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
15727
15728         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
15729
15730         * mini-amd64.h: Turn on PIC AOT code.
15731
15732         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
15733         returning the offset within an OP_AOTCONST instruction where the GOT
15734         offset needs to be added.
15735
15736         * mini.h: Bump AOT file format version.
15737
15738 2004-11-25  Martin Baulig  <martin@ximian.com>
15739
15740         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
15741         uninflated generic methods.
15742
15743 2004-11-25  Martin Baulig  <martin@ximian.com>
15744
15745         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
15746
15747 2004-11-24  Martin Baulig  <martin@ximian.com>
15748
15749         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
15750         original klass (this only applies for generic instances).
15751
15752 2004-11-24  Martin Baulig  <martin@ximian.com>
15753
15754         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
15755         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
15756         that array).
15757
15758 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15759
15760         * mini.c (mono_method_to_ir): Disable inlining for methods containing
15761         localloc. Fixes #69678.
15762
15763         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
15764         
15765 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
15768         used SSE registers on pinvoke calls. Fixes #69774.
15769
15770 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
15771
15772         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
15773         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
15774
15775 2004-11-23  Raja R Harinath  <rharinath@novell.com>
15776
15777         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
15778         Refer directly to the mcs/ tree.
15779
15780 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15781
15782         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
15783         Check if a trampoline for a synchronized method is required. 
15784
15785 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
15786
15787         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
15788         with localloc if needed. Throe arithmetric exception in
15789         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
15790         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
15791
15792 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
15793
15794         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
15795         types before switching on type.  Fixes #69622.
15796
15797 2004-11-19  Raja R Harinath  <rharinath@novell.com>
15798
15799         * Makefile.am (check-local): New.  Integrate into 'make check'.
15800         (MCS,RUNTIME): Define using in-tree mono and mcs.
15801         (ILASM): New.
15802         (%.exe): Use $(ILASM).
15803
15804 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
15805
15806         * mini-ppc.c: adjust initial prolog size (bug #69691).
15807
15808 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
15809
15810         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
15811         #69664.
15812
15813 2004-11-17  Raja R Harinath  <rharinath@novell.com>
15814
15815         * Makefile.am (clean-local): Rename from 'clean'.
15816
15817 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15818
15819         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
15820         to mono_arch_is_int_overflow. 
15821         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
15822         SIGFPE events.
15823
15824 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15825
15826         * declsec.c|h: New files to support declarative security attributes.
15827         Added function to check if a method has (applicable) security.
15828         * mini.c|h: Add check for declarative security attributes in
15829         mono_method_check_inlining.
15830         * Makefile.am: Added declsec.c and declsec.h to the build.
15831
15832 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15833
15834         * mini.c, mini.h: update to keep dynamic code info per-domain.
15835
15836 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15837
15838         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
15839         (mini_init): Get rid of it from here too.
15840
15841 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
15844         implemented OP_RETHROW (patch by Geoff Norton
15845         <gnorton@customerdna.com>).
15846
15847 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
15848
15849         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
15850         between appdomains.  Fixes appdomain-unload on PPC.
15851
15852 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
15853
15854         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15855         mini-exceptions.c: handle the new wrapper types.
15856         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
15857         token value as a MonoClass* when compiling a wrapper.
15858         mono_jit_create_remoting_trampoline now takes an additional
15859         MonoRemotingTarget parameter.
15860         
15861 2004-11-10  Martin Baulig  <martin@localhost>
15862
15863         * mini.c (mono_method_to_ir): Use `generic_container->context'
15864         rather than creating a new one.
15865
15866 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15867
15868         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
15869
15870         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
15871
15872 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15873
15874         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
15875         the experimental aot cache stuff.
15876
15877 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15878
15879         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
15880         mini-exceptions.c: update to exception clause structure changes.
15881
15882 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15883
15884         * exceptions-x86.c (throw_exception): Fix warnings.
15885
15886         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
15887         for OP_RETHROW.
15888
15889 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15890
15891         * exceptions-sparc.c (get_throw_exception): Really fix this.
15892
15893 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15894
15895         * tramp-*.c: we no longer support icalls without wrappers, so
15896         a bit of code can be removed here
15897
15898 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
15899
15900         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
15901         patch.
15902
15903         * cpu-sparc.md: Add op_rethrow.
15904
15905         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
15906
15907         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
15908
15909         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
15910         * mini-ops.h: Add OP_RETHROW.
15911
15912         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
15913
15914         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
15915
15916 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15917         
15918         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
15919         Makes the output much easier to read
15920
15921 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
15922
15923         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
15924         prevents another huge leak when compiling with ssa. Secondly, the
15925         performance of doing this rather than freeing the lists is much
15926         better. GList does a lock every time you allocate a list link,
15927         so that it can use a memory pool. So, it is better to just use
15928         a memory pool of our own.
15929         
15930         * ssa.c, linear-scan.c: replace g_list_remove_link with
15931         g_list_delete.  The remove one does not free the GList, so we were
15932         leaking memory. On -O=all --compile-all with corlib, this cut down
15933         3 MB of allocations.
15934
15935 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
15938
15939         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
15940
15941         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
15942         into a new function mono_create_jit_trampoline ().
15943
15944 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * trace.c (get_spec): Allow tracing of classes without a namespace.
15947
15948 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
15949
15950         * mini.c: Fix pointer overwrite in mini_method_compile.
15951
15952 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
15953
15954         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
15955         The darwin ABI needs some special handling for 1 and 2 byte structs
15956         Lets use lbz/lhz instead of lwz everywhere.
15957         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
15958         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
15959         Use stb/sth for the former, and put the latter always on stack instead of in
15960         argument registers.
15961
15962 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
15963
15964         * trace.c (is_filenamechar): Add '_'.
15965
15966 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
15967
15968         * mini-s390.c: Fix prolog length to allow for large trace requirements.
15969
15970         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
15971
15972 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
15973
15974         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
15975         depends on libmonogc. Fixes #68805.
15976
15977 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
15978
15979         * mini.c (mono_jit_free_method): Provide extra information for
15980         this error.  Currently this leaks, but will be turned into a
15981         developer option in the future.
15982
15983 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
15984
15985         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
15986
15987 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15988
15989         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
15990         boundary. Fixes reading of PATCH_INFO_R4 and R8.
15991         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
15992
15993 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
15994
15995         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
15996         trampolines for AOT code.
15997
15998 2004-10-22    <vargaz@freemail.hu>
15999
16000         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
16001         constructed types. Fixes #68136.
16002
16003 2004-10-21  Martin Baulig  <martin@ximian.com>
16004
16005         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
16006         if it returns true, unwind the stack to the call instruction.
16007
16008 2004-10-21    <vargaz@freemail.hu>
16009
16010         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
16011
16012         * mini.h: Bump AOT version number.
16013
16014         * objects.cs: Add another test for unbox trampolines.
16015
16016         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
16017         valuetype methods.
16018
16019 2004-10-20    <vargaz@freemail.hu>
16020
16021         * driver.c: Add SHARED to the set of optimizations tested.
16022
16023         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
16024
16025         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
16026         used by CEE_NEWARR.
16027
16028         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
16029
16030 2004-10-20  Martin Baulig  <martin@ximian.com>
16031
16032         * mini-exceptions.c (mono_handle_exception): Call
16033         mono_debugger_handle_exception() to tell the debugger about
16034         catch/finally clauses.
16035
16036 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
16039
16040         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
16041         #68447.
16042
16043 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
16044
16045         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
16046         methods as their native size, fixed bug #57543, #57545.
16047         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
16048         This saves a temporary register and mullw call down into 1 (minor perf
16049         increase for cases like sum = sum * 5;  This use to translate into:
16050             li r11,5
16051             mullw r28,r28,r11
16052         It now translates to
16053             mulli r28,r28,5
16054
16055 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
16056
16057         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
16058         #68388.
16059
16060 2004-10-11  Martin Baulig  <martin@ximian.com>
16061
16062         * mini.c (mono_method_to_ir): If we're a generic method, get the
16063         MonoGenericContainer from our MonoMethodNormal and create a
16064         MonoGenericContext from it.
16065
16066 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16067
16068         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
16069
16070         * basic-long.cs: Add test for checked i8->i2 cast.
16071
16072 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16073
16074         * inssel-ppc.brg: added a couple of speedup rules.
16075
16076 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16077
16078         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
16079         to speed up rebuilds.
16080
16081 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16082
16083         * mini-s390.c: Minor fix to OP_OR_IMM.
16084
16085 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
16088         better. Fixes appdomain-unload.exe on sparc.
16089
16090 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16091
16092         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
16093         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
16094         see bug 67324.
16095
16096 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
16097
16098         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
16099
16100 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16101
16102         * mini.c: Always generate a field read/write wrapper for members
16103         of the class MarshalByRefObject since the actual instance could
16104         be a CBO.
16105
16106 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16107
16108         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
16109
16110 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16111
16112         * driver.c mini.h trace.c: Move the setting of the main assembly into
16113         a separate function called mono_trace_set_assembly () and call it after
16114         actually loading the main assembly. Fixes #66872.
16115
16116 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16117
16118         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
16119         using the code manager.
16120
16121 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16122
16123         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
16124
16125 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16126
16127         * cpu-amd64.md: Fix bug in previous patch.
16128         
16129         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
16130         #66650.
16131
16132 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
16133
16134         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16135         mini-exceptions.c: updates for changed stack walk interface.
16136
16137 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16138
16139         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
16140
16141 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16142
16143         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
16144
16145 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16146
16147         * driver.c (mini_regression_list): Do not call mono_assembly_close 
16148         since assemblies can't be unloaded.
16149         
16150 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * cpu-amd64.md: Fix more instruction lengths.
16153
16154         * cpu-amd64.md: Fix lengths of some instructions.
16155
16156 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
16157
16158         * inssel.brg: Make the array ldelema check aot friendly.
16159
16160 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16161
16162         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
16163
16164         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
16165
16166 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16167
16168         * mini-x86.c: Fix build.
16169
16170         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
16171         mono_type_get_underlying_type () helper function to simplify code.
16172         
16173 2004-09-09  Martin Baulig  <martin@ximian.com>
16174
16175         * mini-amd64.c: Don't access `type->data.klass' directly, call
16176         mono_class_from_mono_type() instead since the type may be a
16177         generic instance.
16178
16179 2004-09-09  Martin Baulig  <martin@ximian.com>
16180
16181         * mini-amd64.c (get_call_info): Fix support for generic instances.
16182         (add_valuetype): Use mono_class_from_mono_type() to get the class
16183         since we can be a generic instance.
16184
16185 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
16186
16187         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
16188
16189 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
16190
16191         * liveness.c: reset spill costs on each scan: bug 62107
16192
16193 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
16194
16195         * exceptions-sparc.c (mono_arch_find_jit_info): remove
16196         unnecessary line that doesn't compile
16197
16198 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16199
16200         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
16201         trampolines, make them call an error function so people can fix their
16202         code.
16203
16204 2004-09-06  Martin Baulig  <martin@ximian.com>
16205
16206         * mini.c (mono_method_to_ir): When initializing locals, handle a
16207         generic instances like a valuetype if it's a valuetype and like a
16208         class if it's a class.
16209
16210 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16211
16212         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
16213         stack. Fixes #64674.
16214
16215         * exceptions.cs: Add test for unwinding of call arguments.
16216
16217 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
16218
16219         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
16220         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
16221         set the carry/borrow flag). The sparc and s390 implementations
16222         can now use optimized versions (and simplify the code). ppc bugfixes.
16223
16224 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16225
16226         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
16227
16228 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * inssel-amd64.brg: Remove leftover 32 bit rule.
16231
16232         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
16233
16234 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
16235
16236         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
16237         mono_arch_find_jit_info functions into a new function. Fix a memory
16238         leak.
16239
16240         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
16241         refactored code.
16242         
16243 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16244
16245         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
16246         as well.
16247         
16248         * exceptions.cs: Add array size tests.
16249
16250         * mini.c: Allocate a separate icall wrapper for each arity of 
16251         mono_array_new_va. Fixes #59509.
16252
16253         * exceptions.cs: Add testcase for 64578.
16254
16255         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
16256
16257         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
16258         
16259 2004-09-02  Martin Baulig  <martin@ximian.com>
16260
16261         * mini.c (mono_method_to_ir): When initializing the locals, call
16262         handle_initobj() on the generic instance itself, not its
16263         underlying type.
16264
16265 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
16268         MonoJitInfo for dynamic methods.
16269
16270         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
16271
16272         * mini.c: Add support for freeing JIT data for dynamic methods.
16273         
16274 2004-09-01  Martin Baulig  <martin@ximian.com>
16275
16276         * mini-x86.c (is_regsize_var): Added support for generic
16277         instances.
16278         (mono_arch_emit_prolog): Make this compile again, use
16279         `x86_push_imm_template (code)'.
16280
16281 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
16282
16283         * mini-x86.c: make all push_imm instructions that get
16284         patched always emit the long form
16285
16286 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16287
16288         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
16289         in a per-domain hash.
16290
16291         * mini-amd64.c (merge_argument_class_from_type): Handle generic
16292         types.
16293
16294 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16295
16296         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
16297         work.
16298         
16299         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
16300         work.
16301
16302         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
16303         Beginnings of SSE2 support.
16304
16305         * exceptions.cs: Add more tests for checked int<->uint casts.
16306
16307 2004-08-28  Martin Baulig  <martin@ximian.com>
16308
16309         * mini-x86.c (mono_arch_instrument_epilog): Added support for
16310         generic instances.
16311
16312         * mini.c
16313         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
16314         Handle generic instances recursively.
16315
16316 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16317
16318         * iltests.il: test for conv.u8 on a constant
16319
16320 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16321
16322         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
16323         LCONV_x4 (shrun_32 (membase)).
16324
16325 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
16326
16327         * inssel-x86.brg: c&p rules for push/setret of long
16328
16329 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16330
16331         * inssel-x86.brg: c&p rules for compare (base, regvar) and
16332         compare (regvar, base)
16333
16334         * inssel-x86.brg: more burg love
16335
16336         * inssel.brg: more cleanup
16337
16338         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
16339
16340 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
16341
16342         * basic-long.cs, basic-calls.cs: new tests for optimization.
16343
16344 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16345
16346         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
16347         patch.
16348
16349 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * mini-amd64.c (read_tls_offset_from_method): Add another case.
16352         
16353 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
16354
16355         * inssel.brg (mini_emit_memcpy): use 
16356         NO_UNALIGNED_ACCESS to disable memcpy optimization
16357
16358 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16359
16360         * mini-amd64.c: Handle generic types in various places.
16361
16362         * mini.c (mono_method_to_ir): Handle generic types in init locals.
16363
16364 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
16365
16366         * mini.c (handle_box): Fix warning.
16367
16368         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
16369
16370         * mini-amd64.h: Enable the emit_state optimization.
16371
16372         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
16373
16374         * mini-amd64.c: Add some new 64 bit peephole opts.
16375
16376         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
16377
16378         * cpu-amd64.md: sreg1 of div instructions must be %rax.
16379
16380         * mini-amd64.c: Register allocator fixes.
16381
16382         * mini.c: Add an optimization to emit_state to avoid allocation of new
16383         registers on some platforms.
16384
16385 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
16388
16389         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
16390         allocation. Fixes #63085.
16391
16392         * basic-long.cs: Add new regression test.
16393
16394         * mini-amd64.c: Register allocator improvements.
16395
16396 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
16397
16398         * mini-amd64.c (read_tls_offset_from_method): Add another code
16399         sequence.
16400
16401         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
16402         instruction sequence for nullifying class init trampolines.
16403
16404         * objects.cs: Add new regalloc test.
16405
16406         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
16407
16408 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16409
16410         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
16411         
16412         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
16413         arguments.
16414
16415         * driver.c: Fix profiling after TLS changes.
16416         
16417         * driver.c (mono_main): Set mono_stats.enabled if needed.
16418
16419         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
16420         CEE_BOX.
16421
16422 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
16423
16424         * mini-x86.c: use a 1 op rather than a 2 op tls access
16425         instruction -> faster.
16426
16427 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16428
16429         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
16430         x86 backend.
16431
16432 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
16433
16434         * exceptions-sparc.c (throw_exception): fix typo
16435
16436 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
16437
16438         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
16439         set tree->dreg correctly with tls. Allow any
16440         register to be used.
16441
16442         * mini-x86.c (read_tls_offset_from_method): add new code
16443         generation pattern seen with GCC.
16444
16445
16446 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
16449         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
16450         exceptions-sparc.c: fix some performance issues in exception
16451         handling and setting of the stack trace for exceptions that were
16452         already thrown.
16453
16454 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16455
16456         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
16457         x86 backend.
16458         
16459         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
16460         registers.
16461
16462 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16463
16464         This patch inlines tls access, when possible.
16465         
16466         * mini.h: new arch functions for TLS intrinsics.
16467         All platforms updated with a stub.
16468
16469         * mini.c: use the new intrinsics
16470
16471         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
16472         arch specific intrinsic for tls variables
16473
16474 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16475
16476         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
16477         under windows.
16478
16479 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16480
16481         * mini.c: thread local allocation
16482
16483 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
16486
16487         * Makefile.am: Link against the static version of libmonogc.
16488         
16489         * Makefile.am: Link the static versions of the convenience libraries
16490         into the mono executable.
16491
16492         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
16493
16494 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16495
16496         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
16497         on integer overflow.
16498
16499         * mini-amd64.c: Reorganize function call code.
16500
16501         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
16502
16503 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16504
16505         * inssel-x86.brg: use xor eax,eax.
16506         
16507         * basic.cs: new tests
16508
16509 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16510
16511         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
16512         in exception throwing code.
16513         
16514 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16515
16516         * inssel-x86.brg: use xor esi,esi.
16517
16518 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
16521         can trace methods compiled during mini_init () too.
16522
16523         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
16524         CEE_CONV_U4.
16525
16526 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
16527
16528         * Makefile.am: static link on x86 (r=zoltan)
16529
16530 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16531
16532         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
16533         code since it causes some programs to fail.
16534
16535 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
16536
16537         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
16538
16539 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16540
16541         * mini.c: ovfops_op_map - add STACK_OBJ case for
16542         CONV_I 
16543         * basic.cs: add test_0_pin_string as test
16544         case for above.
16545
16546 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
16547
16548         * Makefile.am: build C# if srcdir != builddir
16549
16550 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
16551
16552         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
16553         fall-through blocks.
16554
16555 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
16556
16557         * driver.c: enable loop by default again and include abcrem in -O=all.
16558
16559 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
16560
16561         * iltests.il: Add some localloc tests.
16562
16563         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
16564
16565         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
16566         Fixes #62574.
16567
16568         * inssel-amd64.brg: Add some optimizations.
16569
16570         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
16571         for gcc-3.4.
16572
16573         * Makefile.am: Statically link mono against libmono on AMD64.
16574         
16575         * mini-amd64.c inssel-amd64.brg: Optimizations.
16576
16577 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
16578
16579         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
16580
16581         * tramp-amd64.c: Patch calling code in trampolines.
16582
16583 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
16584
16585         * mini-amd64.c: pinvoke struct passing fixes.
16586
16587 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
16588
16589         * mini-sparc.c: redo change, make mono_arch_cpu_init call
16590         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
16591
16592 2004-08-05  Duncan Mak  <duncan@ximian.com>
16593
16594         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16595         CEE_LDELEM_ANY.
16596
16597 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16598
16599         * mini-amd64.c (emit_move_return_value): Move return value for normal
16600         calls too.
16601
16602 2004-08-05  Martin Baulig  <martin@ximian.com>
16603
16604         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
16605         `type->type'; just modify `type' itself when dealing with enums
16606         and generic instances.
16607         (check_call_signature): Make `simple_type' a `MonoType *'.
16608
16609 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16610
16611         * mini.c: Use OP_PADD to add offsets to addresses.
16612
16613         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
16614
16615 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
16616
16617         * mini-sparc.c (mono_arch_emit_epilog): fix check
16618         for folding last op into restore instruction
16619
16620 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16621
16622         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
16623         helper methods using the code manager.
16624         
16625         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
16626
16627         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
16628
16629 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16630         
16631         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
16632           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
16633
16634         * mini-s390.c: fix tail processing
16635
16636 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
16637
16638         * mini-ppc.c: mul.ovf.un exception name fix.
16639
16640 2004-08-03  Martin Baulig  <martin@ximian.com>
16641
16642         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
16643         instances; before jumping to `handle_enum', also modify `ptype'.
16644
16645 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
16646
16647         * cpu-sparc.md: fcall maximal length too small.
16648
16649 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
16650
16651         * mini-amd64.c mini.h: Add initial support for passing/returning 
16652         structures to/from pinvoked methods.
16653
16654 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
16655
16656         * mini-ppc.c: reg allocator fix.
16657
16658 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
16659
16660         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
16661
16662         * inssel.brg: Optimize memset on 64 bit machines.
16663
16664         * mini-amd64.c: Fix some vararg cases.
16665
16666 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16667
16668         * mini-s390.c: Corrected macro in emit_float_to_int
16669
16670         * s390-abi.cs: Tests to exercise the s390 ABI
16671
16672 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
16675         caller saved regs.
16676
16677         * basic.cs: Add a test for add.ovf.un.
16678
16679 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
16680
16681         * mini-sparc.c: add case for OP_IDIV_UN
16682
16683 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16684
16685         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
16686         
16687         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
16688
16689 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
16690
16691         * basic.cs: regression tests.
16692
16693         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
16694         regressions.
16695
16696 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16697
16698         * basic.cs: Add a new test.
16699
16700         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
16701         and AOT. Various fixes and optimizations.
16702
16703         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
16704
16705 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16706
16707         * mini-ppc.c: make sure temp regs are not used for global reg
16708         allocation.
16709
16710 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16711
16712         * cpu-sparc.md: conv_i8 fix for 64bits
16713
16714         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
16715
16716 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
16717         
16718         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
16719         add opcode for cmp BYTE PTR [eax], imm.
16720
16721         * inssel.brg: Make memcpy and memset takes bases.
16722
16723 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * *-amd64.*: More AMD64 work.
16726         
16727 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16728
16729         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
16730         add a compare-not-equal opcode.
16731         
16732 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16733
16734         * mini.c: Use mono_init_from_assembly instead of mono_init.
16735         
16736 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
16737
16738         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
16739
16740         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
16741
16742         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
16743
16744         * inssel.brg: 64 bit fixes.
16745
16746         * mini.h (MonoCallInst): Add some AMD64 specific data.
16747
16748         * mini.h: Add some OP_P opcodes.
16749
16750 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
16751
16752         * basic.cs: tests for 61797 and 61740
16753
16754 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16755
16756         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
16757         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
16758
16759 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
16760
16761         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
16762
16763         * *-amd64*.*: Ongoing AMD64 work.
16764
16765 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
16766
16767         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
16768
16769         * *-amd64*: Ongoing AMD64 work.
16770
16771         * mini-arch.h: Add AMD64 support.
16772
16773         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
16774
16775         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
16776
16777         * mini-ops.h: Add new opcodes.
16778
16779         * Makefile.am: Add AMD64 support.
16780
16781         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
16782         rules into the inssel-long*.brg files.
16783
16784         * *-amd64.*: Add beginnings of AMD64 backend.
16785
16786 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
16787
16788         * mini.c (print_dfn): commenting out the code that prints
16789         the cil. With -O=deadce, this makes -v -v crash.
16790         
16791         * cpu-pentium.md: make checkthis have a length of 2
16792
16793 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
16794
16795         * mini-sparc.h: fix implementations of __builtin
16796         functions for Sun compiler for V9.
16797
16798 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16799
16800         * mini.c: use the new stelem.ref wrapper
16801         * exceptions.cs, arrays.cs: new stelem.ref tests
16802
16803 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16804
16805         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
16806         new XSP should work with these changes).
16807
16808 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
16809         
16810         * inssel-{long32,x86,}.brg: trivial optimizations.
16811         
16812 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
16813
16814         * mini.c: load value when emitting box operation in
16815         constrained calls.
16816
16817 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
16818
16819         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
16820         is one byte shorter than cmp DWORD PTR [eax], 0.
16821
16822 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
16823
16824         * inssel-ppc.brg: arguments on the stack are always
16825         relative to the stack pointer (spotted by Neale Ferguson).
16826
16827 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16828
16829         * exceptions-x86.c: delay appending the method name to the trace until
16830         after mono_jit_info_table_find is called, as this gets the real
16831         MonoMethod.
16832
16833 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16834
16835         * aot.c: register roots
16836
16837 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16838
16839         * aot.c : I could just use PLATFORM_WIN32 flag.
16840
16841 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16842
16843         * aot.c : Reverting the previous fix. This time it broke linux build.
16844
16845 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
16846
16847         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
16848
16849 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16850
16851         * mini.c (handle_stack_args): Remove some more debugging code.
16852         
16853         * mini.c (handle_stack_args): Remove debug output left in by mistake.
16854
16855         * driver.c mini.h aot.c: Allow additional options to be specified with
16856         --aot and pass them to mono_compile_assembly.
16857
16858         * aot.c: Add experimental code to AOT compile all loaded assemblies
16859         on demand and save the code into a cache in the filesystem.
16860
16861         * aot.c: Add support for more wrapper methods.
16862         
16863         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
16864         58863.
16865
16866         * cpu-*.md: Remove removed opcodes.
16867
16868         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
16869         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
16870         related icalls to marshal.c.
16871
16872 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
16873
16874         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
16875
16876         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
16877
16878         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
16879
16880 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16881         * liveness.c: If liveness is recomputated we need to reset the information
16882         for each variable. This way, if the liveness range has been narrowed
16883         by optimizations that happened after the last computation, we can return
16884         a smaller range.
16885         
16886         For example, if you have
16887         
16888         {
16889                 int i = 0;
16890                 
16891                 // Tons of code that does not affect i
16892                 
16893                 i = foo ();
16894                 ...
16895         }
16896         
16897         i = 0 is dead code and will be removed by SSA. However, when
16898         linear scan gets to the code, i will still appear to be live
16899         throughout the entire block. This prevents good register allocation.
16900
16901 2004-07-06  Martin Baulig  <martin@ximian.com>
16902
16903         * debug-mini.c (mono_debug_init_method): Allow
16904         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
16905         (mono_debug_add_icall_wrapper): New method.
16906
16907         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
16908
16909 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
16912         optimization.
16913
16914 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16915
16916         * aot.c (mono_aot_load_method): Fix loading of debug info.
16917
16918 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16919
16920         * aot.c: Add logging support.
16921
16922 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16923
16924         * mini.h: Add prototype for mono_print_method_from_ip.
16925
16926         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
16927
16928         * inssel.brg: 64 bit fixes.
16929
16930         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
16931         inssel-long32.brg.
16932
16933         * Makefile.am: Add SPARC64 support.
16934
16935 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16936
16937         * aot.c: Fix alignment problems on 32 bit platforms.
16938
16939 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
16940
16941         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
16942         SPARC64.
16943
16944         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
16945         problems.
16946
16947         * mini.h: Bump AOT file version. Some 64 bit fixes.
16948
16949 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16950
16951         * inssel-sparc.brg: Add new rule to avoid register moves.
16952
16953         * inssel.brg: Add ldind_to_load_membase helper function.
16954
16955 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16956
16957         * mini.c: OffsetToStringData intrinsic.
16958         
16959 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
16962
16963         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
16964         regression tests.
16965
16966         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
16967 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
16968
16969         * mini.c: reinstated mono_compile_get_interface_var()
16970         on x86, too, since the change breaks the Gtk# build there as well.
16971
16972 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
16973
16974         * driver.c: remove loop from the default optimizations: it seems to
16975         interact badly with some of the other options (see bug #60613).
16976
16977 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
16978
16979         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
16980         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
16981
16982 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
16983
16984         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
16985         vararg-using methods.
16986
16987 2004-06-21  Martin Baulig  <martin@ximian.com>
16988
16989         * mini/mini-exceptions.c
16990         (mono_handle_exception): Added `gpointer original_ip' argument.
16991         After calling mono_unhandled_exception(), call
16992         mono_debugger_unhandled_exception() and if that returns true,
16993         restore the context and return.
16994
16995 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16996
16997         * mini-ppc.c: prefer the use of relative branches so
16998         they won't need to be patched in aot code (patch from Patrick Beard).
16999
17000 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17001
17002         * aot.c: patch from Patrick Beard to make the output assembly
17003         more correct for the MacOSX assembler. Small tweak to
17004         generate sane images on Linux/PPC, too.
17005
17006 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17007
17008         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
17009         case until bug #59509 is fixed (shows up in #60332).
17010
17011 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17012
17013         * mini.c: make sure the needed wrappers are compiled, too, with
17014         precomp.
17015
17016 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
17017
17018         * driver.c: remove NPTL reference in --version output.
17019
17020 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17021
17022         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
17023         generate valid assembly for the Mach-O assembler.
17024
17025 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17026
17027         * driver.c: don't include abcrem in the all optimization specifier
17028         since it slows down jit compilation too much for now.
17029
17030 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
17031
17032         * mini.c: use BIGMUL only if both operands have the same signage.
17033         * iltests.il: Test for bug 60056. (errors related to signage in
17034         BIGMUL).
17035
17036         r=lupus.
17037
17038 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
17039
17040         * mini.c, aot.c: memory leak fixes.
17041
17042 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17043
17044         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
17045
17046 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
17047
17048         * Makefile.am: remove the -static hack completely, it links in
17049         statically glib as well.
17050
17051 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
17052
17053         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
17054         * exceptions.cs: make it compile with new mcs/csc.
17055
17056 2004-06-03 Massimiliano Mantione <massi@ximian.com>
17057         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
17058         and added relevant test case.
17059
17060 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17061
17062         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
17063         regressions in gtk-sharp.
17064
17065 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * exceptions.cs: New regression tests.
17068
17069         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
17070
17071 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17072
17073         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
17074
17075 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17076
17077         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
17078
17079         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
17080
17081 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
17082
17083         * mini.c (mono_jit_runtime_invoke): Init class in this
17084         method instead of trusting mono_jit_compile_method to
17085         do the work (because wrappers can be in object class)
17086
17087 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
17088
17089         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
17090
17091         * basic-long.cs: New regression test.
17092
17093 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
17094
17095         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
17096         and div/rem checks.
17097
17098 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17099
17100         * Makefile.am: fix miguel's change to build mono statically against
17101         libmono (track build dependencies).
17102
17103 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17104
17105         * cfold.c: Some glib versions do not have G_MININT32.
17106
17107 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
17108
17109         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
17110         with precision of tan, atan, sin and cos, and implemented related
17111         regressions tests (fixes bug 54467, but one new problem appeared and
17112         is not fixed yet).
17113
17114 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17115
17116         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
17117
17118         * exceptions.cs: Add test for constant folding && division by zero.
17119
17120         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
17121         since driver.c is in libmono too, so the optimization was useless.
17122
17123         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
17124         variable to driver.c so the compiler can emit more efficient code to
17125         access them.
17126
17127 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17128
17129         * Makefile.am: don't distribute generated inssel.[ch] files.
17130
17131 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17132
17133         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
17134         into the default appdomain. Fixes #58707.
17135
17136         * jit-icalls.c: Remove the broken approximation for truncl, doing
17137         no conversion is better.
17138
17139         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
17140         Fixes #58863.
17141
17142 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17143
17144         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
17145         of the mcrxr instruction which is not available on some processors
17146         even if it's documented to be. Implement add and sub overflow correctly
17147         (still not complete for long unsigned). Speed up icalls a bit.
17148
17149 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
17150
17151         * mini.c (mono_jit_compile_method_with_opt): Make sure that
17152         we run .cctor in the current domain instead of target_domain.
17153         
17154         Fixes bug #58558, .cctor not being called in -O=shared.
17155
17156 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17157
17158         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
17159
17160 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
17161
17162         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
17163         which can be done with an imm8, do it that way.
17164         (mono_arch_output_basic_block): ditto for a jmp
17165         (mono_arch_emit_prolog): Computate maximum offset of a label.
17166
17167 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
17168
17169         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
17170         now tries to allocate prefered physical reg's for virtual
17171         regs. This reduces the number of emited spills/loads with
17172         20-30% on our core assemblies.
17173
17174 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17175
17176         * jit-icalls.c: truncl() is not needed and trunc() is
17177         the correct thing to do anyway (bug #58287).
17178
17179 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
17180
17181         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
17182         if available.
17183
17184 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17185
17186         * driver.c: enable loop optimizations by default.
17187
17188 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
17189
17190         * mini-x86.c: fix calc of max loop size when aligning loops start.
17191
17192 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
17195         the stack.
17196
17197 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17198
17199         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
17200         should set carry.
17201
17202         * basic-long.cs: Add tests for add/subtract of immediates with carry.
17203
17204         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
17205         
17206         * mini.c (inline_method): Allways inline some wrappers even if the cost
17207         is too large. Fixes #58785.
17208
17209         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
17210         
17211 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17212
17213         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
17214         (crichton@gimp.org). Beginning of support for sparc/linux.
17215
17216         * mini-sparc.c: Optimize retrieval of LMF address.
17217
17218 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
17219
17220         * exceptions-ppc.c:  handle alloca in methods with clauses.
17221
17222 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
17223
17224         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
17225
17226 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17227
17228         * mini.c: Delegate most of the abort signal work to 
17229           mono_thread_request_interruption, which also handles Stop and Suspend
17230           states.
17231
17232 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17233
17234         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
17235         supports the save/restore lmf opcodes.
17236
17237 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
17238
17239         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
17240         by gcc-3.4 as well.
17241
17242         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
17243
17244 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17245
17246         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
17247         methods which contain array accesses.
17248
17249         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
17250         boundaries. Fixes #58537.
17251
17252         * iltests.il: Add regression test for #58537.
17253
17254 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17255
17256         * mini-x86.c (mono_arch_local_regalloc): Last part of
17257         fix for bug #58633 (releasing register to early).
17258
17259 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
17260
17261         * basic-long.cs: Add new regression test.
17262
17263 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
17264
17265         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
17266         register too early on the chain.
17267
17268 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17269
17270         * mini.c (create_helper_signature): Use a helper function to reduce
17271         the code which needs to be written. Also set the calling convention of
17272         icalls on windows. Fixes #57840.
17273
17274 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
17275
17276         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
17277         exceptions-ppc.c: added helper function to get the instruction address
17278         from a signal handler context.
17279
17280 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17281
17282         * helpers.c: use g_get_tmp_dir. Invokes happyness 
17283         from gonzalo.
17284
17285 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17286
17287         * helpers.c: Add new env variable to pass args to objdump.
17288         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
17289
17290 2004-05-17  Radek Doulik  <rodo@ximian.com>
17291
17292         * Makefile.am (common_sources): added abcremoval.h so it get
17293         disted and daily mono packages on go-mono.com will build again
17294
17295 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
17296
17297         * abcremoval.c: Fixed coding style, added copyright header.
17298
17299         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
17300
17301         * mini.h: Added prototype for abc removal main function.
17302
17303         * build_relations_propagation_table.pl: Added copyright header.
17304
17305 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17306
17307         * basic-long.cs: reg test for complex ceq_long bug.
17308
17309 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
17310
17311         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
17312         reg in long and clob case (bug #58343). Fixed/added comments.
17313
17314 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17315
17316         * mini.c (mono_jit_runtime_invoke): Follow new convention
17317         of calling the invoke method with an function pointer.
17318
17319 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * ChangeLog: Fix author of memory leak patch.
17322
17323 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
17324
17325         * Makefile.am: fix make dist as well...
17326
17327
17328 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
17329
17330         * cfold.c: Made so that conversions from pointer to int4 are no-ops
17331         on archs where pointers are 4 bytes long.
17332
17333         * Makefile.am: Added abcremoval.c source file.
17334
17335         * abcremoval.c: Added abcremoval.c.
17336
17337         * abcremoval.h: Added abcremoval.h.
17338
17339         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
17340
17341         * inssel.brg: Enabled bounds check removal.
17342
17343         * mini.c: Added support for abcrem optimization.
17344
17345         * mini.h: Added abcrem optimization label.
17346
17347         * driver.c: Added support for abcrem optimization.
17348
17349         * propagated_relations_table.def: Added propagated_relations_table.def.
17350
17351 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
17352
17353         * mini.c, cfold.c: fix style.
17354
17355 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17356
17357         * mini.c: handle issue with the low-level implementation of
17358         some long opcodes (bug #54209).
17359
17360 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
17361
17362         * basic.cs: test for my new cmov stuff.
17363
17364 2004-05-13      Patrik Torstensson
17365
17366         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
17367         opt and added peephole documentation.
17368
17369 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
17370
17371         * tramp-ppc.c: rewrote the generic trampoline code.
17372
17373 2004-05-11      Patrik Torstensson
17374
17375         * mini-x86.c: optimize long shl/shr asm code (one less branch)
17376
17377 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17378
17379         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
17380
17381         * mini.h mini.c dominators.c: Applied patch from Derek Woo
17382         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
17383
17384         * mini.c: Add new icalls for AsAny marshalling.
17385
17386 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
17387
17388         * tramp-ppc.c, mini-ppc.c: more cleanups.
17389
17390 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17391
17392         * mini.c: no warnings.
17393
17394 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17395
17396         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
17397
17398 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17399
17400         * mini.c: In the thread abort signal handler, if the thread is in the
17401         process of being stoped, don't throw the Abort exception, just stop the
17402         thread.
17403
17404 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
17405
17406         * tramp-ppc.c: removed old code.
17407
17408 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17409
17410         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
17411         do some simple speed optimizations on ppc.
17412
17413 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
17414
17415         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
17416         and large offsets in load/store.
17417
17418 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
17421         it causes regressions.
17422
17423 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
17424
17425         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
17426         support.
17427
17428 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17429
17430         * jit-icalls.c: remove warnings.
17431         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
17432         speedups for unsafe code.
17433
17434 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
17435
17436         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
17437
17438 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
17439
17440         * basic-calls.cs: Add new regression test.
17441
17442         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
17443         more portable.
17444
17445         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
17446
17447         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
17448         is no longer used.
17449
17450 2004-05-06      Patrik Torstensson
17451
17452         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
17453         long reg allocation in any reg (not only eax:edx) and implemented 
17454         long shl/shr ops in asm instead of helpers.
17455
17456 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17457
17458         * mini-sparc.h: Fix warnings.
17459
17460         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
17461         stack.
17462
17463         * mini-exceptions.c (mono_handle_exception): Call the filter in a
17464         separate statement for clarity.
17465
17466         * mini-sparc.c: Update status.
17467
17468 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
17469
17470         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
17471         here.
17472
17473 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17474
17475         * inssel-ppc.brg: another small pre-release workaround:
17476         we don't do overflow detection for long_sub_un.
17477
17478 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17479
17480         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
17481         (also works around a weird ppc bug: 57957).
17482
17483 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
17484
17485         * tramp-ppc.c: trampoline fixes.
17486
17487 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
17488
17489         * mini-ppc.c: fixed typos.
17490
17491 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17492
17493         * mini-ppc.c, exceptions-ppc.c: more code saves registers
17494         at the top of the stack. Fixed typos. Use a frame registers
17495         for all the methods with exception clauses.
17496
17497 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17498
17499         * exceptions-ppc.c: restore fp registers.
17500
17501 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
17502
17503         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
17504         order from the stack top (moved the stack room to save the
17505         return value for trace after the param area). Fixed corruption
17506         in restoring registers on unwind.
17507
17508 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17509
17510         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
17511
17512 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17513
17514         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
17515         and prolog/epilog for methods that use it. Allow
17516         enough param area room for varargs methods. Fix miguel's
17517         breakage in exception handling.
17518
17519 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
17520
17521         * Makefile.am: run genmdesc only on current arch.
17522
17523 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17524
17525         * exceptions-x86.c:
17526         * mini-x86.h: fix the build on windows.
17527
17528 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * 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.
17531
17532         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
17533
17534         * mini-exceptions.c: New file.
17535         
17536         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
17537         Move some parts of the x86 exception handling code to an 
17538         arch-independent file so it can be shared with other ports.
17539
17540 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17541
17542         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
17543
17544 2004-04-26  David Waite  <mass@akuma.org>
17545
17546         * driver.c: remove comma from end of enumeration declaration
17547
17548 2004-04-26  Jackson Harper  <jackson@ximian.com>
17549
17550         * driver.c: parse config file before loading first assembly. This
17551         allows the user gac to be enabled/disabled. 
17552         
17553 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
17554
17555         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
17556         simpler mechanism: we do not care what is encoded initially
17557         (branch absolute or relative), we care about the code and its
17558         target.  I kept the old code for reference for now.
17559
17560         The new code tries first to determine if the jump is anywhere in
17561         the -/+32 absolute meg range, if it succeeds, it encodes using the
17562         absolute branch;  If not, it tried to find something in the
17563         relative range, if not, it uses the handle_thunk code. 
17564
17565 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
17566
17567         * exceptions-ppc.c: use the correct ip register on macosx.
17568
17569 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
17570
17571         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
17572
17573 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
17574
17575         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
17576         Raise exception on integer divide by zero by hand since the hw
17577         doesn't support it. Handle NaNs in FP compares.
17578
17579 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17580
17581         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
17582         code reducing duplication between the platforms and enabled
17583         signal exception handling (on linux for now).
17584
17585 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
17586
17587         * exceptions-ppc.c: more macosx support.
17588
17589 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
17590
17591         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
17592
17593 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17594
17595         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
17596
17597 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
17598
17599         * iltests.il: more tests.
17600
17601 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17602
17603         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
17604         vars as well.
17605
17606 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17607
17608         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
17609
17610 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
17611
17612         * liveness.c: Mark variables as volatile in all basic blocks reachable
17613         from exception clauses.
17614
17615 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
17616
17617         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
17618         inlining.
17619
17620 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17621
17622         * iltests.il, basic.cs: more tests for regalloc.
17623
17624 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17625
17626         * iltests.il: Some tests for register allocation modifications
17627         I have locally.
17628
17629 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
17630
17631         * exceptions.cs: Add regression test for bug #56782.
17632
17633         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
17634         original stack trace if an exception is rethrown. Fixes #56782. Oh,
17635         the beauty of fixing the same thing in 5 different files...
17636
17637 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
17638
17639         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
17640         methods.
17641
17642 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
17643
17644         * mini.c: Add support for STRWLPARRAY marshalling convention.
17645
17646 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17647
17648         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
17649         to init the context to setup the regs pointer).
17650
17651 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
17652
17653         * exceptions-ppc.c: more exceptions work.
17654
17655 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17656
17657         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
17658         not allowed.
17659
17660 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17661
17662         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
17663         can use the memory directly.
17664
17665         * cpu-pentium.md: Update documentation from a post from Zoltan. 
17666
17667         add x86_add_membase, x86_sub_membase, x86_mul_membase
17668
17669 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
17670
17671         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
17672         GENERAL_REGS they were also hardcoded for all PPC ports.
17673
17674         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
17675
17676         Remove hard-coded limit for floating point registers, use
17677         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
17678
17679         Notice that in MacOS X calling conventions you can fit a lot more
17680         floating point values in registers, so I should update the PInvoke
17681         test to excercise the passing of floating point values on the
17682         stack (currently broken).
17683         
17684 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
17685
17686         * tramp-ppc.c (create_trampoline_code): Added
17687         JUMP_TRAMPOLINE_SIZE. 
17688         (ppc_magic_trampoline): Follow the pattern from
17689         x86_magic_trampoline: if code is set to zero, return. 
17690         (create_trampoline_code): Always pass MonoMethod to the jump
17691         trampoline, before it was passing a null.
17692         (mono_arch_create_jump_trampoline): Implement the jump stub, could
17693         share the code with mono_arch_create_jit_trampoline. 
17694
17695         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
17696         implemented.
17697         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
17698         implemented.  
17699
17700         * cpu-g4.md: Added length for jmp instruction, the worst case
17701         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
17702         for save_lmf).
17703
17704 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
17707
17708 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
17709
17710         * mini.c: Only set bblock->real_offset when adding a new bblock, and
17711         before each IL instruction.
17712
17713         * mini.c (CEE_BOX): Fix warnings.
17714
17715 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17716
17717         * mini.c: removed a few unused vars and extra whitespace.
17718
17719 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
17720
17721         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
17722         checks.
17723         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
17724         index.
17725         (OP_GETCHR): use the above
17726         (CEE_LDELEMA): use the above.
17727
17728         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
17729         version of the generic impl.
17730         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
17731         (CEE_LDELEMA): use the above.
17732
17733 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17734
17735         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
17736         Fixes #56317.
17737
17738         * iltests.il: Added new regression test for #56317.
17739
17740 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
17743         under NetBSD. Fixes #56450.
17744
17745         * liveness.c (update_gen_kill_set): Fix previous patch.
17746
17747 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17748
17749         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
17750
17751 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
17752
17753         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
17754         ldsfld and ldsflda.
17755
17756         * inssel-sparc.brg: Add more optimizations.
17757
17758         * mini-sparc.c: Replace multiply/divide with shifts if possible.
17759
17760 2004-04-01  Martin Baulig  <martin@ximian.com>
17761
17762         * mini.c (handle_box): New static function; moved the
17763         implementation of CEE_BOX here.
17764         (mono_method_to_ir): Added `constrained_call' variable.
17765         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
17766         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
17767         mono_method_get_constrained() to get the method.
17768
17769 2004-04-01  Martin Baulig  <martin@ximian.com>
17770
17771         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
17772         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
17773         (mono_method_to_ir): We don't need these macros anymore since
17774         mono_class_get_full() already takes care of it. 
17775
17776 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17777
17778         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
17779         use @function (as doesn't accept #function here) and check the return
17780         value of system and stop if fails.
17781
17782 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17783
17784         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
17785
17786 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
17789
17790         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
17791
17792         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
17793         #56223.
17794
17795         * basic-long.cs: Add test for negation of Int64.MinValue.
17796
17797 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
17798
17799         * mini-sparc.c: Update status.
17800
17801         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
17802
17803         * exceptions-sparc.c: Fix return value in filters.
17804
17805         * inssel-sparc.brg: Fix register allocation in some rules.
17806
17807 2004-03-28  Martin Baulig  <martin@ximian.com>
17808
17809         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
17810         if neccessary.  
17811
17812 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-x86.c (mono_arch_patch_code): Fix warnings.
17815         
17816         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
17817         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
17818         remove unused conv_u4 opcode.
17819
17820         * mini-x86.c: Remove valgrind workaround since it slows down things
17821         even when mono is not run under valgrind.
17822
17823 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * mini-sparc.c: Update status.
17826
17827         * inssel-sparc.brg: Add some optimizations.
17828
17829         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
17830         future delay slot filling. Add support for varargs, tail calls and JMP.
17831
17832         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
17833         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
17834
17835         * inssel.brg: Fix register allocation in OP_ARGLIST.
17836
17837         * inssel.brg: Fix warnings.
17838
17839 2004-03-25  Martin Baulig  <martin@ximian.com>
17840
17841         * mini.c (inflate_generic_field): Removed.
17842         (mini_get_method): Removed, use mono_get_method_full(),
17843         (mini_get_class): Removed, use mono_class_get_full().
17844         (mono_method_to_ir): Pass our generic context to
17845         mono_field_from_token().        
17846
17847 2004-03-25  Martin Baulig  <martin@ximian.com>
17848
17849         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
17850         of a `MonoMethod *'.
17851         (mini_get_method): Take a `MonoGenericContext *' instead
17852         of a `MonoMethod *'.
17853         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
17854         a new local variable called `generic_context' which holds the
17855         current `MonoGenericContext *'; use it to lookup things.
17856
17857 2004-03-24  Martin Baulig  <martin@ximian.com>
17858
17859         * mini.c (mini_get_class): New static method; if we're inside a
17860         generic instance, inflate the class if neccessary.
17861         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
17862
17863 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
17864
17865         * iltests.il: New regression test for #55976.
17866
17867         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
17868         #55976.
17869
17870 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17871
17872         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
17873         output.
17874
17875 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * liveness.c: Consider SSA stores as well as loads when making vars
17878         volatile.
17879
17880         * exceptions.cs: New regression tests for register allocation.
17881         
17882 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
17883
17884         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
17885         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
17886           domain lock only to protect puntual access to data structures.
17887           Added access lock for sighash, jit_icall_hash_name, 
17888           jit_icall_hash_addr and domain->code_mp.
17889
17890 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * driver.c: Print SIGSEGV handling method.
17893
17894         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
17895
17896         * mini.c (setup_jit_tls_data): Handle case when this is called
17897         multiple times for a thread.
17898
17899         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
17900         is different from fbxx_un. Fixes #54303. Also use constants instead of
17901         magic numbers in a lot of places.
17902
17903 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
17904
17905         * exceptions.cs: Fix cctor test when --regression is used.
17906
17907 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
17908
17909         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
17910         for Linux/ppc.
17911
17912 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
17913
17914         * inssel-ppc.brg: fixed register assignments for some rules.
17915
17916 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * exceptions.cs: Add test for exceptions in static constructors.
17919
17920         * mini.c (mono_jit_compile_method_with_out): Move the calling of
17921         static constructors outside the domain lock. Fixes #55720.
17922
17923 2004-03-17  Martin Baulig  <martin@ximian.com>
17924
17925         * mini.c (get_generic_field_inst): Removed, this'll never happen.
17926         (inflate_generic_field): Take the `MonoMethod *' instead of the
17927         `MonoClass *' and added support for generic method.
17928         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
17929         have a `field->parent->gen_params', only inflate the field if it's
17930         an open constructed type.
17931
17932 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
17935         exception object instead of the preconstructed ones.
17936
17937 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17938
17939         * mini.c: reverted changed to sigsegv_signal_handler commited
17940         accidentally in the previous patch.
17941
17942 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17943
17944         * mini.c:
17945         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
17946         running --aot with an old assembly.
17947
17948 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
17949
17950         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
17951         point values.
17952
17953         * mini-sparc.c: Add support for v9 branches with prediction.
17954
17955 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
17956
17957         * mini.c (mini_init): #warning is GNUC only
17958
17959         * mini-sparc.h: implement __builtin_frame_address
17960         and __builtin_return_address for Sun C compiler
17961
17962 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
17965
17966 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
17967
17968         * basic-calls.cs: Add test for unaligned byref long argument passing.
17969
17970         * mini-ops.h: Add sparcv9 compare and branch instructions.
17971
17972         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
17973         v9 instructions if we have a v9 cpu.
17974
17975         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
17976         registers for global allocation.
17977
17978         * exceptions-sparc.c: Fixes.
17979         
17980 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
17981
17982         * liveness.c (mono_analyze_liveness): Optimized version.
17983
17984         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
17985
17986         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
17987         sparc work.
17988
17989         * basic-float.cs basic-calls.cs: New regression tests.
17990
17991 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
17994         sigaltstack implementation.
17995
17996         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
17997         
17998         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
17999         stuff if SIGSEGV_ON_ALTSTACK is not defined.
18000
18001 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18002
18003         * mini.c: Fix warnings.
18004         
18005         * mini.c (mono_resolve_patch_target): New function which contains the
18006         arch independent part of the patching process.
18007
18008         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
18009         patching code to a separate function.
18010
18011 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
18012
18013         * mini.c (add_signal_handler): ifdef out on Windows
18014
18015 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
18016
18017         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
18018         cpu-sparc.md: Add exception handling support + other fixes.
18019
18020         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
18021         typed GC detection in --version.
18022
18023         * basic.cs exceptions.cs: New regression tests.
18024
18025         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
18026         the arch specific code can store data during a compilation.
18027
18028         * mini-ops.h: Add OP_SETFRET.
18029
18030         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
18031         function, register a separate icall for each arity, so the icalls can
18032         get a wrapper.
18033         
18034         * mini.c (mono_print_tree): Print negative offsets in a more readable
18035         form.
18036         
18037         * mini.c: Make signal handling work on sparc.
18038         
18039         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
18040
18041         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
18042
18043         * jit-icalls.c: Emulate truncl by aintl on solaris.
18044
18045         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
18046
18047 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
18050
18051 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18052
18053         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
18054         a MarshalByRef type, inline a method that performs the check, taking into
18055         account that the object can be a proxy. Also implemented tow new opcodes:
18056         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18057         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
18058         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
18059
18060 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
18061
18062         * mini-ppc.c: if a relative branch displacement is too big
18063         but it points to and area reachable with an absolute branch, 
18064         avoid the thunks.
18065
18066 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
18067
18068         * mini.c: optimize small copies in cpblk.
18069
18070 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
18071
18072         * basic-calls.cs basic-float.cs: New regression tests.
18073
18074         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
18075         negative offsets from %fp. Implement localloc. Fix local register 
18076         allocation. Fix the case when the this argument needs to be saved to
18077         the stack. Implement some missing opcodes.
18078
18079 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * mini.c (mini_method_compile): Reenable global regalloc in methods
18082         with exception handlers.
18083
18084         * linear-scan.c (mono_varlist_sort): Fix warning.
18085
18086         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
18087
18088         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
18089         regalloc costs.
18090
18091         * liveness.c: Make all variables uses in exception clauses volatile, to
18092         prevent them from being allocated to registers. Fixes #42136.
18093
18094 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
18095
18096         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
18097         causes regressions.
18098
18099         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
18100         argument to mono_arch_regalloc_cost.
18101
18102         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
18103         precisely.
18104
18105 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
18108         Make the cost of allocating a variable to a register arch dependent.
18109
18110         * basic-calls.cs: Fix compilation of tests.
18111         
18112         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
18113         helper function to cut back on the number of #ifdefs needed.
18114
18115         * mini-ppc.c: Fix compilation.
18116
18117         * basic-calls.cs: New regression tests.
18118
18119         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
18120
18121         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
18122         of l0 since that is callee saved.
18123
18124         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
18125         to virtual calls.
18126
18127         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
18128         of delay instruction.
18129
18130         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
18131
18132         * mini.h (MonoCallInst): Add 'virtual' flag.
18133
18134         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
18135
18136 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * *.cs: New regression tests.
18139
18140         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
18141         work.
18142
18143         * mini.c (mono_runtime_install_handlers): Fix build.
18144
18145         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
18146         'signal_stack_size' members.
18147
18148         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
18149         alternate signal stack.
18150
18151         * exceptions-x86.c: Add stack overflow handling.
18152
18153         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
18154         functions to arch independent code.
18155
18156         * mini.c (mono_print_tree): Print more detailed info for load_membase
18157         opcodes.
18158         
18159 2004-02-23  Martin Baulig  <martin@ximian.com>
18160
18161         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
18162
18163 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
18164
18165         * mini-x86.c: fixed reg allocation for div/rem.
18166
18167 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
18168
18169         * driver.c (mono_main): Report some configuratio options on --version.
18170
18171 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
18172
18173         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
18174         low in the address space. Correctly flush memory in thunks where we
18175         output native code.
18176
18177 2004-02-20  Martin Baulig  <martin@ximian.com>
18178
18179         * mini.c (mini_get_method): New static method; inflate all generic
18180         methods and methods in open generic instances.
18181         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
18182         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
18183
18184 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
18187
18188         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
18189
18190 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
18191
18192         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
18193
18194         * mini-sparc.c (flushi mono_arch_output_basic_block): make
18195         it compile using Sun's compiler.
18196
18197 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
18198
18199         * 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.
18200
18201         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
18202
18203 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18204
18205         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
18206         code.
18207         * mini-ppc.c: handle calls outside of the allowed range with thunks
18208         allocated using the code manager.
18209         * tramp-ppc.c: use the code manager to hold generated native code.
18210         Fixed the magic trampoline to just patch vtable entries.
18211
18212 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
18213
18214         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
18215         independent file.
18216
18217 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
18218
18219         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
18220         PPC.
18221
18222         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
18223         if we have a working __thread implementation.
18224
18225         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
18226         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
18227
18228 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
18229
18230         * mini-x86.c: Fix compilation under gcc 2.
18231         
18232 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
18235         contains a call to the wrapped function.
18236
18237         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
18238         OP_<CALL>_IMM opcodes, and use them under X86.
18239         
18240         * mini.c (mono_jit_find_compiled_method): Fix warning.
18241
18242         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
18243
18244         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
18245
18246         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
18247         functionality to mini.c.
18248
18249         * mini.c (mono_create_jump_trampoline): New function to create a jump
18250         trampoline. Return a compiled method instead of a trampoline if it
18251         exists. Add a cache for jump trampolines.
18252
18253         * mini.c (mono_jit_find_compiled_method): New function to return a
18254         compiled method if it exists.
18255
18256         * mini-x86.c: Call mono_create_jump_trampoline instead of 
18257         mono_arch_create_jit_trampoline.
18258
18259         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
18260         a jump trampoline. Fixes #52092.
18261         
18262 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
18265         which is not up-to-date. Add check_corlib_version () instead.
18266
18267         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
18268         have to call it.
18269         
18270         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
18271         since newer valgrind versions do not need it.
18272
18273         * mini.c (mono_jit_compile_method_with_opt): New helper function to
18274         compile a method with a given set of optimizations.
18275
18276         * mini.c: Compile icall wrappers on-demand instead of at startup.
18277
18278         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
18279         wrapper for an icall.
18280
18281 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
18282
18283         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
18284         #54063.
18285
18286         * iltests.il: Add test for non-empty stack before switch instruction.
18287
18288 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
18289
18290         * mini.c: Add support for new stringbuilder marshalling conventions.
18291
18292         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
18293
18294 2004-02-01  Martin Baulig  <martin@ximian.com>
18295
18296         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
18297         in `ginst->mtype_argv'.
18298
18299 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
18300
18301         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
18302         facilitate grepping.
18303
18304 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
18305
18306         * mini.c: fixed buglet in initobj generic implementation for references.
18307
18308 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
18309
18310         * Makefile.am: make the version script conditional.
18311         * jit-icalls.c: handle missing truncl().
18312
18313 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
18314
18315         * exceptions.cs: Add more tests for double->int conversion.
18316
18317         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
18318         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
18319
18320 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
18321
18322         * driver.c: make --verbose --version emit an error
18323         if the loaded corlib doesn't match the runtime version.
18324
18325 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18326
18327         * mini-ppc.h: export ppc_patch().
18328         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
18329         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
18330         on par or better than on MacOSX.
18331
18332 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
18333
18334         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
18335         mono_lookup_pinvoke_call.
18336
18337         * mini-x86.c: Under windows, the default pinvoke calling convention is
18338         stdcall. Fixes #52834.
18339
18340         * mini.c (optimize_branches): Add an upper bound to the number of
18341         iterations to prevent infinite loops on strange loops. Fixes #53003.
18342
18343 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
18344
18345         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
18346         and ISINST. Fixes #52093.
18347
18348         * objects.cs (test_0_vector_array_cast): New tests.
18349         
18350 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
18351
18352         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
18353         checking in Array.Set ().
18354
18355         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
18356         #52590.
18357
18358         * object.cs (test_0_multi_array_cast): New regression test.
18359
18360 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
18361
18362         * exceptions-ppc.c: fix build on Linux/PPC.
18363
18364 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
18367         running under valgrind.
18368         (x86_magic_trampoline): Fix build bustage.
18369
18370         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
18371         negative values as well. This is needed for the encoding of the line number
18372         info, since sometimes the line numbers are not in increasing order.
18373
18374 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * cpu-pentium.md (localloc): Increase the size of the localloc 
18377         instruction since it is a loop under Win32.
18378
18379         * debug-mini.c (record_line_number): Get rid of unneccesary memory
18380         allocation.
18381
18382 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
18383
18384         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
18385         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
18386         Max Horn (max@quendi.de). Fix file names in comments.
18387
18388 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
18389
18390         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
18391         avoid stack overflow.
18392         (replace_usage): Avoid uninitialized variable warnings.
18393
18394         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
18395         and taking the address of valuetype variables.
18396
18397 2004-01-03  Patrik Torstensson
18398
18399         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
18400         for other purposes than FP later on.
18401
18402 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
18403
18404         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
18405         of tail calls.
18406
18407 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18408
18409         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
18410
18411 2003-12-30  Patrik Torstensson <p@rxc.se>
18412
18413         * mini-x86.h: Decreased number of availiable fp regs.
18414         Solves corner cases with FP spilling.
18415
18416 2003-12-23  Patrik Torstensson <p@rxc.se>
18417
18418         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
18419         for floating point stack tracking / spilling on x86. 
18420         Fixes bug #49012.
18421         
18422         * basic-float.cs: added float mul overflow test.
18423
18424 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
18425
18426         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
18427
18428 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18429
18430         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
18431         supports for cond branches that overflow the immediate
18432         overflow offset. mcs can compile simple programs.
18433
18434 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
18435
18436         * exceptions-ppc.c: exception handling support wip:
18437         finally handlers get run on exception.
18438
18439 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
18442         profiling.
18443
18444 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18445
18446         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
18447         initial support for stack walking and unwinding.
18448
18449 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
18450
18451         * driver.c (mono_main): Make corlib-out-of-sync message more 
18452         descriptive. Also remove verify_corlib call.
18453
18454 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18455
18456         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
18457         not overlap with other call's arguments, too.
18458
18459 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
18460
18461         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
18462         move to arch-specific code the choice of arch-specific
18463         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
18464         * mini.c: ensure emulation calls will not interleave
18465         with other calls.
18466
18467 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
18468
18469         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
18470         the magic trampoline stack frame is dropped before executing
18471         the new method.
18472
18473 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
18474
18475         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
18476         and integer to fp conversions. Added support for overflowing
18477         arguments on the stack. Reserve a couple more registers as temps.
18478         Added support for aot compilation (as output still needs to be
18479         tweaked, though).
18480
18481 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18482
18483         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
18484         Don't overwrite return register in some corner cases.
18485
18486 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
18489         static constructors when AOT compiling.
18490
18491         * driver.c (mono_main): Call mono_check_corlib_version.
18492
18493 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18494
18495         * cpu-g4.md, basic.cs: fixed div target register.
18496
18497 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
18498
18499         * mini-ppc.c, basic.cs: shl_imm fix with test.
18500
18501 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18502
18503         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
18504         structures by value. Misc fixes.
18505         * objects.cs: more tests.
18506
18507 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
18508
18509         * mini-ppc.c: lconv.ovf.i implemented.
18510
18511 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18512
18513         * mini.c:
18514         (mini_init): don't error out if someone already called g_thread_init.
18515
18516 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
18517
18518         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
18519         to be any type per the spec. Fix abnormal memory usage when
18520         the same object is repeatedly thrown.
18521
18522 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
18523
18524         * mini.c: check for overruns in IL code.
18525
18526 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
18527
18528         * TODO: Add/remove some todo entries.
18529
18530 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
18531
18532         * driver.c (mono_main): Call mono_verify_corlib.
18533
18534 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
18535
18536         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
18537         This has been moved to mini.c
18538         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
18539         type being casted is marshalbyref it could be a proxy, so instead of
18540         emitting the type check code, emit a call to a runtime method that will
18541         perform the check by calling CanCastTo if needed.
18542
18543 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
18546         methods with large stack frames under Win32.
18547
18548 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
18549
18550         * Makefile.am: Distribute regression tests.
18551
18552         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
18553         at the end instead of inserting each variable into the sorted list.
18554
18555         * linear-scan.c (mono_varlist_sort): New helper function.
18556         
18557 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
18558
18559         * mini.c: ensure arguments and locals are within bounds.
18560
18561 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
18562
18563         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
18564         related fixes.
18565
18566 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18567
18568         * mini.c (mono_cprop_copy_values): Fix crash.
18569
18570         * aot.c: Set verbosity back to 0.
18571         
18572 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18573
18574         * regalloc.c: complete memory leak fix by Laurent Morichetti
18575         (l_m@pacbell.net).
18576
18577 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * driver.c (main_thread_handler): Revert the previous patch.
18580
18581         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
18582         under valgrind.
18583
18584         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
18585         memory from the memory pool.
18586
18587         * driver.c (main_thread_handler): Turn on all optimizations when
18588         --aot is used.
18589
18590         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
18591         an array for better performance.
18592
18593         * regalloc.c (mono_regstate_assign): Fix memory leak.
18594
18595         * debug-mini.c (mono_debug_serialize_debug_info): New function to
18596         serialize the debug info.
18597
18598         * debug-mini.c (mono_debug_add_aot_method): New function to load the
18599         debug info from the serialized representation.
18600
18601         * aot.c: Save debug info into the generated file and load it when 
18602         loading a method.
18603
18604         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
18605
18606 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18607
18608         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
18609         More FP-related fixes.
18610
18611 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
18612
18613         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
18614         and register allocation buglet. Hello world now runs.
18615
18616 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
18617
18618         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
18619         * tramp-ppc.c: fixed class init trampoline.
18620         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
18621
18622 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18623
18624         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
18625         mini.c: more ppc changes/fixes.
18626
18627 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
18630         Also optimize the case when the arguments are the same in the caller 
18631         and in the callee.
18632
18633         * iltests.il: Add tests for tail calls with valuetype arguments.
18634
18635 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18636
18637         * mini-ppc.c: fixes for struct return type.
18638
18639 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
18640
18641         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
18642         mono_spillvar_offset() to arch-specific code.
18643
18644 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
18645
18646         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
18647
18648 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
18649
18650         * exceptions-x86.c: Fix stack space leaks.
18651         
18652         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
18653         registers from the lmf if the method has save_lmf set.
18654
18655 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
18658         of icall wrappers into InvokeInDomain, since these are now per-domain.
18659
18660 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
18661
18662         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
18663         make some opcode emulation and intrinsic ops enabled/disabled 
18664         according to the architecture. More fixes.
18665
18666 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
18667
18668         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
18669
18670 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
18671
18672         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
18673         arch-specific handling for 'this' and struct return type to
18674         arch-specific code.
18675
18676 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18677
18678         * aot.c: prevent divide by zero error when reporting (it happened with
18679         Accessibility.dll).
18680
18681 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * mini.h (inst_switch): Remove unused macro.
18684
18685 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18686
18687         * aot.c:
18688         (load_aot_module): free 'info->methods' and 'info' properly. No more
18689         "free(): invalid pointer blah" messages when you have an old aot
18690         compiled assembly.
18691
18692 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
18693
18694         * jit-icalls.c, mini.c: Added support for context static fields.
18695
18696 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18697
18698         * mini.c (mono_method_blittable): Methods which set LastError are not 
18699         blittable either. Fixes #51108.
18700         
18701 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
18702
18703         * mini.c: flush icache.
18704         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
18705
18706 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18707
18708         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
18709
18710 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18711
18712         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
18713         safe on IA32.
18714
18715         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
18716         vararg calls.
18717
18718         * inssel.brg (CEE_MKREFANY): Fix AOT case.
18719
18720 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
18723         instruction when the result is discarded.
18724
18725         * iltests.il (test_0_div_regalloc): New regression test.
18726
18727         * arrays.cs: Fix compilation error.
18728
18729 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
18730
18731         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
18732         float rules to inssel-x86.brg: sane architectures with FP registers
18733         don't need to implement these rules.
18734
18735 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
18736
18737         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
18738
18739 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
18740
18741         * mini.h, inssel-long32.brg: fixed endianess issues in int64
18742         implementation of 32 bit systems.
18743
18744 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
18745
18746         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
18747         (Jeroen Zwartepoorte).
18748
18749 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18750
18751         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
18752         the caller and the callee matches.
18753         
18754         * mini.c (mono_method_to_ir): Add comment.
18755
18756         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
18757         signbit is missing on some platforms.
18758
18759 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
18762
18763         * mini.c (setup_jit_tls_data): Call the new function.
18764         
18765         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
18766
18767         * mini-x86.c: Add experimental support for fast access to the lmf
18768         structure under NPTL/Linux 2.6.x.
18769
18770 2003-11-06  Martin Baulig  <martin@ximian.com>
18771
18772         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
18773         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
18774         the debugger.
18775
18776 2003-11-02  Martin Baulig  <martin@ximian.com>
18777
18778         * mini.c (inflate_generic_field): New static method.
18779         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
18780         generic instance and the field is declared in a generic type, call
18781         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
18782
18783 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * mini.h mini.c (mono_method_same_domain): New function to return
18786         whenever the caller and the callee are in the same domain.
18787
18788         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
18789
18790 2003-10-30  Martin Baulig  <martin@ximian.com>
18791
18792         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
18793         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
18794         method parameters.
18795         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
18796         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
18797
18798 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
18801         propagation.
18802
18803         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
18804         object here, so it is in the correct appdomain etc.
18805
18806 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
18809         already done.
18810         (mono_method_to_ir): Avoid freeing the type created returned from
18811         mono_type_create_from_typespec, since it is put into an internal cache
18812         by the function. Fixes pointer.exe.
18813
18814         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
18815         trampolines for icalls and pinvokes as well. Fixes #33569.
18816
18817 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * mini.c: Update after appdomain changes.
18820
18821         * mini.c (mono_jit_compile_method_inner): Allways compile native
18822         method wrappers in the root domain, since there can only be one
18823         instance of them, whose address is stored in method->info.
18824
18825 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
18828         environment variable. Instead detect automatically whenever running
18829         under valgrind using the magic macro RUNNING_ON_VALGRIND from
18830         valgrind.h.
18831
18832 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
18833
18834         * trace.c, trace.h: New files that implement the new trace option
18835         parsing. 
18836
18837         * driver.c: Document new --trace options.
18838
18839         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
18840         mini-x86.c: Apply:
18841
18842         -       if (mono_jit_trace_calls)
18843         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
18844
18845         * mini.h: prototypes.
18846         
18847 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
18850
18851         * mini.c inssel.brg: Implement typedefbyref opcodes.
18852
18853         * mini.c (mono_jit_compile_method): Remove unused local variable.
18854
18855         * mini.c (mono_jit_compile_method_inner): Ditto.
18856         
18857 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
18858
18859         * tramp-x86.c (x86_class_init_trampoline): Fix build.
18860         
18861         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
18862
18863 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini.c (mono_no_aot): Remove unused global variable.
18866
18867         * mini.c: Thread safety fixes.
18868
18869 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18870
18871         * mini.c (mono_create_class_init_trampoline): Add a lock around
18872         class_init_hash_addr.
18873
18874         * arrays.cs (test_0_newarr_emulation): Add new regression test for
18875         #30073.
18876
18877         * mini.c: Decompose the NEWARR instruction before decomposing its
18878         arguments. Fixes #30073.
18879
18880 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
18883         convention.
18884
18885 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
18888
18889         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
18890
18891         * driver.c: Add support for compiling icall wrappers to --compile.
18892
18893 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * inssel.brg: The empty value in class->interface_offsets is -1, not
18896         0. Fixes #49287.
18897
18898 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18899
18900         * objects.cs: New test for 'is' operator on an array of interfaces.
18901
18902 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
18903
18904         * tramp-ppc.c: update trampoline code to support jumps
18905         and class initialization.
18906
18907 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18908
18909         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
18910
18911         * inssel.brg (OP_UNBOXCAST): Fix #46027.
18912
18913         * inssel.brg (OP_UNBOX): Remove unused rule.
18914
18915         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
18916         region instead of one for each method. Fixes #47813.
18917
18918 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18919
18920         * exceptions.cs (test_0_nested_finally): New regression test for
18921         nested exception handlers.
18922
18923         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
18924
18925         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
18926
18927         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
18928         inlining.
18929
18930         * mini.c (mono_method_check_inlining): Make the inlining limit 
18931         configurable by an environment variable.
18932         
18933         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
18934
18935         * mini.h: Bump AOT file version.
18936
18937         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
18938         token, store the image along with the token, since the token might not 
18939         refer to the same image as the method containing the relocation, 
18940         because of inlining.
18941
18942 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
18943
18944         * mini.c (mono_precompile_assemblies): New function to compile
18945         all methods in all loaded assemblies.
18946
18947         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
18948
18949         * regalloc.h regalloc.c (MonoRegState): Change the type of 
18950         iassign and fassign to int*, since they can contain large negative
18951         values if the register is spilled. Also added some comments. Fixes
18952         #45817.
18953
18954         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
18955         under Win32. Fixes #42964.
18956
18957 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18958
18959         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
18960
18961         * aot.c: Added support for AOT compiling methods which contain calls
18962         to wrappers. Currently, only remoting-invoke-with-check wrappers are
18963         handled.
18964         
18965         * driver.c (compile_all_methods): Run the compilation in a thread
18966         managed by mono. Fixes #44023.
18967
18968         * mini.c (mono_codegen): Print full method name in verbose output.
18969
18970         * mini-x86.c (mono_arch_patch_code): Fix warning.
18971         
18972         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
18973         jumps, since the method we are jumping to might be domain-specific.
18974
18975         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
18976
18977 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
18978
18979         * inssel.brg: string chars are unsigned.
18980
18981 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18982
18983         * TODO: New todo item.
18984
18985         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
18986         which calls mono_runtime_class_init and patches the call site to
18987         avoid further calls.
18988         (mono_arch_create_class_init_trampoline): New arch specific function 
18989         to create a class init trampoline.
18990         (create_trampoline_code): Generalized so it can create
18991         class init trampolines as well.
18992
18993         * mini.c (helper_sig_class_init_trampoline): New helper variable.
18994         (mono_create_class_init_trampoline): New function to create and cache
18995         class init trampolines.
18996         (mono_find_class_init_trampoline_by_addr): New function to lookup the
18997         vtable given the address of a class init trampoline. Used by the
18998         patching process.
18999         (mono_codegen): Generate a call to a trampoline instead of
19000         mono_runtime_class_init in LDSFLD[A].
19001         (mono_codegen): Add relocations for the new trampoline.
19002         
19003         * mini.h mini-x86.c aot.c: Added a new relocation type: 
19004         MONO_PATCH_INFO_CLASS_INIT.
19005
19006         * mini.h: Bump AOT version number.
19007
19008         * aot.c: Create a copy of the loaded code instead of using the original
19009         so methods which call each other will be close in memory, improving
19010         cache behaviour.
19011         
19012         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
19013         patch since it breaks the regression tests.
19014         
19015         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
19016         for the register saving instruction sequence since the 
19017         frame_state_for function in glibc 2.3.2 don't seem to detect it.
19018
19019 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * TODO: Fix todo item && remove another.
19022
19023 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
19024
19025         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
19026         previous checkin.
19027
19028         * aot.c: Moved the check for MONO_LASTAOT into the initialization
19029         function of the module.
19030
19031         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
19032         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
19033         --no-aot command line option.
19034
19035 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
19038         by Bernie Solomon (bernard@ugsolutions.com).
19039
19040         * inssel.brg: Refactor the interface offset table related code into
19041         its separate functions and add support for the AOT case.
19042
19043 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19044
19045         * aot.c (mono_aot_get_method_inner): Fix memory leak.
19046         
19047         * aot.c: Added mono_aot_verbose variable and made all debugging
19048         output depend on the value of this variable.
19049
19050         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
19051         method_label and info_label.
19052
19053         * mini.h mini-x86.c aot.c: Added a new relocation type 
19054         MONO_PATCH_INFO_IID for klass->interface_id.
19055
19056         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
19057         the MonoJitInfo structure.
19058
19059         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
19060         a non-root appdomain in shared mode.
19061
19062 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19063
19064         * aot.c: make aot loader less verbose. Remove free of unused variable.
19065
19066 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
19069
19070         * .cvsignore: Added *.dll.
19071
19072         * mini.c (mono_print_tree_nl): New function callable while debugging.
19073
19074         * mini.c (mono_print_code): Export this.
19075
19076         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
19077         patched code.
19078
19079 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
19080
19081         * mini.h (MonoCompile): Added 'jit_info' field.
19082
19083         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
19084         the cfg structure, since it is needed by the AOT compiler.
19085
19086         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
19087
19088         * aot.c: A major rewrite. Changes include:
19089         - save exception tables for methods which have them.
19090         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
19091         to g_module_symbol.
19092         - reworked the file format so it is now much smaller and needs
19093         fewer relocation entries.
19094         
19095 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19096
19097         * aot.c (load_aot_module): Fix build bustage on platforms without
19098         Boehm GC.
19099
19100 2003-09-04  Martin Baulig  <martin@ximian.com>
19101
19102         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
19103
19104 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19105
19106         * TODO: Some new optimization ideas.
19107
19108         * aot.c: Move AOT module loading logic here from mono_assembly_open.
19109
19110         * aot.c: Save the optimization flags used to compile the code into
19111         the AOT module.
19112
19113         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
19114         support emitting domain specific code.
19115         
19116         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
19117         no longer domain neutral. It can be made domain neutral by compiling 
19118         with --optimize=shared.
19119
19120         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
19121         between appdomains.
19122
19123         * driver.c mini.h mini.c: New --no-aot debugging option which disables
19124         loading of AOT code.
19125
19126         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
19127         
19128         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
19129         if there is no domain neutrality information.
19130
19131 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19132
19133         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
19134         format version into the generated library.
19135
19136         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
19137         callee method into the caller since one of them could be shared.
19138
19139         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
19140         system exceptions from AOT code now works.
19141
19142         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
19143         method if it is domain neutral and the callee is not.
19144
19145         * graph.c (cfg_emit_one_loop_level): Fix warning.
19146
19147 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
19150         last checkin.
19151
19152 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
19155         is needed  by code which is executed before mono_runtime_init ().
19156         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
19157         
19158         * mini.c (mono_thread_abort): Fix warning.
19159         (mono_jit_compile_method): Call static constructor in the AOT case too.
19160
19161         * aot.c (mono_compile_assembly): Fix warning.
19162
19163 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19164
19165         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
19166
19167 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
19168
19169         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
19170
19171         * cpu-pentium.md: Fix the length of call opcodes so they include the
19172         ESP restoring instruction. Fixes #47968.
19173
19174 2003-08-28  Martin Baulig  <martin@ximian.com>
19175
19176         * mini-x86.c (mono_arch_call_opcode): Added support for
19177         MONO_TYPE_GENERICINST.
19178
19179         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
19180
19181 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19182
19183         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
19184         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
19185
19186         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
19187         metadata_section.
19188
19189 2003-08-26  Martin Baulig  <martin@ximian.com>
19190
19191         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
19192         when reporting an error, set this to the actual error location.
19193         (mono_method_to_ir): Report the correct error location if
19194         get_basic_blocks() returned an error.
19195
19196 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * mini.c (mono_type_blittable): OBJECT is not blittable.
19199         (mono_method_blittable): Methods which have marshalling descriptors
19200         are not blittable either. Fixes #47842.
19201
19202 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
19203
19204         * driver.c mini.c: Use an environment variable instead of a global 
19205         variable. Also fix the build.
19206
19207         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
19208         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
19209         reporting this. 
19210
19211         * driver.c mini.c: Added --with-valgrind option to turn off some
19212         code which prevents mono from running under valgrind.
19213
19214         * mini.c (mono_emit_call_args): Fixed warning.
19215
19216         * mini.c (mono_emulate_opcode): Fixed warning.
19217
19218 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19219
19220         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
19221         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
19222         regalloc.c, regalloc.h: specify available registers in arch-specific
19223         code and support floats in the regallocator (patch by Laurent Morichetti 
19224         <l_m@pacbell.net>)
19225
19226 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19227
19228         * mini.c: mono_thread_current() can be called only after
19229         mono_runtime_init(): rearrange code to not call it early on.
19230
19231 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19232
19233         * mini.c: allocate jump tables in the code mempools.
19234
19235 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19236
19237         * mini.c, mini.h: make sure per-thread data allocated by the jit is
19238         freed.
19239
19240 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
19241
19242         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
19243         12 to 16.  This fixes bug #47453.
19244
19245
19246 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19247
19248         * mini-ppc.c: fixed indexed load and unsigned compares.
19249
19250 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
19251
19252         * mini.c: reenabled installation of handler for
19253           thread abort signal.
19254
19255 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19256
19257         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
19258         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
19259         until it's fixed and actually useful.
19260
19261 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19262
19263         * inssel-long32.brg: couple more opcodes implemented.
19264
19265 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19266         
19267         * mini-sparc.c: Even more opcodes implemeted.
19268
19269 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
19270
19271         * mini-sparc.c: More opcodes implemented.
19272
19273 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
19274
19275         * mini-sparc.c: More opcodes implemented.
19276
19277 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
19278
19279         * inssel-sparc.brg: Add some needed rules.  Direct
19280         copy from PPC.
19281         * Makefile.am: Use inssel-sparc.brg
19282         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
19283         an assert happy for now.
19284
19285 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
19286
19287         * mini-sparc.c: Fixed compile errors.
19288         * exceptions-sparc.c: Same.  We now produce a mono binary 
19289         on sparc-linux.  Yea.
19290
19291 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
19292
19293         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
19294         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
19295         They compile, but do not work.
19296
19297 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19298
19299         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
19300         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
19301         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
19302         (ct@gentoo.org).
19303
19304 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19305
19306         * mini.c: more opcodes implemented and better support for generics.
19307
19308 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19309
19310         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
19311         * mini.c, mini.h: first cut at generics support: some new instructions 
19312         added and changed the behaviour of some of the existing ones.
19313
19314 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19315
19316         * mini.c: Removed definition of metadata_shared mutex here.
19317
19318 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19319
19320         * mini-x86.c: make vararg calls work for instance methods.
19321
19322 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19323
19324         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
19325         returns the arguments in a separte list, now.
19326
19327 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19328
19329         * aot.c, mini.c: updates for array type representation changes.
19330
19331 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
19332
19333         * mini.c: register function to perform jit shutdown.
19334
19335 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19336
19337         * mini.c: use a faster allocator if possible.
19338
19339 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19340
19341         * aot.c: some cleanups and portability changes.
19342
19343 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19344
19345         * mini.c: use faster allocation for CEE_BOX if possible.
19346
19347 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19348
19349         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
19350         Moved inlined mempcy code to its own function so that is can be
19351         reused. Added an inline memset function as well (optimized initobj).
19352         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
19353
19354 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19355
19356         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
19357
19358 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19359
19360         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
19361         arch code can setup the cpu for CLR execution, if needed.
19362         We use it on x86 to set the precision of FP operations.
19363
19364 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19365
19366         * mini.c: disable some optimizations if we can guess they'll cost too
19367         much for a given method.
19368
19369 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
19372         
19373 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19374         * mini.h mini.c mini-x86.c: Added instruction level coverage 
19375         info collection support.
19376
19377 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19378
19379         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
19380         is now implemented in the profiling API. Get rid of a couple of
19381         unnecessary global variables.
19382
19383 2003-06-15  Nick Drochak <ndrochak@gol.com>
19384
19385         * basic-long.cs: tests for negative values for bigmul, and unsigned.
19386         * cpu-g4.md: add op_bigmul and op_bigmul_un
19387         * cpu_pentium.md: add op_bigmul_un
19388         * inssel-long32.brg: add rule for unsigned bigmul
19389         * mini-ops.h: define OP_BIGMUL_UN
19390         * mini-x86.c: THE BUG: handle (un)signed properly
19391         * mini.c: choose unsigned opcode if needed.
19392         This set of patches fixes bug #44291
19393
19394 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
19395
19396         * mini.c (optimize_branches): improved to handle all kinds of
19397         conditional branches.
19398
19399 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19400
19401         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
19402         don't raise exceptions.
19403
19404 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19405
19406         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
19407         to arch-specific files.
19408
19409 2003-06-09  Martin Baulig  <martin@ximian.com>
19410
19411         * Makefile.am (libs): Added $(LIBGC_LIBS).
19412
19413 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
19414
19415         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
19416         and OP_ATAN (fixes bug#44293).
19417
19418 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
19419
19420         * Makefile.am, mini-x86.c: rename cpu description array to
19421         pentium_desc, since some compilers define the 'pentium' preprocessor
19422         symbol.
19423
19424 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
19425
19426         * mini.c (mini_select_instructions): add explicit branch if the
19427         following block is not the false target of a conditional branch -
19428         we need this with any optimization that reorder or remove bblocks
19429
19430         * mini.c (optimize_branches): bug fixes
19431
19432 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
19433
19434         * mini.c (mono_method_to_ir): inline static readonly fields
19435
19436         * ssa.c (fold_tree): start cfold support for long (very simple
19437         cases only)
19438
19439         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
19440
19441 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19442
19443         * inssel.brg: fixed memcpy (bug #44219).
19444
19445 2003-06-05  Dick Porter  <dick@ximian.com>
19446
19447         * driver.c: Set the glib log levels to not abort if g_message
19448         recurses.
19449
19450         g_set_prgname() has to happen before mini_init() so that the
19451         process handle gets the info.
19452         
19453 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19454
19455         * driver.c: add intrins to the default optimizations to get wider
19456         exposure.
19457
19458 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19459
19460         * mini.h: some large basic blocks will overflow a 16-bit
19461         integers for symbolic registers.
19462
19463 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19464
19465         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
19466         (mono_arch_output_basic_block): fix bug 43499 
19467
19468 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19469
19470         * mini.c: kill duplicated definition of mono_debug_format.
19471
19472 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19473
19474         * mini-x86.c, arrays.cs: fixed register allocation bug.
19475
19476 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19477
19478         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
19479
19480         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
19481
19482 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19483
19484         * mini.c:
19485         (print_method_from_ip): also print source location information if
19486         available.
19487
19488 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
19489
19490         * mini.c (mono_find_block_region): bug fix in region code
19491         (mini_method_compile): enable removing unreachable code again, but
19492         only in methods without exception clauses.
19493
19494 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
19495
19496         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
19497         Implemented arglist opcode and handling of TypedReference type.
19498         Fixed x86 call convention when a structure is returned.
19499         Minimal support for calling static vararg methods.
19500
19501 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
19502
19503         * mini.c (mini_method_compile):  always remove unreachable code,
19504         because the code in them may be inconsistent  (access to dead
19505         variables for example).
19506
19507 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19508
19509         * driver.c, debug-mini.c: warning fixes.
19510
19511 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19512
19513         * Makefile.am, jit.h, mini.h: install header for embedding mono.
19514
19515 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
19516
19517         * mini.c: thread-static fields are registered in mono_class_vtable(),
19518         so ensure the function is called before checking for them.
19519
19520 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
19521
19522         * mini.c (optimize_branches): fix for bug 43586
19523
19524         * jit-icalls.c (mono_llmult_ovf): added an additional check for
19525         overflow (fixes Bug #43639)
19526
19527 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19528
19529         * mini.c, objects.cs: allow the use of stobj for primitive types.
19530
19531 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19532
19533         * mini.c: be less strict about argument checking until we support
19534         running the verifier.
19535
19536 2003-05-27  Nick Drochak <ndrochak@gol.com>
19537
19538         * basic-long.cs: tests for (ulong)int * (ulong)int also
19539         * mini.c: use the same trick for (ulong)int * (ulong)int
19540
19541 2003-05-27  Nick Drochak <ndrochak@gol.com>
19542
19543         * basic-long.cs: add regression test for (long)int * (long)int
19544         * cpu-pentium.md: add op_bigmul specification
19545         * inssel-long32.brg: add OP_BIGMUL rule
19546         * mini-ops.h: add OP_BIGMUL
19547         * mini-x86.c: register allocator: handle case where src1 needs to be
19548         in EAX.
19549         * mini.c: substitute special BIGMUL opcode in the tree for 
19550         (long)int * (long)int
19551
19552 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19553
19554         * jit-icalls.c: call the type ctor on field access if needed.
19555
19556 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19557
19558         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
19559         to a method (including results of ldelema, bug#43207).
19560
19561 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19562
19563         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
19564         colors to show exception handler blocks.
19565
19566         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
19567         (fix for pinvoke7.cs).
19568
19569 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19570
19571         * mini.h, mini.c: ensure correct initialization order for types that
19572         require it. Prepare for lazy compilation of jit icall wrappers.
19573         Provide a name for opcode emulation to reduce unneeded mallocing.
19574
19575 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19576
19577         * mini-x86.c: better register restoring code and profiling
19578         support for tail calls.
19579
19580 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19581
19582         * mini.h, driver.c: prepare for leaf methods optimization.
19583
19584 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19585
19586         * mini.c: get targets of branches before converting a method.
19587
19588 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
19589
19590         * mini.c (optimize_branches): added some experimental code (disbaled) 
19591
19592 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
19593
19594         * mini.c (optimize_branches): fix branch to branch optimization 
19595
19596         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
19597
19598         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
19599
19600         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
19601
19602         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
19603         if needed.
19604
19605 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19606
19607         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
19608         enable use of interface variables again.
19609
19610         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
19611         I1 to registers because there is no simply way to sign extend 8bit
19612         quantities in caller saved registers on x86.
19613
19614         * inssel-float.brg: set costs of some rules to 2 so
19615         that monobure always select the arch. specific ones if supplied,
19616         regardless of the order we pass the files to monoburg.
19617
19618 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19619
19620         * mini.c, mini-x86.c: since the magic trampoline for jumps
19621         can't patch the code directly, we do it as soon as the
19622         method gets compiled.
19623
19624 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19625
19626         * mini-x86.c, mini.h: introduce a new patching method
19627         to support CEE_JMP and tail calls.
19628         * mini.c: obey tail.call. Don't precompile methods target
19629         of CEE_JMP.
19630         * tramp-x86.c: new trampoline code to handle methods
19631         reached through a jump.
19632
19633 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
19634
19635         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
19636         bit values to registers
19637
19638 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
19639
19640         * mini.c (mono_compile_get_interface_var): share interface
19641         variables if possible.
19642
19643 2003-05-16  Martin Baulig  <martin@ximian.com>
19644
19645         * debug-mini.c (mono_init_debugger): New function to initialize
19646         the debugger.  This is not in the debugger since it needs to
19647         access some of mini's internals.
19648
19649 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19650
19651         * mini.c (mono_method_to_ir): inlining fixes/cleanups
19652
19653 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
19654
19655         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
19656         for value type handling.
19657
19658 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
19659
19660         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
19661         (mono_method_check_inlining): enable inlining of all kinds of wrappers
19662
19663 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
19664
19665         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
19666           the constructor through a proxy.
19667
19668 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19669
19670         * jit-icalls.c, inssel.brg: fixes to array element address
19671         calculations.
19672
19673 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
19674
19675         * mini-x86.c (is_regsize_var): allocate pointer to registers
19676
19677 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19678
19679         * driver.c: fixed typo, added intrins to the set of optimizations
19680         tested with regressions.
19681
19682 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19683
19684         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
19685         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
19686         test case.
19687
19688 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
19689
19690         * inssel.brg: remove some common pop instructions without side effects
19691
19692 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19693
19694         * inssel-x86.brg: fixed thinko in int to double conversions.
19695
19696 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19697
19698         * mini.c, jit-icalls.c: added runtime thread-static variable support.
19699
19700 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19701
19702         * inssel-long32.brg: two more missing instructions.
19703
19704 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19705
19706         * mini.c (mono_emit_call_args): set the cil_code for all arguments
19707         if not already set.
19708
19709 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
19712         correctly.
19713
19714         * basic-float.cs: Added tests for negative zero.
19715
19716 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19717
19718         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
19719         a couple of missing operations for long casts, with test cases.
19720
19721 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19722
19723         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
19724
19725 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
19726
19727         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
19728         code size estimation.
19729
19730 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19731
19732         * mini.c (mono_jit_create_remoting_trampoline): make it work with
19733         abstract methods (fix bug 42542)
19734
19735         * aot.c: add ability to handle array types
19736         
19737 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * mini.c: Call the _specific versions of the object allocation
19740         functions if possible.
19741
19742 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
19743
19744         * driver.c: call setlocale ().
19745
19746 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19747
19748         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
19749         windows build.
19750
19751 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19752
19753         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
19754
19755         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
19756         wrappers (fix bug 42122)
19757
19758 2003-05-04  Martin Baulig  <martin@ximian.com>
19759
19760         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
19761
19762         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
19763         s/mini_set_defaults/mono_set_defaults/g.
19764
19765 2003-05-04  Martin Baulig  <martin@ximian.com>
19766
19767         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
19768
19769 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19770
19771         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
19772         (reported by Don Roberts).
19773
19774 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
19775
19776         * mini.c: temporarily work around two bugs for this release.
19777
19778 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19779
19780         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
19781         that contains -export-dynamic and it makes using the ld script
19782         useless.
19783         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
19784
19785 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19786
19787         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
19788         specific cpu.
19789
19790 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19791
19792         * mini.c: make sure leave calls all the needed finally blocks,
19793         even when the target jumps out of multiple exception clauses.
19794
19795 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19796
19797         * ldscript, Makefile.am: add linker script to reduce the number of
19798         exported symbols (should also fix the issues with libwine defining
19799         some of the same symbols in io-layer).
19800
19801 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * driver.c (mini_main): Avoid assertion when no file name is given on 
19804         the command line.
19805
19806 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
19807
19808         * driver.c: added --version/-V command line option.
19809         Added the inline optimization in the regression tests.
19810
19811 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19812
19813         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
19814         to the type in the method signature (fixes bug#42134).
19815
19816 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
19817
19818         * mini.c: when inlining, check this is not null only when needed (bug #42135).
19819
19820 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
19821
19822         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
19823
19824 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19825
19826         * driver.c: fixed bug #42100.
19827
19828 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19829
19830         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
19831
19832 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19833
19834         * mini.c: moved most of the code required to do inlining to its own
19835         function so it can be reused. Inline also ctors if appropriate.
19836
19837 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * Makefile.am: Link with -export-dynamic so shared libs loaded by
19840         the runtime can call mono API functions.
19841
19842 2003-04-27  Martin Baulig  <martin@ximian.com>
19843
19844         * debug-mini.c (mono_debug_init_method): Added
19845         `guint32 breakpoint_id' argument; if the method has a breakpoint,
19846         send a notification to the debugger.
19847
19848         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
19849         running in the Mono Debugger, just pass the breakpoint number to
19850         mono_debug_init_method().
19851
19852         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
19853
19854 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
19855
19856         * mini.c: allow some more unsafe compares.
19857
19858 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19859
19860         * mini-x86.c, Makefile.am: make distcheck works (partially from
19861         a patch by Richard Lee <r.h.lee@attbi.com>).
19862         * regset.c, regset.h: removed, they are unused.
19863
19864 2003-04-25  Dick Porter  <dick@ximian.com>
19865
19866         * driver.c: Usage reports the name as 'mono' not 'mini'
19867         * exceptions-x86.c: Build and run on freebsd
19868
19869 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19870
19871         * Makefile.am: install the program with the 'mono' name and
19872         the library as libmono instead of mini and libmini.
19873
19874 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19875
19876         * driver.c: provide the APIs for the embedding interface of the old jit.
19877
19878 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
19879
19880         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
19881
19882 2003-04-23  Martin Baulig  <martin@ximian.com>
19883
19884         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
19885
19886         * driver.c: Added `--debug' command line argument to enable
19887         debugging support.
19888
19889 2003-04-23  Martin Baulig  <martin@ximian.com>
19890
19891         * debug.[ch]: Removed.  The code is now in
19892         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
19893
19894         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
19895         last six months.
19896
19897 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19898
19899         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
19900
19901 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19902
19903         * mini.c:
19904         (mini_cleanup): moved mono_runtime_cleanup call after the call to
19905         mono_domain_finalize.
19906         (mini_method_compile): use mono_method_profile* if the the option is
19907         enabled.
19908
19909 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19912         methods with their wrapper.
19913
19914         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
19915         methods with their wrapper.
19916
19917         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
19918         their wrapper.
19919
19920         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
19921         wrapper.
19922
19923         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
19924         methods.
19925
19926 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
19927
19928         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
19929
19930 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
19931
19932         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
19933         of the mempool. This is slightly faster and uses less memory
19934
19935 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19936
19937         * mini.c: avoid O(n) allocation for variables.
19938
19939 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19940
19941         * mini.c: handle items on the stack after inlining methods.
19942
19943 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19944
19945         * mini.c: make the method->opcode optimization dependent
19946         on MONO_OPT_INSTRINS and do it lazily.
19947
19948 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19949
19950         * driver.c: print overall results at the end of regression run.
19951
19952 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19953
19954         * inssel.brg: don't overwrite symbolic registers.
19955
19956 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19957
19958         * inssel-x86.brg: fix conversion from long to float.
19959
19960 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
19961
19962         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
19963
19964 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
19967
19968         * driver.c: Added --print-vtable option as in the old JIT.
19969
19970 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19971
19972         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
19973
19974 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19975
19976         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
19977
19978 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19979
19980         * mini.c regalloc.c regalloc.h: Fix memory leak.
19981
19982 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
19983
19984         * aot.c (mono_aot_get_method): register all used strings
19985
19986 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
19987
19988         * mini.c: always intern strings references with ldstr at compile time.
19989
19990 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19991
19992         * Makefile.am: add BUILT_SOURCES.
19993
19994 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
19995
19996         * driver.c: give a better error message when the assembly to execute
19997         doesn't have an entry point.
19998
19999 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
20000
20001         * Makefile.am: added hack for automake
20002
20003         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
20004         correct sematics.
20005
20006         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
20007
20008 22003-04-07  Martin Baulig  <martin@ximian.com>
20009
20010         * Makefile.am: Added Makefile.am.
20011
20012         * debugger-main.c: Removed, this is now in the debugger where it
20013         belongs.
20014
20015         * mini.pc.in: Call this package `mini' for the moment.
20016
20017
20018
20019
20020
20021
20022
20023
20024
20025
20026
20027
20028
20029
20030